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系统表的利用姿势(浅探)的更多相关文章

  1. mysql系统表加trigger和对特定的库禁用 DDL 语句

    给 mysql 系统表加上 trigger 1 Reply 默认情况下,mysql 是不能给系统表,例如 mysql.user 加上触发器的.会提示 ERROR 1465 (HY000): Trigg ...

  2. mysql 系统表的作用

    mysql 的系统表记录了所有数据库表(包括视图的定义语句)的字段列,顺序,类型等等,知道这些的话可以做些抽取模板淫荡的操作吧 嘿嘿  public void shuaxinglb() { try { ...

  3. 常用mysql系统表及命令

    常用系统表查看当前数据库连接ip信息– select * from information_schema.PROCESSLIST 当前mysql实例中所有数据库的信息– select * from i ...

  4. mysql系统库INFORMATION_SCHEMA,MySQL,TEST,mysql系统表的作用

    本文简要说明了MySQL数据库安装好后自带的INFORMATION_SCHEMA,MySQL,TEST三个数据库的用途. 第一个数据库INFORMATION_SCHEMA: 提供了访问数据库元数据的方 ...

  5. SqlServer与MySql 系统表查询自建表数据

    SqlServer: SELECT * FROM sys.sysobjects WHERE type='U' ORDER BY name SELECT * FROM sys.syscolumns WH ...

  6. sql数据库系统表和mysql系统表

    sql数据库系统表,常用的(sysobjects,sysindexes,sysindexkeys,SYSCOLUMNS,SYSTYPES 及更多解释说明): https://docs.microsof ...

  7. Mysql 系统表

    Information_schema: 1. tables 提供表信息: 表所属数据库,表名,表类型,行数,最大自增数等等.

  8. 【转】利用optimize、存储过程和系统表对mysql数据库表进行批量碎片清理释放表空间

    本文收集于本人的笔记本,由于找不到原文出处.在此省略,如哪位知道可以联系我加上. 核心是利用mysql系统表和“optimize table 表名”命令,对mysql数据表进行空间的释放.由于dele ...

  9. centos/windows服务器,Mysql数据库表结构损坏-已解决

    [问题原因]服务器突然断电 [故障报告]数据库表结构损坏 [解决思路]进入强制恢复模式,备份库表及数据重建 故障发现 周末公司断电,周一启动数据库就直接报错了 查看日志 上面标记的log,明确表示是非 ...

随机推荐

  1. cogs 1199选课(树形dp 背包或多叉转二叉

    http://cogs.pro:8080/cogs/problem/problem.php?pid=vQyiJkkPP 题意:给m门课,每门课在上完其先修课后才能上,要你从中选n门课使得总学分尽可能大 ...

  2. CodeForces 988 F Rain and Umbrellas

    Rain and Umbrellas 题意:某同学从x=0的点走到x=a的点,路上有几段路程是下雨的, 如果他需要经过这几段下雨的路程, 需要手上有伞, 每一把伞有一个重量, 求走到重点重量×路程的最 ...

  3. hdu 2895 01背包 Robberies

    Robberies Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  4. 【Offer】[8] 【中序遍历的下一个结点】

    题目描述 思路分析 Java代码 代码链接 题目描述 给定一棵二叉树和其中的一个结点,如何找出中序遍历顺序的下一个结点? 树中的结点除了有两个分别指向左右子结点的指针以外,还有一个指向父结点的指针. ...

  5. Oracle 11g Rac 用rman实现把本地数据文件迁移到ASM共享存储中

    在Oracle Rac环境中,数据文件都是要存放在ASM共享存储上的,这样两个节点才能同时访问.而当你在某一节点下把数据文件创建在本地磁盘的时候,那么在另一节点上要访问该数据文件的时候就会报错,因为找 ...

  6. 005 Python开发环境配置

    目录 一.概述 二.Python语言概述 2.1 Python语言的诞生 2.2 Monty Python组合 三.Python语言系统开发环境配置 四.Python程序编写与运行 4.1 Pytho ...

  7. Git使用教程 Windows使用Git全攻略

    在Windows上安装Git 我们需要先把Git的安装包下载下来,访问网址:https://git-for-windows.github.io/ 或者百度网盘:链接: https://pan.baid ...

  8. 为什么说 Java 程序员必须掌握 Spring Boot ?(转)

    Spring Boot 2.0 的推出又激起了一阵学习 Spring Boot 热,那么, Spring Boot 诞生的背景是什么?Spring 企业又是基于什么样的考虑创建 Spring Boot ...

  9. spring boot使用guava缓存

    1.pom中插入依赖: <!--guava缓存cache--> <dependency> <groupId>com.google.guava</groupId ...

  10. 面试贴:java异常小结

    java的异常处理在面试中通常是个敏感的话题,这里我从整体框架方面稍微作一下我的小结. java的异常都继承Throwable这个类,也就是都可以抛出来的异常,在这个祖先类下,又分为如下子类: 1.E ...