php偽協議分析與CTF例題講解

2022-02-19 09:29:22 字數 2206 閱讀 9501

1,php://filter  設計用來過濾篩選檔案

使用方法:非php語法檔案include失敗,直接輸出原始碼內容。

php://

filter/resource=需要包含的檔案

還有一種使用方法是:以讀的形式,將需要包含的檔名轉化為base64編碼的方式進行讀取,這樣傳入至include函式的檔名不會被誤以為是php執行檔案而執行,而是以base64編碼方式顯示原始碼

php://

filter/read=convert.base64-encode/resouece=需要包含的檔案

file:// 與php:filter類似,訪問本地檔案,但是只能傳入絕對路徑

使用絕對路徑與相對路徑均可

1,只能傳入絕對路徑。

2,要用#分隔壓縮包和壓縮包裡的內容,並且#要用url編碼%23

1,直接寫入**

data: text/plain,<?php 執行內容 ?>
2、base64編碼後寫入**

data:text/plain;(注意是分號不是逗號,與前面不同)base64,編碼後的php**

注:有一點要注意的問題,base64編碼後的加號和等號要手動的url編碼,否則無法識別。如下圖所示:

include中也可以傳入外部鏈結,採用http://

關於allow_url_fopen和allow_url_include的設定和用法總結:

除去php://;使用data://偽協議的方式,

首先檢視根目錄,列印根路徑的檔案有哪些

file_get_contents — 將整個檔案讀入乙個字串

htmlspecialchars — 將特殊字元轉換為 html 實體輸出,可獲取flag

PHP偽協議總結

所有測試均allow url fopen on,allow url include on php input 是個可以訪問請求的原始資料的唯讀流。post 請求的情況下,最好使用 php input 來代替 http raw post data 因為它不依賴於特定的 php.ini 指令。而且,這樣...

php偽協議利用 總結

ctf比賽中經常會出現例用偽協議的web類題目,近期在進行rce剛好總結一下。flie 用來訪問本地的檔案,只能傳入絕對路徑 一步到底的檔案 file file flie phpinfo.txt php php filter cmd php filter read convert.base64 en...

檔案包含與PHP偽協議實戰演練

1 include require 當使用include 函式包含檔案時,只有 執行到 include 函式時才將檔案包含進來,發生錯誤時只給出乙個警告,繼續向下執行。當使用require 函式包含檔案時,只要程式一執行就會立即呼叫檔案,發生錯誤的時候會輸出錯誤資訊,並且終止指令碼的執行 2 inc...