进去看到如下表情:

右键查看源代码:

发现提醒source.php,转到该页面,发现如下代码:

代码审计,发现提到hint.php,去看看:

再回头看代码,发现对传入的参数file一共做了如下四轮校验:
1.参数存在且为字符串则放行。
2.传入的参数直接等于source.php或者hint.php则放行。
3.在参数的末尾添加一个?,并截取问号前的内容与source.php或者hint.php比对,相同则放行。
4.对参数进行url解码,再重复一遍第三遍的步骤,相同则放行。
由此我们可以知道当我们主动在参数中添加一个?那么网页就会截断我们所写的?前的内容而非网页所主动添加的?,那么构造一个source.php?校验就会顺利通过。而最终文件包含时?后的文件路径也会被读取,也就是路径穿越漏洞,构造payload如下:?file=source.php?../../../.././ffffllllaaaagggg(文件的目录是几级都有可能,所以就从一级往上试就好了) 得到flag
