文件上传限制绕过的原理以及方法总结

0x00 概述

6666666

0x01 客户端检测绕过(js检测)

  • 检测原理

在客户端通过如下的javascript代码来检测用户提交的文件是否合法:

 1 <script type="text/javascript">
 2     function checkFile() {
 3         var file = document.getElementsByName('upload_file')[0].value;
 4         if (file == null || file == "") {
 5             alert("请选择要上传的文件!");
 6             return false;
 7         }
 8         //定义允许上传的文件类型
 9         var allow_ext = ".jpg|.png|.gif";
10         //提取上传文件的类型
11         var ext_name = file.substring(file.lastIndexOf("."));
12         //判断上传文件类型是否允许上传
13         if (allow_ext.indexOf(ext_name) == -1) {
14             var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name;
15             alert(errMsg);
16             return false;
17         }
18     }
19 </script>
  • 如何判断是否是客户端js检测
     
  • 绕过方法

   由于用来验证文件合法性的js程序在我们客户端,所以对于我们来说,这个验证程序是可控制的,能够很轻易的就绕过,具体能够绕过的方法如下:

   1. 添加允许上传的文件类型,使自己想要上传的会见类型为合法

   -这是一个简单的上传页面

2、删除对js验证脚本的调用,使其不能对上传的文件类型做检测,从而达到绕过

3、利用burpsuite抓包,修改文件类型进行绕过

h1

6666666

h1

6666666

猜你喜欢

转载自www.cnblogs.com/ldhbetter/p/9190556.html