Web安全—information_schema数据库

前言:在SQL注入中,information_schema数据库中包含的信息特别重要,通过这个表我们可以去获取到存在SQL注入网站的表,列,等信息,其危害不言而喻。

一:information_schema数据库

基础:information_schema是一个存放了当前数据库管理系统中所有数据库信息的一个数据库,数据库只能进行读取,不支持修改(增,删,更新)
mysql5.0以下:多用户单操作,不存在information_schema数据库
mysql5.0以上:多用户多操作,存在information_schema数据库
在这里插入图片描述
information_schema数据库说明:
重要表说明:
1,information_schema.schemata表:此表存放了当前数据库管理系统下所有的数据库,效果等同于show databases;命令
在这里插入图片描述
schema_name列:其包含了当前数据库管理系统中所有的数据库,如上
SQL注入利用:可通过语句:
select schema_name from information_schema.schemata; 获取到当前数据库管理系统中所有的数据库
2,information_schema.tables表: 此表存放了当前数据库管理系统下所有数据库的表,效果等同于所有数据库下show tables的合集
table_name列:此列记录当前数据库管理系统中所有表的合集
table_schema列:此列记录当前数据库管理系统中所有数据库的合集,可通过语句查看:select table_schema from information_schema.tables limit 1,5;
在这里插入图片描述
3,information_schema.columns表:此表存放了当前数据库管理系统中所有的列名
在这里插入图片描述
table_name列:记录当前数据库管理系统下表的合集
table_schema列:记录当前数据库管理系统下数据库名的合集
column_name列:记录当前数据库管理系统下的所有列的合集
例如:查看数据库名称为websec下所有的列,语句:select column_name from information_schema.columns where table_schema='websec';
在这里插入图片描述
SQL注入利用思路:SQL注入利用information_schema数据库思路(mysql版本高于5.0版本)
1,如果某Web网站存在SQL注入,通过select database()函数可以判断当前数据库,select version()select user()判断当前数据库版本和当前登陆数据库用户
在这里插入图片描述

2,使用information_schema.table查询当前数据库包含哪些表,语句:
select table_name from information_schema.tables where table_schema='websec';
在这里插入图片描述
3,通过步骤2所查表名获取当前当前表中的列:语句:
select column_name from information_schema.columns where table_name='websec';
在这里插入图片描述
4,通过所查列名,数据表,数据库名获取当前数据库信息,达到可利用信息的获取,语句:
select * from websec.websec;或select id,name,sex from websec;
在这里插入图片描述
如果获取到的信息包括账户和密码,则可以通过目录爆破找到后台登陆页面,通过SQL注入获取到的账户和密码登陆网站后台,然后通过其他手段,例如文件上传等利用,获取webshell,拿到Web应用服务器权限。

二:其他常见函数补充

mysql其他基础和常见函数可参考文章:SQL注入—MYSQL基础语句(持续更新)附图
concat(username):将查询到的username连在一起,默认通过逗号分隔
group_concat(username):将查询到的username连在一起,默认通过逗号分隔
group_concat(str1,‘?’,‘str2’):将查询到的内容通过问号分隔开,concat同样也适用
在这里插入图片描述

三:SQL注入常见分类

1,按照注入点类型分类
数字型
字符型
搜索型
2,按照注入点位置分类
GET
POST
Cookie
HTTP头部(XFF,User-Agent,REFERER等)
3,按照回显类型分类
基于事件的盲注
基于布尔类型的盲注
报错注入
联合注入
堆查询注入(执行多条语句的情况下)

参考学习文章:

SQL注入漏洞详解
SQL注入—MYSQL基础语句(持续更新)附图

Logo

快速构建 Web 应用程序

更多推荐