[RoarCTF]Easy Calc
題目復現鏈接:https://buuoj.cn/challenges
參考鏈接:樓上請讓路 RoarCTF2019 writeup
知識點
1、http走私繞過WAF
詳細說明見協議層的攻擊——HTTP請求走私
一般來說,反向代理服務器與后端的源站服務器之間,會重用TCP鏈接。這也很容易理解,用戶的分布范圍是十分廣泛,建立連接的時間也是不確定的,這樣TCP鏈接就很難重用,而代理服務器與后端的源站服務器的IP地址是相對固定,不同用戶的請求通過代理服務器與源站服務器建立鏈接,這兩者之間的TCP鏈接進行重用,也就順理成章了。
當我們向代理服務器發送一個比較模糊的HTTP請求時,由於兩者服務器的實現方式不同,可能代理服務器認為這是一個HTTP請求,然后將其轉發給了后端的源站服務器,但源站服務器經過解析處理后,只認為其中的一部分為正常請求,剩下的那一部分,就算是走私的請求,當該部分對正常用戶的請求造成了影響之后,就實現了HTTP走私攻擊。
因為兩個cl直接導致前端轉發的服務器400,而且完整轉發了post包給后端.
2、php字符串解析特性繞過WAF
PHP需要將所有參數轉換為有效的變量名,因此在解析查詢字符串時,它會做兩件事:
1.刪除空白符
2.將某些字符轉換為下划線(包括空格)
這樣可以繞過WAF規則,如SecRule !ARGS:/news_id/ "@rx ^[0-9]+$" "block"
3、繞過過濾寫shell
掃目錄可以直接用scandir
,但是引號都被過濾了,所以要用函數構造,
例如hex2bin(dechex(47))
可以得到/