php伪协议

本文详细介绍了PHP伪协议的使用,包括file://、http://、ftp://等,以及在安全设置关闭时如何利用php://filter和php://input进行代码执行。还讨论了在特定条件下如何通过zip://协议读取并执行压缩文件中的代码,强调了文件包含漏洞的潜在风险。
摘要由CSDN通过智能技术生成
  1. 什么是php伪协议?
    PHP伪协议事实上就是支持的协议与封装协议,主要包括以下当然还有其他。

a. file:// — 访问本地文件系统

b. http:// — 访问 HTTP(s) 网址

c. ftp:// — 访问 FTP(s) URLs

d. php:// — 访问各个输入/输出流(I/O streams)

e. zlib:// — 压缩流

2.当源程序有可控的文件包含函数时,我们就可以利用这些协议,常见的文件包含函数:
1、include 2、require 3、include_once 4、require_once 5、highlight_file 6、show_source 7、readfile 8、file_get_contents 9、fopen 10、file

3.我们在本地创建一个可控函数,在目录放置以下文件
在这里插入图片描述
在这里插入图片描述
4.先了解一下file:\
当allow_url_include、 allow_url_fopen 都是off时,file:\函数也是可以用的,但是要具体路径
例子:file://D:/soft/phpStudy/WWW/XXX.txt
在这里插入图片描述
在这里插入图片描述

4.php://filter 在allow_url_fopen、allow_url_include都是off可以用来读取源代码,但是要编码之后才可以
例子:php://filter/read=convert.base64-encode/resource=XXX.php

在这里插入图片描述
5.php://input可以访问请求的原始数据的只读流, 将post请求中的数据作为PHP代码执行。

allow_url_fopen :off/on

allow_url_include:on

在这里插入代码片<?php
 
$d = file_get_contents('php://input');
 
//echo $d;
 
@eval($d)
 
?>

在这里插入图片描述

<?php @include($_GET[“file”]); ?>

在这里插入图片描述
6.PHP.ini:

zip://, bzip2://, zlib://协议在双off的情况下也可以正常使用;

allow_url_fopen :off/on

allow_url_include:off/on
zip://, bzip2://, zlib:// 均属于压缩流,可以访问压缩文件中的子文件,更重要的是不需要指定后缀名。
例子ttp://127.0.0.1/cmd.php?file=zip://D:/soft/phpStudy/WWW/file.jpg%23phpcode.txt

  • zip:// [压缩文件绝对路径]#[压缩文件内的子文件名]
    先将要执行的PHP代码写好文件名为phpcode.txt,将phpcode.txt进行zip压缩,压缩文件名为file.zip,如果可以上传zip文件便直接上传,若不能便将file.zip重命名为file.jpg后在上传,其他几种压缩格式也可以这样操作。

  • 由于#在get请求中会将后面的参数忽略所以使用get请求时候应进行url编码为%23,且此处经过测试相对路径是不可行,所以只能用绝对路径。
    在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值