我最近尝试过的网站被以下SQL注入脚本
攻击boys' and 3=8 union
select 1,
concat(0x232425,ifnull(`table_name`,0x30),char(9),ifnull(`table_rows`,0x30), char(9),0x252423),
3,4,5,6,7,8,9
from `information_schema`.`tables`
where table_schema=0x62646B3032 limit 44,1 -- And '8'='8
此注入返回了mysql表名。这是由该网站上的错误报告系统报告的,我们设法修复了那部分但是我无法理解上述注射意味着什么?
任何人都可以解释这个吗?
努伊勒
答案 0 :(得分:6)
他们正在使用mysql服务器中的信息架构视图中的选择:
http://dev.mysql.com/doc/refman/5.0/en/information-schema.html
他们使用一些聪明的黑客来解决简单的SQL注入预防技术。
答案 1 :(得分:4)
根据this MySQL concat()
返回由此产生的字符串 连接参数。可能有 一个或多个参数。我摔倒 参数是非二进制字符串, result是一个非二进制字符串。如果 参数包括任何二进制字符串 结果是二进制字符串。一个 数字参数转换为它 等效的二进制字符串形式
所以0x232425转换为#$%,它只是添加到table_name字段的开头和结尾。也许只是为了让他们更容易在以后使用Regex取出Table名称。
稍后在char(9)上相当于一个标签,你可以看到here并且只是为了格式化输出更好。
3,4,5,6,7,8,9就在那里,以便列匹配他们正在执行联盟的男孩表。
答案 2 :(得分:3)
此注入返回了mysql表名。
你的意思是你的网站在给出这个输入时显示了表名,或者从mysql客户端运行时查询返回了吗?如果它显示在您的网站上,则攻击者可以注入更多有害查询。检查您的数据。