实验原理
文件上传的客户端检测主要通过前端的JS代码获取文件后缀名进行验证,后端PHP代码没有对文件做任何检测,因此只需要绕过客户端检测。
客户端检测的绕过方法有三种:
1. 删除浏览器事件
2. 通过Burp Suite抓包修改后缀名
3. 伪造上传表单
实验步骤
1、登录操作机,打开浏览器,输入实验地址:http://ip/upfile/1/upload.html
2、在操作机上准备要上传的文件(脚本文件),比如新建test.php文件
3、点击“选择文件”按钮,选中要上传的文件
4、点击“submit”按钮,文件上传失败
5、根据提示,需要上传“jpg”的图片文件,打开桌面的的“Burp”文件夹,双击“BURP.cmd”启动Burp Suite抓包工具
6、切换到“Proxy”代理模块的“Options”,查看Bp的代理
7、切换到浏览器,选择火狐插件中的代理(配置浏览器的的代理),与Bp的代理一致
8、客户端只能上传jpg文件,将脚本文件test.php更改后缀名为test.jpg,再选中文件
9、点击“submit”按钮,再次上传文件,Bp成功抓取数据包
10、将数据包中的后缀名再改为php,绕过客户端的检测
11、点击“Forward”,转发数据包,切换到浏览器,脚本文件成功上传
12、关闭浏览器代理
13、访问http://ip/upfile/1/upload/test.php,上传的脚本文件成功解析
实验总结
掌握文件上传的客户端检测原理以及通过Burp Suite抓包工具抓取数据包,修改文件后缀名绕过JS代码的限制。