目录
一、前提条件
1.对web目录具有读写权限
2.知道文件绝对路径
3.能够使用联合查询
(一)查看导入导出权限配置
mysql> show variables like "secure_file_priv";
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| secure_file_priv | NULL |
+------------------+-------+
1 row in set (0.03 sec)
(二)查看当前用户
mysql> select current_user();
+----------------+
| current_user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.02 sec)
(三)查看当前用户的文件读写权限
mysql> select file_priv from mysql.user where user='root' and host='localhost';
+-----------+
| file_priv |
+-----------+
| Y |
+-----------+
1 row in set (0.04 sec)
(四)为实验修改配置重启服务
[root@centos ~]# vi /etc/my.cnf
#在mysqld段加入以下第3行内容
#secure_file_prive=null #限制mysqld 不允许导入导出#默认没有配置即为该项效果
#secure_file_priv=/tmp/ #限制mysqld的导入导出只能发生在/tmp/目录下
secure_file_priv='' #不对mysqld 的导入导出做限制
[root@centos ~]# service mysqld restart
Shutting down MySQL.. SUCCESS!
Starting MySQL.. SUCCESS!
(五)检查配置效果
mysql> show variables like "secure_file_priv";
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| secure_file_priv | |
+------------------+-------+
1 row in set (0.00 sec)
二、读写文件测试
(一)生成测试文件
[root@centos ~]# touch /flag
[root@centos ~]# echo flag{test_flag} > /flag
[root@centos ~]# cat /flag
flag{test_flag}
(二)读取文件
mysql> select load_file('/flag');
+--------------------+
| load_file('/flag') |
+--------------------+
| flag{test_flag} |
+--------------------+
1 row in set (0.00 sec)
(三)写入文件
mysql> select 'newflag{test_flag_new}' into outfile '/tmp/newflag';
Query OK, 1 row affected (0.00 sec)
outfile与dumpfile的区别:
1.dumpfile适用于二进制文件,它会将目标文件吸入同一行内
2.outfile则更适用于文本文件
(四)检查写入效果
[root@centos ~]# cat /tmp/newflag
newflag{test_flag_new}