• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
capybaras
博客园    首页    新随笔    联系   管理    订阅  订阅
PHP文件包含伪协议

PHP文件包含伪协议

支持伪协议的函数

include()
require()
include_once()
require_once()
highlight_file ()
show_source ()
readfile()
file_get_contents ()
fopen()
file()

php://input


使用条件:

  • php版本>=5.2
  • allow_url_fopen == off/on
  • allow_url_include == on

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 进行压缩和解压 如: php://filter/zlib.deflate|zlib.inflate/resource=flag.php
    *bzip2.compress & bzip2.decompress 进行压缩和解压,用来读取bzip2(.bz2)文件
    4.加密过滤器(PHP 7.1.0 起废弃)
  • mcrypt.*
  • mdecrypt.*

compress.zlib://

等同于gzopen(),用来读取gzip(.gz)文件,也可以读取非gzip格式的文件。

compress.bzip2://

等同于bzopen(),用来读取bzip2(.bz2)文件。

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

phar://

PHP5.3之后的版本支持类似 Java的jar包,名为phar,用来将多个PHP文件打包为一个文件。此外,还可以和tar、zip相互转化,同时可以使用phar://伪协议解析这类文件。这一特性给我们留下了可以利用的空间。
用法:
phar://压缩包路径/压缩内容
列如:
我们有a.php和b.php将他们打包成一个1.zip文件,将1.zip文件上传至服务器当然如果上传有限制,如只能上传图片后缀文件,只需将1.zip改成1.jpg这类,phar://1.jpg同样会将其当作压缩文件处理。
以下是文件包含代码

<?php include($_GET[1])?>

我们上传phar://1.zip/a.php,就可以执行a.php,同理也可以执行b.php。1.zip改为1.jpg同样也可以

posted on 2024-10-01 21:05  Hack_Tea  阅读(104)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3