檔案包含有關
阿新 • • 發佈:2020-09-15
檔案包含有關
檔案包含函式:include、include_once、require、require_once
include/require區別:對檔案包含的操作幾乎一樣除了在報錯方面有差別,include函式假如找不到所包含的檔案它會跳過執行下一條程式碼,發出警告(warning)但是對於require函式,他會出現報錯(Error)然後結束。
檔案包含防禦
- 使用open_basedir限制訪問在指定區域
- 過濾.(點)/\(斜槓 反斜槓)
- 禁止伺服器遠端檔案包含
- 儘量不要使用動態包含,可以在需要包含的頁面固定寫好
包含日誌檔案獲取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://filter 和 php://input
php://filter
(引數如圖)
(過濾器如圖)
使用方法舉例:
- php://filter/read=string.toupper/resource=http://www.example.com
php://filter協議頭 read=讀取形式 這裡的string.toupper 是將讀出來的字串大寫形式呈現(可以多種形式重疊 中間以“|”連結) resource 接物件
- php://filter/write=string.rot13/resource=example.txt”,”Hello World”
(注:關於為什麼我們讀資料的時候很多時候用base64編碼後再去轉碼,假如想string.toupper這樣的讀取方式,結果輸出的其實是執行後的程式碼,而不是php原始碼,所以我們要加密後再解密去看原始碼)