1. 程式人生 > 其它 >[HCTF 2018]WarmUp 1

[HCTF 2018]WarmUp 1

一、涉及漏洞型別

檔案包含漏洞

程式碼審計

二、解題思路

檢視程式碼 =>開啟提示檔案 => 分析程式碼 => 另一提示檔案 => 書寫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