知识点:
文件包含漏洞;
PHP伪协议中的php://filter
preg_replace函数引发的命令执行漏洞
御剑后台扫描打开网站,竟然有page这个字眼:
所有很有可能有文件包含读源码的漏洞;所有我们尝试把源码读出来:
?page=php://filter/read=convert.base64-encode/resource=index.php
base64解密后,审计代码
找到关键部分:
preg_replace函数
preg_repace函数存在命令执行的漏洞
此处明显考查preg_replace函数使用/e模式,导致代码执行的问题:
/e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码(在适当的逆向引用替换完之后)。提示:要确保 replacement 构成一个合法的 PHP 代码字符串,否则 PHP 会在报告在包含 preg_replace() 的行中出现语法解析错误。
也就是说pat和sub有相同的部分,rep的代码就会执行。
他果然执行成功了:
所以我们可以执行命令了:
ls—-查目录
cd—查文件
cat—读文件