php偽協議


php偽協議是ctf中的一個考點,目前比較熟悉的偽協議有php://filter, php://input, data://text/plain, file://,后續補充。

要成功應用偽協議需要php.ini文件的allow_url_fopen      默認開啟

                allow_url_include    默認關閉

file://偽協議

此協議可以在雙off的情況下使用,用於訪問本地文件

使用方法:file://文件絕對路徑和文件名    如http://127.0.0.1/cmd.php?file=file://D:/soft/phpStudy/WWW/phpcode.txt

 

data://text/plain協議

此協議需要在雙on的情況下才能使用,很常用的數據流構造器,將讀取后面base編碼字符串后解碼的數據作為數據流的輸入

使用方法:data://text/plain;base64,base64編碼字符  如http://127.0.0.1/cmd.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=

     data://text/plain,字符   如http://127.0.0.1/cmd.php?file=data://text/plain,<?php phpinfo()?>

 

php:input協議

此協議需要allow_url_include為on,可以訪問請求的原始數據的只讀流, 將post請求中的數據作為PHP代碼執行。當傳入的參數作為文件名打開時,可以將參數設為php://input,同時post想設置的文件內容,php執行時會將post內容當作文件內容。

使用方法:php://input,然后post需要執行的數據 如http://127.0.0.1/cmd.php?file=php://input    然后在post中<?php phpinfo() ?>

 

php://filter協議

在雙off的情況下也可使用,讀取文件並進行顯示或寫入

名稱 描述
resource=<要過濾的數據流> 這個參數是必須的。它指定了你要篩選過濾的數據流。
read=<讀鏈的篩選列表> 該參數可選。可以設定一個或多個過濾器名稱,以管道符(|)分隔
write=<寫鏈的篩選列表> 該參數可選。可以設定一個或多個過濾器名稱,以管道符(|)分隔
<;兩個鏈的篩選列表>

任何沒有以 read=write= 作前綴 的篩選器列表會視情況應用於讀或寫鏈。

使用方法:php://filter/read=convert.base64-encode/resource=文件名(對文件進行base64編碼並讀取顯示)  如

http://127.0.0.1/cmd.php?file=php://filter/read=convert.base64-encode/resource=./cmd.php

  參考地址:https://www.leavesongs.com/PENETRATION/php-filter-magic.html

       https://www.cnblogs.com/dubhe-/p/9997842.html

       https://www.freebuf.com/column/148886.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM