1. 程式人生 > 實用技巧 >檔案包含有關

檔案包含有關

檔案包含有關

檔案包含函式:include、include_once、require、require_once

include/require區別:對檔案包含的操作幾乎一樣除了在報錯方面有差別,include函式假如找不到所包含的檔案它會跳過執行下一條程式碼,發出警告(warning)但是對於require函式,他會出現報錯(Error)然後結束。

檔案包含防禦

  1. 使用open_basedir限制訪問在指定區域
  2. 過濾.(點)/\(斜槓 反斜槓)
  3. 禁止伺服器遠端檔案包含
  4. 儘量不要使用動態包含,可以在需要包含的頁面固定寫好

包含日誌檔案獲取webshell

windows+apache的檔案日誌路徑:D:\phpStudy\PHPTutorial\Apache\logs

Linux+apache的日誌檔案路徑:/var/log/apache2

(包含日誌檔案)

利用思路我們寫一句話木馬進行訪問,訪問後會在日誌檔案留下痕跡,然後我們在包含日誌檔案執行一句話木馬

(注:遇到網頁將我們寫的東西url編碼後寫入,我們可以burpsuite抓包修改)

檔案包含與偽協議

file偽協議

用於訪問本地檔案系統的檔案 條件:allow_url_fopen: off/on allow_url_include: off/on

php偽協議

常用的php://filterphp://input

php://filter

​ (引數如圖)

																							(過濾器如圖)

使用方法舉例:

  1. php://filter/read=string.toupper/resource=http://www.example.com

php://filter協議頭 read=讀取形式 這裡的string.toupper 是將讀出來的字串大寫形式呈現(可以多種形式重疊 中間以“|”連結) resource 接物件

  1. php://filter/write=string.rot13/resource=example.txt”,”Hello World”

(注:關於為什麼我們讀資料的時候很多時候用base64編碼後再去轉碼,假如想string.toupper這樣的讀取方式,結果輸出的其實是執行後的程式碼,而不是php原始碼,所以我們要加密後再解密去看原始碼)