선린 고등해커 - PPP

c++코드이지만, 대충 읽어보자면, 10번째 줄에 "You can exploit?"을 출력하고
113이 'q'의 아스키코드이니 q가 입력받을때까지 입력을 받는다는것을 볼 수 있다.

4번째 줄에서 보면 알겠지만, 1024만큼 입력받아 v5에 넣는데 이는 v5의 크기에 비해 터무니 없이 크다.
그래서 버퍼오버플로우가 발생될 수 있다. ROP를 할 수 있다는 뜻이기도 하다.
v5가 0x30까지니까 0x30 + sfp 겠다.

setvbuf를 leak하고 main으로 다시 돌린 뒤, libc_base를 구하면 되고
그 후 셸을 따면 되겠다. 원샷가젯으로 말이다!




Comments

Popular Posts