文件包含 [SWPUCTF 2021 新生赛]include

打开题目

要求我们传入一个file进去,那我们get传入

/?file=1

 得到源码,并且提示我们flag在flag,php下

在源代码中,我们看见了allow_url_include函数,我们知道这涉及到文件包含。

一般默认allow_url_fopen是on的,那在这里告诉了我们allow_url_include也是on的,那我们就可以对url的文件当作代码执行。

那我们用php伪协议读取一下flag

payload:

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

得到一串base64编码

我们base64解码一下

得到flag

知识点:

  • 文件包含漏洞—allow_url_fopen和allow_url_include

概念:在文件包含漏洞中,PHP脚本环境中php.ini文件中通常会涉及到allow_url_fopen和allow_url_include两个参数,两个参数的开启或关闭影响文件包含漏洞的利用。

参数简介:

allow_url_fopen参数

简介:是否允许将URL(HTTP,HTTPS等)作为文件打开处理。

allow_url_fopen 它决定了 PHP 是否能够通过 URL (而非本地文件路径) 来打开文件 ,当 allow_url_fopen 是 On时,函数可 读取 或 写入 远程文件,如 fopen() 和 file_get_contents()。而为 Off 时,这些函数 只能用于操作本地文件。

allow_url_include参数

简介:是否允许includeI()和require()函数包含URL(HTTP,HTTPS)作为文件处理

在 PHP 中,file 协议的使用不受 allow_url_fopen 配置项的控制

allow_url_include 的生效依赖于 allow_url_fopen 配置项的开启。具体而言,当 allow_url_include 与 allow_url_fopen 两个配置项均被开启时,allow_url_include 才能够发挥作用。若仅有 allow_url_include 配置项被开启,则无法发挥 allow_url_include 配置项所起到的功能。
 

在开启 allow_url_fopen 配置项后,PHP 仅能够对远程文件进行读写等文件操作
在开启 allow_url_include 配置项后,PHP 将能够通过 include 等函数 将远程文件包含至当前文件并将其作为 PHP 代码进行执行

  • file协议

File协议主要用于访问本地计算机中的文件,就如同在Windows资源管理器中打开文件一样

基本格式:file:///文件路径

例如,我下访问本机桌面上的一张图片

 

知识点参考:

PHP 行事准则:allow_url_fopen 与 allow_url_include-CSDN博客

  • 23
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值