PHP 伪协议

常见的php伪协议

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

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

allow_url_fopen:  off/on

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文件

<?php
error_reporting(0);
include($_GET['filename']);
?>

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

 代码执行成功

data:// 

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

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

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

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

 

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

 base64解码,得到flag

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值