Wargame & CTF/Pwnable
[HackCTF] Simple_Overflow_ver_2 (150) write-up
m3r0n4
2020. 8. 11. 00:12
문제의 바이너리 파일을 Hex-Ray로 보면 위와 같다. 이 문제에는 보호기법이 적용되어 있지 않으므로 shellcode를 사용가능 하다.
Data를 scanf로 s에 받아오고, s의 주솟값과 s에 어떤 값이 있는지 보여준 뒤 이걸 반복한다.
프로그램을 실행한 후 프로그램이 돌아가는 동안은 s의 주소가 일정할 것이다. 그러므로 시나리오를 작성해 보면
1. 먼저 데이터에 아무 값이나 집어 넣어 s의 주솟값을 알아낸다.
2. shellcode를 이용해 버퍼 오버플로우를 하고, ret에 buf의 주소를 넣어준다.
이렇게 되겠다.
익스플로잇 코드는
Shellcode(25) + Dummy(0x88 - 25) + SFP(4) + RET(buf_addr)
이 되겠다. 이를 바탕으로 파이썬 코드를 작성해 보면 아래와 같다.
실행해 보면,
플래그를 읽어올 수 있게 된다 ~_~