cat assassin.c
argv[1][47]이 \xbf, \x40이면 안된다. 즉, 스택의 주소도 공유라이브러리 주소도 쓰지 못한다.
사실 어떻게 해야할지 감이 안와서 찾아보니 ret명령어를 통해 4byte 증가하는 esp를 이용하여 푸는 거 같다. 이걸 RET sled라고 하길레 좀 더 찾아보았다. 즉 RET에 RET주소를 덮으면 esp가 4byte 더 증가하면서 스택상의 위치가 올라간다. 이렇게 내가 원하는 위치에 함수 주소를 넣을 수 있다.
그렇다면 ret주소에 ret를 덮고 system함수를 부르고 더미 4byte넣고 /bin/sh주소 넣으면 될 것이다.
ret 주소 : 0x804851e
system 주소 : 0x40058ae0
/bin/sh 주소 : 0x400fbff9
'LOB' 카테고리의 다른 글
LOB 17번( zombie_assassin → succubus ) (0) | 2016.11.14 |
---|---|
LOB 16번 ( assassin → zombie_assassin ) (0) | 2016.11.14 |
LOB 14번 (bugbear → giant) (0) | 2016.10.13 |
LOB 13번 (darkknight → bugbear) (0) | 2016.10.13 |
LOB 12번 (golem → darknight) (0) | 2016.10.06 |