-
Stack4 풀이System hacking training/Protostar 2018. 2. 4. 20:59
[문제]
이전문제와는 다르게 함수 포인터가 없다.
하지만 여전히 gets() 사용으로 인해 bof 취약점이 존재한다.
ret 을 win()의 주소로 변조시키면 win()가 실행될것이다.
[풀이]
gdb로 열어보면 main()에서 80바이트의 공간을 할당한 것을 알 수 있다.
따라서 SFP와 buffer[64] 사이의 dummy가 들어가는지 체크할 필요가 있다.
예상한 스택 구조는 이러하다.
| char buffer[64] | dummy | SFP | RET |
따라서 buffer와 dummy, sfp를 A로 모두 덮고 마지막에 win()의 주소를 넣어줬다.
반응형