网络安全 文件上传漏洞-12 第十二关 Pass-12

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

$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信息

上一关(网络安全 文件上传漏洞-11 第十一关 Pass-11

下一关(网络安全 文件上传漏洞-13 第十三关 Pass-13

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值