//所有測試均allow_url_fopen=on,allow_url_include=on!!!
php://input
是個可以訪問請求的原始資料的唯讀流。 post 請求的情況下,最好使用 php://input
來代替 $http_raw_post_data
,因為它不依賴於特定的 php.ini
指令。 而且,這樣的情況下 $http_raw_post_data
預設沒有填充, 比啟用 always_populate_raw_post_data 潛在需要更少的記憶體。 enctype=」multipart/form-data」
的時候 php://input
是無效的。
——php.net
簡單說就是獲取post資料。
測試**:
檔案包含變命令執行:
測試**:
寫一句話:
是一種元封裝器, 設計用於資料流開啟時的篩選過濾
應用。 這對於一體式(all-in-one)的檔案函式非常有用,類似 readfile()
、 file()
和 file_get_contents()
, 在資料流內容讀取之前沒有機會應用其他過濾器。
——php.net
簡單說經常利用它進行base64編碼,如
php://filter/read=convert.base64-encode/resource=file:///c:/windows/win.ini」
可以運用多種過濾器(字串/轉換/壓縮/加密)
常用於讀取檔案/原始碼:
的功能類似 gzopen()
,但是 其資料流還能被 fread()
和其他檔案系統函式使用。 自 php 4.3.0 後這個不建議被使用,因為會和其他帶「:」字元的檔名混淆; 請使用 compress.zlib://
作為替代。
compress.zlib://
、 compress.bzip2://
和 gzopen()
、bzopen()
是相等的。並且可以在不支援 fopencookie 的系統中使用。
zip 擴充套件
註冊了 zip:
封裝器。 自 php 7.2.0 和 libzip 1.2.0+ 起,加密歸檔開始支援密碼,允許資料流中使用密碼。 位元組流上下文(stream contexts)中使用 『password』
選項設定密碼。
——php.net
簡單說就是直接訪問壓縮包裡的檔案。
1. zip://
將phpinfo.txt壓縮成zip,實戰中可以改字尾為jpg繞過上傳限制。
注意要用絕對路徑+url編碼#
改字尾為jpg亦可,相對路徑亦可。
3.bzip2://
同理於zlib://
不加//亦可。
也可以用來讀php檔案原始碼:
data:text/plain,<?php system(『cat /var/www/phprotocol1.php』)?>
或者命令執行:
data:text/plain,<?php system(『whoami』)?>
ctf中常利用php偽協議,實戰中或許會有奇效。
php偽協議利用 總結
ctf比賽中經常會出現例用偽協議的web類題目,近期在進行rce剛好總結一下。flie 用來訪問本地的檔案,只能傳入絕對路徑 一步到底的檔案 file file flie phpinfo.txt php php filter cmd php filter read convert.base64 en...
web偽協議總結
allow url fopen 開啟檔案 通常設定為on,使得可以訪問 url 物件檔案等。allow url include 引用檔案 通常設定為off,包含url 物件檔案等 均可在配置檔案,php.ini中檢視 通常位置 usr local php lib data 訪問本地檔案系統 例項 1...
檔案包含與PHP偽協議實戰演練
1 include require 當使用include 函式包含檔案時,只有 執行到 include 函式時才將檔案包含進來,發生錯誤時只給出乙個警告,繼續向下執行。當使用require 函式包含檔案時,只要程式一執行就會立即呼叫檔案,發生錯誤的時候會輸出錯誤資訊,並且終止指令碼的執行 2 inc...