点击第十二关,并点击选择显示源码:

$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类型文件!";
}
}
与第十一关的代码进行对比(十一关题解),我们发现这一关的文件保存路径是通过post请求获取的。

与上一关(十一关题解)思路相同,我们通过修改save_path的值进行00截断操作,从而达到木马php文件成功上传的目的,首先打开burpsuite进行监听,然后上传木马php文件:

我们找到文件上传路径和上传文件名,此时我们需要对这两个值进行修改,对文件上传路径使用00截断,从而成功提交php木马文件,修改上传文件名为png(jpg、gif都行)格式从而通过后缀名白名单验证。(post请求将数据放在请求的消息体中发送,而get是在url中所以savepath位置与上一关不同)

这里需要注意的是 GET 型提交的内容会被自动进行URL解码,在POST请求中,%00不会被自动解码,所以我们还需要对输入的%00进行url解码操作,首先选中 %00 ,右键单击,选中Convert selection--URL---URL-decode 进行url解码

(发现%00消失是正常现象,莫慌~)

然后点击foward,发现文件上传。右键单击复制图像地址,然后在浏览器访问:

同样的,闪现删除php后缀名以后的所有字符串,然后回车,发现成功获取服务器php信息




544

被折叠的 条评论
为什么被折叠?



