SQL注入能做什么
正像小偷从窗户爬进入房间,他不仅能在能在房间内偷东西, 也可以将整个房子洗劫一空。
接下来看看如何利用SQL注入注入进行爆库爆表甚至报数据 !
原理
当知道了目标网站可以进行SQL注入的时候, 如何进一步知道有哪些数据库、哪些表和字段呢?
答案是, 在mysql中有一个元数据库,
里面存储了所有整个mysql中有什么数据库, 什么表以及每个表中有哪些字段, 就相当于把自己的所有财产都告诉别人了
那么, 只要知道了这个原理, 流程如下:
元数据库 --> 数据库 --> 表 --> 字段 --> 内容
1. 元数据库
元数据如何获取呢?
利用 show databases; 就可以看到元数据库 information_schema了
里面应有尽有, 可以尽情开放的处女地
2. 查看所有数据库
有了元数据库, 我们可以看看里面有些什么表:
其中 schemata表中就是存储mysql的所有数据库了, 我们可以查看一下里面的数据
可以看到mysql中有4个数据库
这里的访问形式为: 数据库.表名,
3. 查看表
在元数据表中, TABLES存储数据库中所有的表名:
加入我们通过以上步骤知道了所有数据库的名字, 现在需要进一步挖出指定数据(就比如数据库sys吧)的所有表名,
我们可以听过查看information_schema中的TABLES描述:
其中 TABLES_SCHEMA 和 TABLE_NAME
例如, 要查看数据库sys下的所有表:
select TABLE_SCHEMA, TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA='sys';
黄框内即为sys数据库下所有的表名
4. 查看字段
现在已经知道了表名, 要进一步挖出字段
所有表的字段信息也在information_schema中:
看看COLUMNS的描述:
COLUMNS_NAME 存储有所有表的所有字段信息
假如有查看数据库sys中的 host_summary 表的字段:
select TABLE_NAME, COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME='host_summary';
表的所有字段就出来了!
5. 查看数据
所有信息已在掌控之中! 现在只需进行一个简单的查询操作就可以得到数据了:
大功告成!! 成功拿到数据.
总结
INFORMATION_SCHEMA : 元数据库,里面应用尽有
SCHEMATA : 里面描述了整个mysql下的所有数据库
TABLE_SCHEMA : 数据库名
TABLE_NAME : 表名
COLUMNS : 存储所有表的所有字段
COLUMN_NAME : 字段名
@@version_compile_os : 操作系统