我工作的网站最近被以下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表名。这是由该网站上的错误报告系统报告的,我们设法修复了这一部分,但是我不能理解上面的注入是什么意思?
有人能解释这个吗?
佩努埃尔
发布于 2010-08-10 22:20:23
根据this的说法,MySQL concat()
返回连接参数后得到的字符串。可以有一个或多个参数。如果所有参数都是非二进制字符串,则结果为非二进制字符串。如果参数包含任何二进制字符串,则结果为二进制字符串。数值参数将转换为其等效的二进制字符串形式
因此,0x232425被转换为#$%,它被简单地添加到table_name字段的开头和结尾。也许只是为了方便他们以后使用正则表达式提取表名。
稍后,char(9)相当于一个制表符,因为您可以看到here,它只是为了更好地格式化输出。
3,4,5,6,7,8,9就在那里,这样列就与正在执行Union的boys表相匹配。
发布于 2010-08-10 12:00:54
他们从mysql服务器的Information Schema视图中使用select:
http://dev.mysql.com/doc/refman/5.0/en/information-schema.html
他们使用一些巧妙的技巧来阻止简单的sql注入技术。
发布于 2010-08-11 00:26:25
此注入返回mysql表名。
您的意思是,当您提供此输入时,您的网站会显示表名,还是当从mysql客户端运行时,查询会返回该表名?如果它显示在你的网站上,那么攻击者就有能力注入更多有害的查询。检查您的数据。
https://stackoverflow.com/questions/3445910
复制相似问题