一些BAT的XSS实例(一)基础篇
字数 1051 2025-08-26 22:11:28
BAT XSS实例分析(基础篇)教学文档
一、XSS基础概念回顾
XSS(跨站脚本攻击)是一种将恶意脚本注入到网页中的攻击方式,分为反射型、存储型和DOM型三种。
二、实例分析
实例1:DOM型XSS基础
题目描述:通过location.hash获取输入并执行
关键代码:
setTimeout("aa('"+x+"')",100);
解题思路:
-
观察法:分析代码逻辑构造payload
- 需要构造:
setTimeout("aa('"+"',alert(1),'"+"')",100); - 最终payload:
',alert(1),'
- 需要构造:
-
JS断点调试法:
- 在Chrome开发者工具中设置断点
- 观察变量变化和代码执行流程
-
错误调试法:
- 输入特殊字符触发错误
- 通过错误信息反向推导正确构造
最短payload:
#',alert(1),'#');alert(1)//
实例2:jQuery特性利用
题目描述:通过location.search获取参数并执行DOM操作
关键代码:
$("#xx")[x]($("#xx")[y]());
解题思路:
- 利用jQuery的text()方法会还原HTML编码的特性
- 构造参数使代码执行:
- 第一个参数可以是html、append等DOM操作方法
- 第二个参数必须为text
payload示例:
?x=html&y=text
实例3:运算符同步输出
题目描述:两个输出点需要同步构造
关键代码:
echo "<script>var a='".htmlspecialchars($_GET['px'])."';var b='".htmlspecialchars($_GET['px'])."';</script>";
解题思路:
- 使用运算符连接两个输出点
- 确保前后语法都正确
payload示例:
px=1*alert(1)*1
px=1+alert(1)+1
px=1-alert(1)-1
实例4:运算符过滤绕过
题目描述:过滤了所有运算符的进阶版
解题思路:
- 寻找不依赖运算符的JS语法结构
- 利用逗号操作符或其他未被过滤的语法
最短payload(13字符):
(作者未在文中直接给出,需进一步分析)
三、调试技巧总结
-
Chrome开发者工具使用:
- 断点调试
- 变量观察
- Console测试
-
错误分析法:
- 故意触发错误
- 通过错误信息反推
-
代码分析法:
- 静态分析代码逻辑
- 动态跟踪执行流程
四、防御建议
- 对所有输出进行适当的编码/转义
- 避免使用eval、setTimeout等动态执行字符串的函数
- 注意jQuery方法特性(如text()会解码HTML实体)
- 实现内容安全策略(CSP)
五、扩展阅读
六、练习题目
- 尝试复现文中所有XSS实例
- 寻找实例4的最短payload
- 探索其他不依赖运算符的JS语法结构
- 研究不同jQuery方法的XSS利用可能性
注:实际练习时请确保在授权环境下进行测试,避免非法攻击行为。