您现在的位置是:首页 > 技术教程 正文

PHP 伪协议

admin 阅读: 2024-03-17
后台-插件-广告管理-内容页头部广告(手机)

常见的php伪协议

  • file://                         访问本地文件系统
  • php://                        访问输入输出流
  • data://                       数据流的读取
  • zip://                          压缩流
  • phar://                        PHP归档
  • ......

 file:// --访问本地文件系统

  1. allow_url_fopen:  off/on
  2. allow_url_include:  off/on

file://在双off条件下也能使使用

使用方法:

http://xxx.xxx.xxx/index.php?filename=file://xxx/xxx/xxx.php

php://  --访问输入输出流

PHP输入和输出流是通过php://来访问的,它允许访问 PHP 的输入输出流、标准输入输出和错误描述符, 内存中、磁盘备份的临时文件流以及可以操作其他读取写入文件资源的过滤器。

php://stdin, php://stdout 和 php://stderr

php://filter 

-- 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。 这对于一体式(all-in-one)的文件函数非常有用,类似 readfile()、 file() 和 file_get_contents(), 在数据流内容读取之前没有机会应用其他过滤器

 当allow_url_include=on时,并且存在文件包含漏洞时,可以使用php://fileter直接把文件显示出来

例如:

http://xxx.xxx.xxx/index.php?filename=php://filter/read=convert.base64-encode/resource=xxx.php
  • php://filter  一种访问本地文件的协议
  • read=convert.base64-encode   表示读取的方式时base64编码(如果不进行编码,文件中的代码会直接运行,就不能看见代码内容了)
  • resource=xxx.php  表示读取的文件

 php://input  --访问原始数据的只读流,读取POST参数内容

简单来说就是当$_GET参数被包含时,并且我们可以自由控制$_GET参数的输入, 就能将$_POST 发送的代码执行

例如:这有一个存在包含漏洞的1.php文件

  1. <?php
  2. error_reporting(0);
  3. include($_GET['filename']);
  4. ?>

利用php://input 将我们要执行代码用post方式传入 

 代码执行成功

data:// 

php 5.2.0 起,数据流封装器开始有效,主要用于数据流的读取,如果传入的数据是PHP代码就会执行代码。使用方法为:

data://text/plain;base64,xxxx(base64编码后的数据)

 还是使用1.php文件实验,将要执行的代码进行base64编码后,使用data://伪协议,代码执行成功

 php:// 伪协议在CTF的使用

  • Bugku 文件包含

    目录

    常见的php伪协议

     file:// --访问本地文件系统

    php://  --访问输入输出流

    php://filter 

     php://input  --访问原始数据的只读流,读取POST参数内容

    data:// 

     php:// 伪协议在CTF的使用

    Bugku 文件包含


 

提示我们线索在index.php 中  使用php://filter  查看源代码

 base64解码,得到flag

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索
排行榜