直接就可以进入看看源代码
原本以为这道题目有两个方法来做 但是 后面发现第二个没有找到漏洞
这里考点主要就是 正则和 basename的特性
首先就是正则
现在出现一个知识点
就是
/index.php/config.php 这种路径 访问的还是 index.php
我们可以试试看
还是在index.php中过滤了 说明访问的还是 index.php
那我们怎么实现嗯
主要是下面这里
if (isset($_GET['source'])) {highlight_file(basename($_SERVER['PHP_SELF']));exit();
}
首先看看 PHP_SELF输出的是什么
$_SERVER['PHP_SELF'] 表示当前 php 文件相对于网站根目录的位置地址
如果我们在后面加上 /config.php呢
很显然 还是 被过滤了
因为会被正则匹配到
我们现在的突破点在哪里
basename会去除掉非ASCII值
例如
/config.php/%ab
他就会去除掉 %ab 然后就变为了 config.php
但是这个为什么不会被匹配呢 我们去正则测试一下就行了
我们能发现 确实绕过了
所以思路就是
通过 /config.php/%ab 绕过正则并且 basename 去除了 后面非ascii 值 %ab这样路径就就为了config.php
那么这道题目payload就出现了
index.php/config.php/%ab?source=这里首先正则 因为 后面 存在 /%ab 就不会匹配其次 basename 匹配到 %ab非ascii值 然后就会去除 这样就变为了 index.php/config.php/通过 PHP_SELF 就会匹配到 config.php 然后实现高亮