文件包含

文章介绍了PHP中的文件包含漏洞,包括本地文件包含(LFI)和远程文件包含(RFI)。通过利用include和require等函数,攻击者可以注入并执行可控的代码。PHP的php://filter机制在某些情况下允许读取和编码文件内容,例如使用base64编码防止直接执行。一个具体的例子展示了如何利用这些知识来解密并获取隐藏的flag。
摘要由CSDN通过智能技术生成

简介

文件包含是php这种web开发语言的经典历史遗留漏洞,简而言之这种漏洞实质上是一种“代码注入“的攻击漏洞,原理在于注入一段用户能控制的脚本或者代码并让系统执行。

主函数有(这篇主要是关于php文件包含的):

include()

require()

include_once()

require_once()

当我们使用以上四个函数包含一个文件时,此文件将会被作为php代码执行,且php系统不会刻意过滤这个文件,由这个特性我们可以尝试向其中注入含有小马的图片(类似于文件上传),txt文档等。

类型

主要包含两大类即:本地文件包含,远程文件包含。

  1、本地文件包含

定义:能够打开并包含本地文件的漏洞称为本地文件包含漏洞,简称LFI(Local File Inclusion)

用户一般是能够控制参数file,然后对源码进行解析得到pyload的关键字进行漏洞攻克。

详情参考:本地文件包含漏洞详解_文件报告漏洞_aFa攻防实验室的博客-CSDN博客

    2、远程文件包含

定义:当PHP中的配置选项allow_url_include为ON(即在某关键变量前未设置障碍)时,include/require函数是可以加载远程文件的,此漏洞即被称为远程包含漏洞,简称RFI(Remote File Inclusion)

详情参考:7-2远程文件包含漏洞案例讲解和演示_山兔1的博客-CSDN博客

例题

1、bugku 文件包含 1

打开发现有一个click me的链接

 点进去发现回显一个index.php并且在URL栏目上出现了/index.php?file=show.php

这里打开源码发现什么都没有,由题目提示我们知道是文件包含题目,这里由回显的代码猜测出是php伪协议(参考:PHP伪协议详解_Snakin_ya的博客-CSDN博客

用到的是伪协议中的file协议,这里需要用到php://filter语句。

当php://filter语句与包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,让其不执行。从而导致 任意文件读取,从而达到想要文件包含的效果

即构造如下pyload:

?file=php://filter/resource=xxx.php

但当实操时会发现直接读取xxx.php文件时,很多信息是无法直接显示在浏览器页面上,所以我们对运用base64对文件内容进行一个小编码(由base64不可识别进行直接在浏览器页面上显示回显)

即pyload:

?file=php://filter/read=convert.base64-encode/resource=index.php

输入网址栏即可直接得到经过加密的网页php源码

 经过base64解密即得到源码发现flag就在其中

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值