pwnable 9번 문제인 BOF_PIE 이다.
보아하니 매번 실행할 때마다 출력해주는 주소의 위치는 바뀌고, 우리한테 무언가 값을 입력받는다.
32bit elf 파일, NX-bit와 PIE가 걸려있다.
main문에서는 welcome 함수를 실행 후 Nah를 출력한다.
welcome 함수에서는 welcome의 주소를 출력하고, v1에 scanf로 입력을 받는다.
그리고 함수들 중 j0n9hyun이라는 함수가 있는데, 보아하니 flag를 출력해주는 함수이다.
PIE가 걸려있는것을 고려해보았을 때, 매 함수는 실행 할때마다 주소가 바뀌지만, 각 함수들의 offset은 동일할 것이다.
우리는 프로그램을 실행하면서 welcome의 주소를 알 수 있다.
따라서 현재 바이너리에서 j0n9hyun의 주소가 welcome의 주소로부터 얼마나 차이가 나는지를 통해 offset 크기를 알 수 있다.
0x909 - 0x890 = 0x79, 즉 offset 크기는 0x79이다.
자 그러면 우리가 입력을 받는 v1은 ebp-12h에 있으니, v1(18) + sfp(4) = 22, 22개의 더미데이터를 입력하고, 주어진 welcome 함수 - 0x79를 한 값을 ret에 써주면 j0n9hyun이 실행될 것이다.
익스코드를 짜보자.
성공적으로 익스플로잇이 된다.
'HackCTF > Pwnable' 카테고리의 다른 글
[HackCTF] Pwnable - Offset (0) | 2020.07.27 |
---|---|
[HackCTF] Pwnable - Simple_Overflow_ver_2 (0) | 2020.07.09 |
[HackCTF] Pwnable - x64 Simple_size_BOF (0) | 2020.07.08 |
[HackCTF] Pwnable - x64 Buffer Overflow (0) | 2020.07.08 |
[HackCTF] Pwnable - 내 버퍼가 흘러넘친다!!! (1) | 2020.07.07 |