UPLOAD LABS | PASS 01 - 绕过前端 JS 限制

关注这个靶场的其它相关笔记:UPLOAD LABS ------ 靶场笔记合集-CSDN博客

0x01:过关流程

本关的目标是上传一个 WebShell 到目标服务器上,并成功访问:

我们直接尝试上传后缀为 .php 的一句话木马:

如上,靶场弹窗提示说我们上传的文件类型不对,不允许上传。我们(右击)查看网页源码,发现过滤逻辑其实是写在前端的:

针对这种前端 JS 过滤,我们最简单的方法就是,禁用前端 JS :

禁用完后,再次点击上传,即可上传成功:

此时使用检查,查看我们上传 "图片" 的位置,即可知道我们上传木马的位置:

如上,我们上传的木马路径为 ../upload/muma.php,即:

复制代码
 http://localhost/upload-labs/upload/muma.php

我们使用 "中国蚁剑" 连接一下,看看能否 Get Shell(如下,Get Shell 成功,本关结束):

0x02:源码分析

下面是本关的 WAF 源码,主要功能是在客户端使用 JS 对不合法图片进行检测:

php 复制代码
 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;
     }
 }

对于这种客户端过滤没啥好说的,绕过方式很多。除了笔者上面介绍的那一种外,你还可以提交一张正常图片,当其前端向后端发送 POST 请求时,拦截该请求,然后修改内容。这也是可以的。

相关推荐
格林威1 分钟前
C#高位深相机图像保存:12位16位图像保存方案,OpenCvSharp和Halcon实现
开发语言·人工智能·数码相机·计算机视觉·c#·视觉检测·工业相机
小小龙学IT3 分钟前
Qt Graphics View Framework(图形视图框架)深度解析:从 Scene/View/Item 到工业级 2D 场景
开发语言·数据库·qt
lichenyang4539 分钟前
NestJS + Socket.IO 鉴权、用户房间与幂等邀请
前端·后端
paopaokaka_luck10 分钟前
基于springboot3+vue3+uniapp的剧本杀预约小程序(AI角色对话、协同过滤算法、地图Api、Echarts图形化分析)
java·前端·spring boot·学习·echarts
lichenyang45310 分钟前
React 实时通知与异步竞态处理
前端·后端
2601_9669496514 分钟前
Python 量化数据质量校验:如何确保股票历史日线数据不存在缺失交易日?
开发语言·人工智能·爬虫·python·量化策略·量化·quantdash
三十而立洋16 分钟前
搭建现代化 Git 提交规范:commitlint + czg + husky + lint‑staged 完整实战
前端
半个落月18 分钟前
React + Vite Todo 实践:用 Axios 与 Mock 解开前后端等待
前端
qq_3168377520 分钟前
uniapp 安卓/H5 使用 contentEditable 属性 富文本编辑器
android·javascript·uni-app
yuqifang20 分钟前
var deferred = jQuery.Deferred(); 使用示例
前端·javascript·面试