文件上传:前端验证不可靠
前端验证指:javascript源码
如ctfshow例题web151:
这里可以使用
F12
打开源码界面,发现如下代码:1
2<button type="button" class="layui-btn" id="upload"
lay-data="[url: 'upload.php', event: 'images', exts:'png']">这是一个经典的
layui
代码:
语法以及特点如下:1.基础结构:
<button>
标签被 Layui 渲染为一个上传按钮。class="layui-btn"
:Layui 的按钮样式。id="upload"
:按钮的唯一标识符(可用于 JavaScript 操作)。
2.有关
lay-data:
- 这是 Layui 上传组件的核心配置参数,格式为简化的 JSON(Layui 自定义语法)。
- 参数用方括号
[]
包裹,键值对用:
分隔,多个参数用,
分隔。
关键参数详解
url: 'upload.php'
- 作用:指定文件上传的后端接口地址。
- 示例:文件上传时会向
upload.php
发送 POST 请求,由该接口处理上传逻辑。
event: 'images'
- 作用:指定上传触发的事件类型。
- 常见值:
'images'
:限定上传文件为图片类型(会隐式校验文件头)。- 若需上传任意文件,可省略此参数或设置为
'file'
。
exts: 'png'
- 作用:限制允许上传的文件后缀。绕过的重点就是这个
exts
标签,它会强制校验文件后缀,而event
的验证则是非强制的 - 示例:
exts:'png'
表示只允许上传.png
文件。 - 扩展用法:支持多个后缀,如
exts: 'png|jpg|gif'
。
一般解法:
- 直接修改
exts
的参数,使得我们要上传的恶意文件可以被上传
1 | <button type="button" class="layui-btn" id="upload" |
- 让一句话木马上传后再使用剑蚁进行连接即可。s
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Dedsec的博客!