MySQL系统表的利用姿势(浅探)
MySQL数据库文件读写
权限要求:
具备读写权限并且目标文件为可读内容
目标内容具有完整路径且目录可访问
目标内容是否具备文件读写操作权限
查看是否有文件读写权限
show variables like '%secure%';

secure_file_priv绝对文件读取的功能
null:不允许任何导入导出
./[url]:导入/导出操作只可以在./[url]路径下进行
:空内容;导入导出无限制在my.ini文件中,修改
secure_file_priv属性值可以修改导入导出权限
确保具备文件导入导出权限后即可进行文件读写操作~~~
读写文件:
数据库表读取文件中的内容并保存~
load_file:
load_file(<[./url/]file>);
load_file 在指定的目录下创建文件
首先我们需要在/var/lib/mysql-files/创建一个文件user.txt
$ vi /var/lib/mysql-files/user.txt
user.txt:
Hello,World!
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'));
mysql> select * from file;
+----+---------------+
| id | file_url |
+----+---------------+
| 1 | NULL |
| 2 | Hello,World! |
+----+---------------+
2 rows in set (0.00 sec)
文件中的数据内容就这样写入了数据表中!
load data infile:
load data infile '/var/lib/mysql-files/name.txt' into table file(file_url);
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在刚刚初始化后,默认有三个系统默认库:
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 表中提供了表的详细信息
select <列名> from information_schema.tables;
table表中主要记录了数据库中所有表的元数据,例如表名、类型、引擎……
在渗透过程中,如果我们掌握到这张表就可以掌握数据库的大概的表

COLUMNS表:字段信息
information_schema.COLUMNS表中提供了表中字段信息
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联合注入是最为常见的

普遍的情况下,使用union语句实现联合注入(回显注入)……
' union <SQL语句>; #
现在简单的举例几条SQL语句实现核心的条件查询
MySQL注入查询SQL:
查当前 库名:
select 1 , database();
查库 SQL语句:
select schema_nam from information_schema.schemata;
查表 SQL语句:
select table_name from information_schema.tables where table_schema = "<databases_name>";
查列(字段) SQL语句:
select columns_name from information_schema.columns where table_name = "<tables_name>";
顺带一提~SQL盲注
上面说的SQL注入是基于页面有“回显”的注入(回显注入)
如果页面没有回显,那么就需要进行“盲注入”
hash破解*
获取管理员hash:
select user,password from mysql.user;

破解hash:
推荐神器:hashcat
推荐网站:CMD5(本例使用CMD5网站破解)

成功解出密码……_!
MySQL系统表的利用姿势(浅探)的更多相关文章
- mysql系统表加trigger和对特定的库禁用 DDL 语句
给 mysql 系统表加上 trigger 1 Reply 默认情况下,mysql 是不能给系统表,例如 mysql.user 加上触发器的.会提示 ERROR 1465 (HY000): Trigg ...
- mysql 系统表的作用
mysql 的系统表记录了所有数据库表(包括视图的定义语句)的字段列,顺序,类型等等,知道这些的话可以做些抽取模板淫荡的操作吧 嘿嘿 public void shuaxinglb() { try { ...
- 常用mysql系统表及命令
常用系统表查看当前数据库连接ip信息– select * from information_schema.PROCESSLIST 当前mysql实例中所有数据库的信息– select * from i ...
- mysql系统库INFORMATION_SCHEMA,MySQL,TEST,mysql系统表的作用
本文简要说明了MySQL数据库安装好后自带的INFORMATION_SCHEMA,MySQL,TEST三个数据库的用途. 第一个数据库INFORMATION_SCHEMA: 提供了访问数据库元数据的方 ...
- SqlServer与MySql 系统表查询自建表数据
SqlServer: SELECT * FROM sys.sysobjects WHERE type='U' ORDER BY name SELECT * FROM sys.syscolumns WH ...
- sql数据库系统表和mysql系统表
sql数据库系统表,常用的(sysobjects,sysindexes,sysindexkeys,SYSCOLUMNS,SYSTYPES 及更多解释说明): https://docs.microsof ...
- Mysql 系统表
Information_schema: 1. tables 提供表信息: 表所属数据库,表名,表类型,行数,最大自增数等等.
- 【转】利用optimize、存储过程和系统表对mysql数据库表进行批量碎片清理释放表空间
本文收集于本人的笔记本,由于找不到原文出处.在此省略,如哪位知道可以联系我加上. 核心是利用mysql系统表和“optimize table 表名”命令,对mysql数据表进行空间的释放.由于dele ...
- centos/windows服务器,Mysql数据库表结构损坏-已解决
[问题原因]服务器突然断电 [故障报告]数据库表结构损坏 [解决思路]进入强制恢复模式,备份库表及数据重建 故障发现 周末公司断电,周一启动数据库就直接报错了 查看日志 上面标记的log,明确表示是非 ...
随机推荐
- POJ 3067 Japan (树状数组求逆序对)
POJ - 3067 题意:有(1-n)个城市自上到下在左边, 另有(1-m)个城市自上到下在右边,共有m条高速公路,现求这m条直线的交点个数,交点不包括在城市处相交. 题解:先将高速公路读入,然后按 ...
- CH 5101 最长公共上升子序列
题目传送门 题解:F[i][j] 表示 对于第一个数列枚举到i来说, 第二个数列以j结尾的最大长度是多少. 那么对于更新 F[i] -> F[i+1]来说 如果 a[i+1] == b[j] ...
- 51nod 1060 最复杂的数(数论,反素数)
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1060 题解:可以去学习一下反素数. #include < ...
- poj1651 Multiplication Puzzle(简单区间dp)
题目链接:http://poj.org/problem?id=1651 题意:一系列的数字,除了头尾不能动,每次取出一个数字,这个数字与左右相邻数字的乘积为其价值, 最后将所有价值加起来,要求最小值. ...
- Photon Server 服务端编程
Photon Server 和 Unity3D 数据交互: Photon Server 服务端编程 Unity3D 客户端编程 VS2017 之 MYSQL实体数据模 一:Photon Server的 ...
- 【Offer】[68] 【树中两个结点的最低公共祖先】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 输入两个树结点,求它们的最低公共祖先. [牛客网刷题地址]无 思路分析 该题首先要确定是否为二叉树,还要确定是否为二叉搜索树,是否有父指 ...
- Ansible实现批量管理服务器
Ansible介绍: a. ansible是一个基于Python开发的自动化运维工具b. ansible是一个基于ssh协议实现远程管理的工具c. ansible软件可以实现多种批量管理操作(批量系统 ...
- angular关于Bootstrap样式不起作用问题
跟着慕课网的课程学习Angular,简直要被bootstrap的问题整死了,样式一直出不来,导航完全没有背景颜色.. 我在网上找了很多都试了,以下方法特别受用 1.把 "../node_mo ...
- .Net基础篇_学习笔记_第六天_for循环语法_正序输出和倒序输出
for TAB 和 forr TAB using System; using System.Collections.Generic; using System.Linq; using System. ...
- 多线程——Thread类
进程(Process):“正在执行的程序”,程序进入内存运行就变成了一个进程.一个进程会产生多个线程. 多线程(Multithread):一个进程中同时存在几个执行体.单线程是按照函数的顺序执行,多线 ...