[RoarCTF 2019]Easy Calc
題目
題目打開是這樣的
查看源碼
.ajax是指通過http請求加載遠程數據。
可以發現有一個calc.php,輸入的算式會被傳入到這個php文件里,嘗試一下能不能打開
可以打開,並且顯示了源碼
foreach 語法結構提供了遍歷數組的簡單方式。
語法:
foreach (array_expression as $value)
statement
foreach (array_expression as $key => $value)
statement
在這道題里,會對黑名單中的每一個值都拿出來連接成正則表達式的字符串,/m表示多行查找
其他幾個參數:
/i (忽略大小寫)
/g (全文查找出現的所有匹配字符)
/m (多行查找)
/gi(全文查找、忽略大小寫)
/ig(全文查找、忽略大小寫)
假如繞過的話,我們就可以用eval執行任意php語句
重點
了解一下php的解析規則,當php進行解析的時候,如果變量前面有空格,會去掉前面的空格再解析
而這里黑名單過濾,沒有過濾這種情況,那么久可以構造一個查詢語句了
? num=1;var_dump(scandir(chr(47)))
scandir(/)可以查看目錄,用chr()來繞過waf,注意在calc.php頁面提交
可以看到一個f1agg,打開這個文件就好
? num=1;var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))