提交报文修改检测绕过

提交报文修改检测绕过(前端检测通用)
(1)首先选择正常的文件进行上传
(2)通过burpsuite进行截包改包或改包重放完成文件上传
这种方法前端检测绕过通用,不用理解具体前端的检测代码,直接进行上传报文的修改和提交
文件上传示例代码js_check.php或者通过upload-labs的PASS-01进行练习

<?php
//文件上传漏洞演示脚本之js验证
//设置上传之后的文件保存路径
$uploaddir = 'uploads/';
 
if (isset($_POST['submit'])) {
    if (file_exists($uploaddir)) {
        if (move_uploaded_file($_FILES['upfile']['tmp_name'], $uploaddir . '/' . $_FILES['upfile']['name'])) {
            echo '文件上传成功,保存于:' . $uploaddir . $_FILES['upfile']['name'] . "\n";
        }
    } else {
        exit($uploaddir . '文件夹不存在,请手工创建!');
    }
 
}
 
?>
 
<!DOCTYPE html>
 
<html>
 
<head>
 
    <meta charset="UTF-8">
 
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
 
    <title>文件上传漏洞演示脚本--JS验证实例</title>
 
    <script type="text/javascript">
    	//检查上传的文件是不是符合条件
    	//绕过的方式大部分就是在这里的代码上面做操作
        function checkFile() {
 
            var file = document.getElementsByName('upfile')[0].value;
 
            if (file == null || file == "") {
 
                alert("你还没有选择任何文件,不能上传!");
 
                return false;
 
            }
 
            //定义允许上传的文件类型
 
            var allow_ext = ".jpg|.jpeg|.png|.gif|.bmp|";
 
            //提取上传文件的类型
 
            var ext_name = file.substring(file.lastIndexOf("."));
 
            //判断上传文件类型是否允许上传
 
            if (allow_ext.indexOf(ext_name + "|") == -1) {
 
                var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name;
 
                document.getElementById("output").innerHTML = errMsg;

 
                return false;
 
            }
 
        }
 
    </script>
 
<body>
 
<h3>文件上传漏洞演示脚本--JS验证实例</h3>
<!--在这里调用检测的脚本函数,就是下面的onsubmit事件-->
<form action="" method="post" enctype="multipart/form-data" name="upload" onsubmit="return checkFile()">
 
    <input type="hidden" name="MAX_FILE_SIZE" value="204800"/>
 
    请选择要上传的文件:<input type="file" name="upfile"/>
 
    <input type="submit" name="submit" value="上传"/>
    <p id="output"></p>
</form>
 
</body>
</html>

上传可以上传的文件格式,例如.jpg
在这里插入图片描述
burpsuite截断
在这里插入图片描述
修改成phpinfo.php后点击forward
在这里插入图片描述
可以看到文件上传成功

-----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------

通过upload-labs的PASS-01进行练习,步骤和上面一样,因为我是后面才知道upload-labs
检测代码

function checkFile() {
        var file = document.getElementsByName('upload_file')[0].value;
        if (file == null || file == "") {
            alert("请选择要上传的文件!");
            return false;
        }
        //定义允许上传的文件类型
        var allow_ext = ".jpg|.png|.gif";
        //提取上传文件的类型
        var ext_name = file.substring(file.lastIndexOf("."));
        //判断上传文件类型是否允许上传
        if (allow_ext.indexOf(ext_name) == -1) {
            var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name;
            alert(errMsg);
            return false;
        }
    }

οnsubmit="return false"是表示阻止表单提交,在上传之前,通过js判断文件后缀是否符合格式,不符合就阻止表单提交

posted @ 2020-03-25 12:42  range1128  阅读(435)  评论(0)    收藏  举报