[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