Practical Numerology
Abstract
- Category : web
- Language : php
- Type : time-base vulnerability
Description
Here's a lotto script, running on my old and slow computer. Can you pwn it?
Problem
Procedure
網頁題最重要的一點就是找出題目的類型,SQL injection? XSS? logical vulnerability?
本題很明顯不是 SQL injection ,是故我在嘗試找邏輯漏洞和 XSS 花了不少時間.
首先邏輯漏洞最大嫌疑點在於判斷式
可惜在 === 的狀況下,沒有 '0e123' == '0e321' 的漏洞,在此可以斷定沒有邏輯上的漏洞.
(請求連結參考)
XSS 自己不太熟捻,不然第一時間就該判斷出不可能,畢竟就算寫了 javascript 也拿到不 session.
我一度想過本題的正解 時間差攻擊
因為 secret 會先 echo 出來,
才會進行 generate_secret() 更改 secret.
可惜被某人誤導(ry):php 必須在執行完畢後才會開始輸出(不flush()時)
就沒有嘗試寫腳本了,必須檢討QQ
事實上 php 會參考 php.ini output_buffering 所設定的大小
當 echo 超過定量字數後,就開始 output 到 client
是故不一定需要 flush 就能夠使用 time-base attack
關於 output_buffering
Solution
Reference