文件上传漏洞3
JS本地验证绕过(本地验证,客户端验证)
本地验证速度较快,如果点击确定按钮很快弹框,那么可以猜测是本地js验证,
我们可以打开浏览器源代码找到验证的地方自己修改即可.(PS:需要修改action字段指向需正确提交的位置.)
<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("."));
//alert(ext_name);
//alert(ext_name + "|");
//判断上传文件类型是否允许上传
if (allow_ext.indexOf(ext_name + "|") == -1) {
var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name;
alert(errMsg);
return false;
}
}
</script>
%00截断上传
%00用于测试是否有该漏洞
比如上传xxx.php%00.jsp
如果服务端有该漏洞,则文件被保存成xxx.php.
这个%00需要是编码过后的URL的%00
如果直接写%00,会被编码成为%25%30%30(burp suite有这个转换功能)