您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)Mysql注入中outfile、dumpfile、load_file函數(shù)的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
在利用sql注入漏洞后期,最常用的就是通過mysql的file系列函數(shù)來進(jìn)行讀取敏感文件或者寫入webshell,其中比較常用的函數(shù)有以下三個
into dumpfile()
into outfile()
load_file()
我們本次的測試數(shù)據(jù)如下
讀寫文件函數(shù)調(diào)用的限制
因為涉及到在服務(wù)器上寫入文件,所以上述函數(shù)能否成功執(zhí)行受到參數(shù) secure_file_priv
的影響。官方文檔中的描述如下
翻譯一下就是
其中當(dāng)參數(shù) secure_file_priv
為空時,對導(dǎo)入導(dǎo)出無限制
當(dāng)值為一個指定的目錄時,只能向指定的目錄導(dǎo)入導(dǎo)出
當(dāng)值被設(shè)置為NULL時,禁止導(dǎo)入導(dǎo)出功能
這個值可以通過命令 select @@secure_file_priv
查詢。由于這個參數(shù)不能動態(tài)更改,只能在mysql的配置文件中進(jìn)行修改,然后重啟生效。
dumpfile與outfile的區(qū)別
導(dǎo)出數(shù)據(jù)庫場景下的差異
select …… into outfile
我們先來看一下mysql官方文檔里對于這兩個函數(shù)的解釋
其中有兩個值得注意的坑點
outfile函數(shù)可以導(dǎo)出多行,而dumpfile只能導(dǎo)出一行數(shù)據(jù)
outfile函數(shù)在將數(shù)據(jù)寫到文件里時有特殊的格式轉(zhuǎn)換,而dumpfile則保持原數(shù)據(jù)格式
我們接下來通過導(dǎo)出測試看看這里面的細(xì)節(jié)
首先通過命令 select * from test into outfile '/tmp/test.txt'
來使用outfile導(dǎo)出
可以看到文件 /tmp/test.txt
文件中保存了所有的數(shù)據(jù)并且在一行數(shù)據(jù)的末尾自動換行
通過查看官方文檔,可以看出使用如下參數(shù)可以進(jìn)行格式調(diào)整
其中 FIELDS ESCAPED BY
可以用來對指定的字符進(jìn)行轉(zhuǎn)義, FIELDS [OPTIONALLY] ENCLOSED BY
用來對字段值進(jìn)行包裹, FIELDS TERMINATED BY
用來對字段值之間進(jìn)行分割
例如使用如下命令 select * from test into outfile '/tmp/test.txt FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY ' " 'LINES TERMINATED BY '\n'
得到的導(dǎo)出文件如下
select …… into dumpfile
而接著使用命令 select * from test into dumpfile '/tmp/test.txt'
使用dumpfile進(jìn)行導(dǎo)出
可以看到此命令在執(zhí)行的時候提示輸出超過一行
查看文件內(nèi)容
可以看見通過dumpfile導(dǎo)出的數(shù)據(jù)行數(shù)據(jù)之間并未進(jìn)行換行且只導(dǎo)出了部分?jǐn)?shù)據(jù)
寫入webshell或者udf下的差異
select …… into outfile
我們使用命令 select 'a\naa\raaaa' into outfile '/tmp/test.txt'
來看一下在常用的寫文件場景下的結(jié)果
可以看到outfile對導(dǎo)出內(nèi)容中的\n等特殊字符進(jìn)行了轉(zhuǎn)義,并且在文件內(nèi)容的末尾增加了一個新行
我們接著使用命令 select 'a\naa\raaaa' into dumpfile '/tmp/test.txt'
來看一下
可以看到dumpfile對文件內(nèi)容是原意寫入,未做任何轉(zhuǎn)移和增加。這也就是為什么 我們在平常的UDF提權(quán)中使用dumpfile進(jìn)行dll文件
寫入的原因
還有一個需要關(guān)注的點就是:outfile后面不能接0x開頭或者char轉(zhuǎn)換以后的路徑,只能是單引號路徑。這個問題在php注入中更加麻煩,因為會自動將單引號轉(zhuǎn)義成\',那么基本就GG了,但是load_file,后面的路徑可以是單引號、0x、char轉(zhuǎn)換的字符,但是路徑中的斜杠是/而不是\
關(guān)于“Mysql注入中outfile、dumpfile、load_file函數(shù)的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。