前端验证指:javascript源码

  • 如ctfshow例题web151:

    image-20250414211008251

    这里可以使用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 自定义语法)。
    • 参数用方括号 [] 包裹,键值对用 : 分隔,多个参数用 , 分隔。
  • 关键参数详解

  1. url: 'upload.php'
  • 作用:指定文件上传的后端接口地址。
  • 示例:文件上传时会向 upload.php 发送 POST 请求,由该接口处理上传逻辑。
  1. event: 'images'
  • 作用:指定上传触发的事件类型。
  • 常见值
    • 'images':限定上传文件为图片类型(会隐式校验文件头)。
    • 若需上传任意文件,可省略此参数或设置为 'file'
  1. exts: 'png'
  • 作用:限制允许上传的文件后缀。绕过的重点就是这个exts标签,它会强制校验文件后缀,而event的验证则是非强制的
  • 示例exts:'png' 表示只允许上传 .png 文件。
  • 扩展用法:支持多个后缀,如 exts: 'png|jpg|gif'

一般解法:

  • 直接修改exts的参数,使得我们要上传的恶意文件可以被上传
1
2
<button type="button" class="layui-btn" id="upload" 
lay-data="[url: 'upload.php', event: 'images', exts:'php']"><!--这里修改为php-->
  • 让一句话木马上传后再使用剑蚁进行连接即可。s