SQL注入时"Illegal mix of collations for operation 'UNION'"出现的原因

在弄SQL的时候碰到了"Illegal mix of collations for operation 'UNION'"这个报错信息,原来没太注意这个报错,结果看了半天没发现语句有什么错误,顺手去查了下基本上都说是字符编码的问题,瞎折腾了一番来验证结果。


起因

做SQL注入时,发现回显点有比较多,随便找了一个查询。 SQL注入时

比如第7个回显点,用来查database()正常。 SQL注入时

继续查表,这次显示就不正常了。 SQL注入时


证实

搜了下说是因为字符编码的问题,来验证下,首先去确认下第4个回显点是显示什么内容的。 SQL注入时

然后去数据库中查source这个字段是什么编码,当然在数据库中直接去看第7个字段也可以。 SQL注入时

发现source和id的字符编码确实不一样,而第12个字段也就是hits和id的编码一致,测试后发现确实可以正确回显。 SQL注入时

alert table cms_article character set utf8;可以用来修改整表的编码,但是似乎没有办法将int型的编码进行转换。那么将hits类型改成字符型,然后再将编码改成utf8测试。 SQL注入时

猜想证实结束,over。 SQL注入时

你可能感兴趣的:(#,WEB安全)