[HCTF 2018]WarmUp 1
阿新 • • 發佈:2022-03-19
一、涉及漏洞型別
檔案包含漏洞
程式碼審計
二、解題思路
檢視程式碼 =>開啟提示檔案 => 分析程式碼 => 另一提示檔案 => 書寫payload
payload
?file=hint.php?../../../../../ffffllllaaaagggg
所以需要考慮的就是如何繞過實現檔案包含
思路就是滿足前兩個判斷情況下,使checkFile返回true
在checkFile方法中首先是有3個true是可以返回的,但只有最後兩個是可以的。
此時可以構造第一個payload在第一個地方返回
我們可以想象他傳入checkFile函式要經歷 第一次白名單驗證 一次?過濾後他就是hint.php 再進行一次白名單驗證 返回為真 則達成條件進行包含得到flag
三、知識點
1.is_string()
is_string() 函式用於檢測變數是否是字串。
2.php中的::
php中的::是呼叫類中的靜態方法或者常量,屬性的符號
3.mb_substr()
函式返回字串的一部分
4.mb_strpos():
返回要查詢的字串在別一個字串中首次出現的位置
5.&&
&& 如果兩個運算元都非零,則條件為真;
四、參考
https://www.bilibili.com/video/BV1NU4y1J7si?p=1
https://www.cnblogs.com/xhds/p/12266072.html