与Pass-12的区别是这里使用POST传地址,POST不会对里面的数据自动解码,需要在Hex中修改。直接在 hex 的值中修改,形成 0x00 截断进行绕过即可。
源代码如下:
$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
$ext_arr = array('jpg','png','gif');
$file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);
if(in_array($file_ext,$ext_arr)){
$temp_file = $_FILES['upload_file']['tmp_name'];
$img_path = $_POST['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;
if(move_uploaded_file($temp_file,$img_path)){
$is_upload = true;
} else {
$msg = "上传失败";
}
} else {
$msg = "只允许上传.jpg|.png|.gif类型文件!";
}
}
首先上传一个jpg文件(里面包含一句话木马),然后用burp抓包:
然后发送到repeater模块,在…/upload/后面加上13.php:
然后再到hex里找到增加的13.php的位置,将p后的0d字段改为00即可:
返回到Raw,可以看到13.php多了一个符号:
然后点击Go,成功上传13.php文件:
然后连接菜刀:
成功访问到: