SQL注入中information_schema的作用
实验所属系列:WEB安全应用
实验对象:WEB安全爱好者
相关课程及专业:渗透测试技术
实验时数:1小时
实验类别:实践实验类
通过本次实验,掌握SQL注入中,通过information_schema这个数据库爆库名、表名以及字段名的原理。
windows 7、安装wamp环境。
在数据库information_schema中一下所有表

这上面显示的表,它们实际上是视图,而不是基本表,所以你在数据库的数据保存目录,会看不到这个数据库的实体文件。数据库的数据保存在 C:\wamp\bin\mysql\mysql5.6.17\data 目录,在这个目录下一共有如下4个目录:

查询数据存放位置
执行select @@datadir

在SQL注入中,我们重点关注的表有如下几个,因为主要的时候主要利用这几个表来获取数据:
SCHEMATA:提供了当前mysql数据库中所有数据库的信息,其中SCHEMA_NAME字段保存了所有的数据库名。show databases的结果取自此表。
TABLES:提供了关于数据库中的表的信息,详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息,其中table_name字段保存了所有列名信息,show tables from schemaname的结果取自此表。
COLUMNS:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息,其中column_name保存了所有的字段信息。show columns from schemaname.tablename的结果取自此表。
进入,MySQL控制台

首先切换当前数据库

查看一下当前MySQL的所有数据库
然后查看所有数据库的名称数据库名

这俩结果一样,都是返回了数据库的名称。
接下来看一下tables表格的数据结构

查看一下表格中一共有多少数据
同时再查看一下相应表格的一些属性.


通过修改TABLE_SCHEMA 的限制,可以查询任意数据库中的所有表名,网上的通过注入爆表名便是这个原理。
知道了表名,那么如何获取表中的字段呢?要知道我们没有表名的话,会把所有的数据查询出来,而如果注入没有回显,不能进行union查询,那么想要获取我们的标目数据,无疑效率极低。
幸运的是,在information_schema数据库中,同样存在一个表,它保存了整个数据中,所有的列名,这个表就是COLUMNS。




浙公网安备 33010602011771号