目錄
-
前言
常見的PHP偽協議
php://input
php://filter
zip://與bzip2://與zlib://協議
data://
phar://
php小編香蕉為您介紹php偽協議基本原理。偽協議是php的一個特性,它允許通過url訪問和操作不同資源,如文件、數據庫、網絡等。偽協議的基本原理是通過特定的url格式來表示不同資源,并將其轉化為合適的處理方式。通過偽協議,我們可以方便地訪問和操作各種資源,為開發提供了更多的靈活性和便利性。下面我們就來詳細了解一下php偽協議的基本原理。
前言
引用一張比較清晰易懂的圖
php偽協議是php自己支持的一種協議與封裝協議,簡單來說就是php定義的一種特殊訪問資源的方法。
php小編香蕉為您介紹php偽協議基本原理。偽協議是php的一個特性,它允許通過url訪問和操作不同資源,如文件、數據庫、網絡等。偽協議的基本原理是通過特定的url格式來表示不同資源,并將其轉化為合適的處理方式。通過偽協議,我們可以方便地訪問和操作各種資源,為開發提供了更多的靈活性和便利性。下面我們就來詳細了解一下php偽協議的基本原理。
常見的php偽協議
php小編香蕉為您介紹php偽協議基本原理。偽協議是php的一個特性,它允許通過url訪問和操作不同資源,如文件、數據庫、網絡等。偽協議的基本原理是通過特定的url格式來表示不同資源,并將其轉化為合適的處理方式。通過偽協議,我們可以方便地訪問和操作各種資源,為開發提供了更多的靈活性和便利性。下面我們就來詳細了解一下php偽協議的基本原理。
php://input
php://input 是個可以訪問請求的原始數據的只讀流,獲取POST請求數據的協議
當enctype=”multipart/fORM-data” 的時候 php://input 是無效的。
要使php://input 成功使用還需要配置php.ini 中的 allow_url_include設置為On
案例代碼
php <?php @include($_GET["file"]); ?>
登錄后復制
構造執行的代碼,輸出結果
php小編香蕉為您介紹php偽協議基本原理。偽協議是php的一個特性,它允許通過url訪問和操作不同資源,如文件、數據庫、網絡等。偽協議的基本原理是通過特定的url格式來表示不同資源,并將其轉化為合適的處理方式。通過偽協議,我們可以方便地訪問和操作各種資源,為開發提供了更多的靈活性和便利性。下面我們就來詳細了解一下php偽協議的基本原理。
php://filter
php://filter 是一種元封裝器, 設計用于數據流打開時的篩選過濾應用。 這對于一體式(all-in-one)的文件函數非常有用,類似 readfile()、 file() 和 file_get_contents(), 在數據流內容讀取之前沒有機會應用其他過濾器。
在利用上很多都是與包含函數結合使用,讀入或者輸出獲取文件源碼然后編碼讓其不執行從而輸出
php://filter 的使用:如
php://filter/read=convert.base64-encode/resource=index.php
php://filter/resource=index.phpphp://filter 偽協議組成:
read=
resource=
write=php://filter/read=處理方式(base64編碼,rot13等等)/resource=要讀取的文件
read 對應要設置的過濾器:
常見的過濾器分字符串過濾器、轉換過濾器、壓縮過濾器、加密過濾器
其中convert.base64-encode ,convert.base64-decode都屬于 轉換過濾器
例
<?php $a=($_GET["file"]); echo(file_get_contents($a));//獲取文件內容 ?>
登錄后復制
訪問輸出base64編碼后的內容
php小編香蕉為您介紹php偽協議基本原理。偽協議是php的一個特性,它允許通過url訪問和操作不同資源,如文件、數據庫、網絡等。偽協議的基本原理是通過特定的url格式來表示不同資源,并將其轉化為合適的處理方式。通過偽協議,我們可以方便地訪問和操作各種資源,為開發提供了更多的靈活性和便利性。下面我們就來詳細了解一下php偽協議的基本原理。
zip://與bzip2://與zlib://協議
zip:// 等屬于壓縮流的協議,通過直接壓縮普通文件為zip文件,再通過zip:// 協議讀取,可以直接執行php代碼。壓縮后的zip文件可以隨意修改后綴也不影響zip://協議讀取。(注意是如phpinfo.txt直接壓縮為zip,而不是文件夾壓縮zip)
例:
<?php $a=($_GET["file"]); include($a); ?>
登錄后復制登錄后復制
壓縮及協議訪問格式:
壓縮文件為.zip后綴
zip://絕對路徑/phpinfo.zip%23phpinfo.php
壓縮文件為.bz2后綴
compress.bzip2://絕對路徑/phpinfo.zip/phpinfo.php
壓縮文件為.gz后綴
compress.zlib://絕對路徑/phpinfo.zip/phpinfo.php
zip://訪問
php小編香蕉為您介紹php偽協議基本原理。偽協議是php的一個特性,它允許通過url訪問和操作不同資源,如文件、數據庫、網絡等。偽協議的基本原理是通過特定的url格式來表示不同資源,并將其轉化為合適的處理方式。通過偽協議,我們可以方便地訪問和操作各種資源,為開發提供了更多的靈活性和便利性。下面我們就來詳細了解一下php偽協議的基本原理。
data://
data://協議與php://input 有很點相似的地方。他們都可以通過請求提交的php代碼數據配合文件包含函數可以達到代碼執行效果,data:// 的成功執行需要php.ini設置allow_url_include 與allow_url_open都為On。
data://協議的格式是: data://數據流封裝器,相應格式數據
常見的用法為
data://,
data://text/plain,
data://text/plain;base64,PD9waHAGCGhwaW5mbygpOz8%2b
例:
<?php $a=($_GET["file"]); include($a); ?>
登錄后復制登錄后復制
構造data:// 訪問
php小編香蕉為您介紹php偽協議基本原理。偽協議是php的一個特性,它允許通過url訪問和操作不同資源,如文件、數據庫、網絡等。偽協議的基本原理是通過特定的url格式來表示不同資源,并將其轉化為合適的處理方式。通過偽協議,我們可以方便地訪問和操作各種資源,為開發提供了更多的靈活性和便利性。下面我們就來詳細了解一下php偽協議的基本原理。
phar://
phar://偽協議在前面phar反序列化的時候學習過,phar也可以對zip格式壓縮包進行訪問解析。
格式為:phar://絕對路徑\phpinfo.zip\phpinfo.php