node.js 설치해보자
·
Web/node.js
node.js는 javascript언어를 기반으로하고 php에 이어서 많은 사람들이 사용하고있는데요 한번에 프론트엔드와 백엔드를 같이 개발할수있다는점이 큰 메리트같습니다 먼저 https://nodejs.org/ko/ Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 위 주소로 접속해서 19.07.20일 기준으로 10.16.0 LTS버전과 12.6.0 버전이있습니다 둘중 무엇을 설치해도 무관하지만 저는 10.16.0 LTS버전을 받아보겠습니다. 설치파일을 다운받고 그냥 쭉쭉 Next버튼을 클릭해주시면 설치가 완료됩니다 설치가 완료되면 명령프롬프트창을 실행시켜서 node --version을 입력..
wargame.kr 1번 already got write-up
·
Wargame/Webhacking.kr
already got 문제이다. http reponse header를 볼수있냐고 물어본다start버튼을 눌러서 시작해보자http response header를 보는방법을 구글링해본결과 f12를 눌러서개발자도구로 들어간다음 NetWork탭에서 확인해볼수있다.처음에는 아무것도 안뜰텐데 f5를 눌러서 새로고침해주면 정상적으로 나올것이다header탭에서 FLAG를 확인해 볼 수 있다.
파이썬 나만의 지니뮤직 차트순위 크롤링하기 #3 마지막
·
Coding/Crawling
지니뮤직 크롤러 만들기 세 번째 저번에 차트 순위 1위만 출력되는 것과 앞에 공백이 너무 많다는 점이 문제였다 한번 해결해보자 import requests from bs4 import BeautifulSoup headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'} url = 'https://www.genie.co.kr/chart/top200' resp = requests.get(url, headers = headers) soup = BeautifulSoup(resp.text, 'html.parser') so..
파이썬 나만의 지니뮤직 차트순위 크롤링하기 #2
·
Coding/Crawling
지니뮤직 크롤러 만들기 먼저 구글에서 삽질하면서 코드를 짜보았다 import requests from bs4 import BeautifulSoup headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'} url = 'https://www.genie.co.kr/chart/top200' resp = requests.get(url, headers = headers) soup = BeautifulSoup(resp.text, 'html.parser') song = soup.find("a",{"class":"title ..
파이썬 나만의 지니뮤직 차트순위 크롤링하기 #1
·
Coding/Crawling
파이썬 크롤링을 배워서 뮤직차트 순위를 크롤링해보자 한다. 먼저 크롤링에 필요한 Beautifulsoup을 다운해야 한다. pip install beautifulsoup4 명령어로 쉽게 다운받을수있다. from urllib.request import urlopen from bs4 import BeautifulSoup html = urlopen("https://www.naver.com/") bs = BeautifulSoup(html, "html.parser") print(bs) 먼저 위의 코드를 써서 네이버메인을 크롤링해보면 이렇게 html코드들을 볼수있다 사실은 훨씬 긴데 내가 알아서 잘랏다 이제 여기서 내가 원하는 정보들만 골라서 크롤링을하면 나만의 웹크롤러를 만들수있다.
Crackme #4 writeup
·
Reversing
크랙미 4번 파일을 실행해보면 시리얼값을 찾아서 Registered를 눌러주면 될거같다 바로 올리디버거로 실행시켜봤다.올리디버거로 실행시킨 모습이다 일단 시리얼값을 비교해야 하기때문에 문자열 비교함수를 찾아본다 바로 vbastrcmp 함수가 보인다 저기다가 브레이크포인트를 설정하고 실행시켜보니 이렇게 바로 ECX에 시리얼값으로 보이는 숫자가 있다 바로 입력해주니 쉽게 풀린다 추가) 너무쉽게 풀려서 구글링을해보았더니 시간에 따라서 시리얼값이 달라진다고한다 GetPresentDate함수를 통해서 시간을 얻어낸다음에곱하고 더하는 연산을 통해서 시리얼값을 만든다고한다
Crackme#3 writeup
·
Reversing
일단 프로그램을 실행시키면 키파일이있는지 찾아본다하고 파일을 못찾았다고 나옵니다 올리디버거로 열어서 한번 보겠습니다일단 눈에띄는건 하단의 키파일을 찾았다는 메세지박스 호출함수랑 중간에 CreateFile함수가 눈에띄는데Createfile함수를 잘 살펴보면 답이나올꺼같은 예감구글링을 통해서 Createfile 함수에대해서 찾아본결과 CreateFile함수에 mode값이 OPEN_EXISTING으로 설정되어있는걸 확인할수있었는데 이 옵션은 파일또는 장치가 있는 경우에만 연다고한다우리는 키파일이없으니까 위에있는 CREATE_ALWAYS로 설정해야하는데 그러기위해선 여기 PUSH 3이라고 되어있는 값을 CREATE_ALWAYS값인 2로 바꾸어주면 될듯하다 이렇게 바꾸어 주고 실행해주면유효한 키파일이 아니라네다시..
버퍼 오버플로우(BOF) 정리
·
System Hacking
버퍼 오버플로우란 버퍼는 데이터가 일시적으로 저장돠는 임시 저장공간이라고한다. 오버플로우란 데이터가 버퍼의 용량보다 커서 메모리공간을 벗어나는 경우 따라서 버퍼 오버플로우란 버퍼의 용량보다 큰데이터를 오버플로우시켜서 공격하는 기법이다 pwnable.kr의 bof문제를 예로 설명하자면 위의 c언어 코드를보면 main함수에서 func를 호출하는데 인자로 0xdeadbeef라는 값을 넘겨주고있고 func함수에서는 overflowme라는 배열의 크기를 32만큼 정의하고있습니다. 그리고이제 gets함수를 이용해서 overflowme배열에 사용자의 입력을 받고있습니다. 여기서 버퍼오버플로우 공격이 가능합니다. 메모리 영역을 보자면 여기서 gets함수를 통해서 사용자의 입력을 받을때에 overflowme라는 버퍼의 ..
써니나타스 14번 write up
·
Wargame/써니나타스
써니나타스 포렌식 14번 문제이다sunninatas의 비밀번호를 아냐고 물어보는데 일단다운로드파일을 받아보자파일을 받고 압축을풀면 passwd파일과 shadow파일이 나오는데 passwd이랑 shadow파일내용을 확인해보면맨아래 suninatas사용자의 정보가 보인다 passwd에서는 사용자정보를 ' : ' 로 구분하는데 suninatas:x:1001:1001::/home/suninatas:/bin/sh 1 2 3 4 5 6 7 이렇게 7개파트로 나눌수있다 1 - 사용자 이름2 - 비밀번호3 - 사용자ID4 - 그룹ID5 - Comment6 - 홈디렉토리7 - 기본 쉘 종류 여기서 비밀번호가 암호화되어있으면 x로 표시된다고 한다암호화된 비밀번호는 shadow파일에서 볼수있으니 shadow파일을 열어보자여..
어셈블리 mov와 lea의 차이점
·
Reversing
이번에 pwnable.kr의 bof문제를 풀어보면서 lea명령어를 처음접했는데 구글링하다보니까 mov와 lea의 차이점을 알게되서 메모하는겸 써본다 일단 mov나 lea나 값을 넣어준다는점에서 같은 명령어인데mov는 값을 전달해주고 lea는 주소를 전달해준다는점이다예를 들어보면 ebp=0x12345*ebp=100이라고 가정한후 mov eax, dword ptr ds:[ebp]는 eax에 100이라는 값이 들어가고lea eax, dword ptr ds:[ebp]를 하게될경우 eax에 0x12345주소가 들어가게된다
Junyoung.dev
Junyoung.dev