PHP文件包含伪协议
支持伪协议的函数
include()
require()
include_once()
require_once()
highlight_file ()
show_source ()
readfile()
file_get_contents ()
fopen()
file()
1.php://input
使用条件:
- php版本>=5.2
- allow_url_fopen == off/on
- allow_url_include == on
2.php://filter
使用条件:
- php版本>=5.2
- allow_url_fopen == on/off
- allow_url_include == on/off
使用方法:
读:php://filter/read=convert.base64-encode/resource=文件名
写:php://filter/write=convert.base64-encode/resource=文件名
过滤器:
1.字符串过滤器(string.*)- string.rot13:进行rot13加解密
- string.toupper:字母转大写
- string.tolower:字母转小写
- string.strip_tags(PHP 7.3.0 起废弃):去除HTML和PHP中的内容
2.转换过滤器(convert.*)
- base64-encode & convert.base64-decode:进行base64加密解密
- convert.quoted-printable-encode & convert.quoted-printable-decode:在字符串后面加=0A
- convert.iconv.* :进行编码直接转换
语法:convert.iconv.<input-encoding>.<output-encoding> 或 convert.iconv.<input-encoding>/<output-encoding>
可转换编码:
UCS-4*
UCS-4BE
UCS-4LE*
UCS-2
UCS-2BE
UCS-2LE
UTF-32*
UTF-32BE*
UTF-32LE*
UTF-16*
UTF-16BE*
UTF-16LE*
UTF-7
UTF7-IMAP
UTF-8*
ASCII*
详细见:https://www.php.net/manual/en/mbstring.supported-encodings.php
3.压缩过滤器(zlib.* & bzip2.*)
*zlib.deflate & zlib.inflate 进行压缩和解压
*bzip2.compress & bzip2.decompress 上述相同
4.加密过滤器(PHP 7.1.0 起废弃) - mcrypt.*
- mdecrypt.*
3.file://
使用条件:
- php版本>=5.2
- allow_url_fopen == on/off
- allow_url_include == on/off
4.data://
使用条件:
- php版本>=5.2
- allow_url_fopen == on
- allow_url_include == on
语法
data://text/plain;base64,poc
data://text/plain,poc