SQL注入时"Illegal mix of collations for operation 'UNION'"出现的原因
在弄SQL的时候碰到了"Illegal mix of collations for operation 'UNION'"这个报错信息,原来没太注意这个报错,结果看了半天没发现语句有什么错误,顺手去查了下基本上都说是字符编码的问题,瞎折腾了一番来验证结果。
起因
做SQL注入时,发现回显点有比较多,随便找了一个查询。
比如第7个回显点,用来查database()正常。
继续查表,这次显示就不正常了。
证实
搜了下说是因为字符编码的问题,来验证下,首先去确认下第4个回显点是显示什么内容的。
然后去数据库中查source这个字段是什么编码,当然在数据库中直接去看第7个字段也可以。
发现source和id的字符编码确实不一样,而第12个字段也就是hits和id的编码一致,测试后发现确实可以正确回显。
alert table cms_article character set utf8;
可以用来修改整表的编码,但是似乎没有办法将int型的编码进行转换。那么将hits类型改成字符型,然后再将编码改成utf8测试。
猜想证实结束,over。