一些BAT的XSS实例(二)进阶篇
字数 1344 2025-08-26 22:11:29

BAT XSS实例分析(二)进阶篇 - 构造与绕过技术详解

前言

本文基于先知社区px1624分享的BAT XSS实例(二)进阶篇内容,深入分析XSS漏洞的构造与绕过技术。文章包含16道XSS挑战题的详细解析,重点讲解第四题至第六题的解题思路和多种绕过方法。

第四题解析

题目特点

  • 第三题的升级版,过滤了所有运算符
  • 参数名为px
  • 同步输出特性
  • 过滤了斜线(/)运算符

运算符过滤问题

题目参考W3School列出的所有运算符(https://www.w3school.com.cn/js/js_operators.asp)进行了过滤,但存在遗漏。

解题思路

方法一:模板字符串

  1. 使用模板字符串(反引号 `)绕过运算符限制
  2. 模板字符串可以包含换行符,不受单/双引号字符串限制
  3. 构造示例:
    ';`${alert(1)}`//
    
  4. 最短解法(13个字符):
    ';`${alert(1)}
    

方法二:使用in运算符

  1. 发现ininstanceof运算符未被过滤
  2. 构造示例:
    'in alert(1)'
    
  3. 虽然会引发类型错误,但alert(1)会先执行

关键知识点

  • 模板字符串特性:允许跨行,支持字符串插值
  • JavaScript运算符全集:ininstanceof也是运算符
  • 同步输出环境下的闭合技巧

第五题解析

题目特点

  • 页面直接访问会跳转
  • 包含HTML和PHP两个版本
  • 使用index.js获取URL参数
  • 通过document.write动态创建script标签

解题思路

  1. 识别跳转陷阱:不注意会一直在PHP页面测试
  2. 分析HTML页面中的document.write操作
  3. 利用参数控制script标签的src属性
  4. 找到可控制并包含alert(1)的文件路径
  5. 按照传参逻辑拼接文件路径

关键知识点

  • 路径控制导致的XSS
  • JSONP相关安全问题
  • 动态脚本加载的利用方式

第六题解析

题目特点

  • 类似第五题但参数减少为1个
  • 移除了路径中的问号字符
  • 参数经过URL解码
  • 过滤问号(?)和百分号(%)

解题难点

  1. 尝试使用问号会导致跳转
  2. 使用%3f编码问号,但百分号被过滤
  3. 参数校验严格,不符合条件返回空值

绕过方法

  1. 寻找不依赖问号的路径构造方式
  2. 利用其他特殊字符或路径特性
  3. 目前唯一解出者gainover的解法未公开

关键知识点

  • URL路径解析特性
  • 严格过滤机制的绕过思路
  • 前端校验机制的缺陷利用

其他题目概况

  1. 1-3题:基础XSS构造,已在系列(一)中讲解
  2. 7-10题:涉及多种XSS技巧,部分解题者已给出解法
  3. 通杀解法:香草给出了同时解决9和10题的payload

优秀解题者

  • gainover:唯一解出第6题,第4题最短payload(13字符)
  • 香草:解出1-4及7-10题,提供通杀解法
  • p1g3/zeddy/Huuuuu/w8ay:解出1-5题及部分其他题目
  • w8ay/Huuuuu:第4题提供独特解法
  • zeddy:第7题给出不同构造思路

总结

本系列XSS挑战题展示了多种高级绕过技术:

  1. 运算符过滤绕过:利用非常用运算符或模板字符串
  2. 路径控制XSS:通过参数操控资源加载路径
  3. 严格过滤绕过:寻找校验机制的盲点
  4. 同步输出利用:巧妙的语法闭合技巧

这些实例反映了真实环境中XSS漏洞的复杂性和防御的挑战性,对安全研究人员和开发人员都有重要参考价值。

BAT XSS实例分析(二)进阶篇 - 构造与绕过技术详解 前言 本文基于先知社区px1624分享的BAT XSS实例(二)进阶篇内容,深入分析XSS漏洞的构造与绕过技术。文章包含16道XSS挑战题的详细解析,重点讲解第四题至第六题的解题思路和多种绕过方法。 第四题解析 题目特点 第三题的升级版,过滤了所有运算符 参数名为 px 同步输出特性 过滤了斜线(/)运算符 运算符过滤问题 题目参考W3School列出的所有运算符(https://www.w3school.com.cn/js/js_ operators.asp)进行了过滤,但存在遗漏。 解题思路 方法一:模板字符串 使用模板字符串(反引号 ` )绕过运算符限制 模板字符串可以包含换行符,不受单/双引号字符串限制 构造示例: 最短解法(13个字符): 方法二:使用 in 运算符 发现 in 和 instanceof 运算符未被过滤 构造示例: 虽然会引发类型错误,但alert(1)会先执行 关键知识点 模板字符串特性:允许跨行,支持字符串插值 JavaScript运算符全集: in 和 instanceof 也是运算符 同步输出环境下的闭合技巧 第五题解析 题目特点 页面直接访问会跳转 包含HTML和PHP两个版本 使用index.js获取URL参数 通过document.write动态创建script标签 解题思路 识别跳转陷阱:不注意会一直在PHP页面测试 分析HTML页面中的document.write操作 利用参数控制script标签的src属性 找到可控制并包含alert(1)的文件路径 按照传参逻辑拼接文件路径 关键知识点 路径控制导致的XSS JSONP相关安全问题 动态脚本加载的利用方式 第六题解析 题目特点 类似第五题但参数减少为1个 移除了路径中的问号字符 参数经过URL解码 过滤问号(?)和百分号(%) 解题难点 尝试使用问号会导致跳转 使用%3f编码问号,但百分号被过滤 参数校验严格,不符合条件返回空值 绕过方法 寻找不依赖问号的路径构造方式 利用其他特殊字符或路径特性 目前唯一解出者gainover的解法未公开 关键知识点 URL路径解析特性 严格过滤机制的绕过思路 前端校验机制的缺陷利用 其他题目概况 1-3题:基础XSS构造,已在系列(一)中讲解 7-10题:涉及多种XSS技巧,部分解题者已给出解法 通杀解法:香草给出了同时解决9和10题的payload 优秀解题者 gainover :唯一解出第6题,第4题最短payload(13字符) 香草 :解出1-4及7-10题,提供通杀解法 p1g3/zeddy/Huuuuu/w8ay :解出1-5题及部分其他题目 w8ay/Huuuuu :第4题提供独特解法 zeddy :第7题给出不同构造思路 总结 本系列XSS挑战题展示了多种高级绕过技术: 运算符过滤绕过 :利用非常用运算符或模板字符串 路径控制XSS :通过参数操控资源加载路径 严格过滤绕过 :寻找校验机制的盲点 同步输出利用 :巧妙的语法闭合技巧 这些实例反映了真实环境中XSS漏洞的复杂性和防御的挑战性,对安全研究人员和开发人员都有重要参考价值。