解:进入靶机是下面的界面,一个表情
没什么线索先F12看一下,发现提示source.php,那就去看看是什么
代码审计环节
白名单中告诉咱们还有个hint.php
$whitelist = ["source"=>"source.php","hint"=>"hint.php"];
也就是说想办法绕过后进入ffffllllaaaagggg文件就可以了。首先看后半部分,需要满足这三个条件然后用include打开目标文件,再回开头看如何返回ture。
为返回true这里需要参数为字符串
第二个if中的in_array( )是在看参数是否在白名单中有匹配
mb_strpos():返回要查找的字符串在另一个字符串中首次出现的位置,这里就是只保留?号前的内容。
后面基本就是又来了一遍不过多赘述。所以为返回ture,这里应该含有hint.php?,第一遍对?过滤只剩hint.php,第二遍白名单验证正确返回ture。并且满足后面if中的条件,只需再加文件地址即可。
payload:?file=hint.php?../../../../../ffffllllaaaagggg
flag{25e7bce6005c4e0c983fb97297ac6e5a}