PHP伪协议
一、伪协议介绍
PHP伪协议,也是php支持的协议和封装协议。
常见的有:
- file:// 访问本地文件系统
- php:// 访问各个输入/输出流
- data:// 数据
- zip:// 压缩流
不过有些伪协议需要allow_url_fopen和allow_url_include的支持。
- allow_url_fopen On/Off 允许或禁止打开URL文件
- allow_url_include On/Off 允许或禁止引用URL文件
二、file伪协议
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
<?php
$file = $_GET['file'];