博客
关于我
php伪协议利用文件包含漏洞
阅读量:678 次
发布时间:2019-03-16

本文共 1303 字,大约阅读时间需要 4 分钟。

php支持多种封装协议,这些协议常被CTF出题中与文件包含漏洞结合,这里做个小总结。实验用的是DVWA平台,low级别,phpstudy中的设置为5.4.45版本
设置allow_url_fopen和allow_url_include都为On.

index.php
在这里插入图片描述
index.php同级目录下有mytest001.txt

mytest002.txt
在这里插入图片描述
mytest003…txt
在这里插入图片描述
再说明一下,include()函数对文件后缀名无要求,而对其中的语法有要求,即使后缀名为txt,jpg也会被当做php文件解析,只要文件内是<?php ?>形式就可以执行,但是如果不是php语法的形式,即使后缀为php,也无法执行。

一,php:// 访问输入输出流,有两个常用的子协议
1,php://filter 设计用来过滤筛选文件
用法

非php语法文件include失败,直接输出源码内容。
在这里插入图片描述
php语法文件include成功,直接运行
在这里插入图片描述
如果想要读取运行php文件的源码,可以先base64编码,再传入include函数,这样就不会被认为是php文件,不会执行,会输出文件的base64编码,再解码即可。
在这里插入图片描述
在这里插入图片描述
若采用rot13编码,对php文件中的<?是无效的,仍会被认为是php文件去执行,但其中的内容是乱码的,是没有输出效果的。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
2,php://input
这个协议的利用方法是 将要执行的语法php代码写在post中提交,不用键与值的形式,只写代码即可。

在这里插入图片描述
如果可以自己构造代码,就可以看到更重要的信息:
在这里插入图片描述
二,file:// 与php:filter类似,访问本地文件,但是只能传入绝对路径
在这里插入图片描述
三,phar:// 可以查找指定压缩包内的文件
1,传入绝对路径
在这里插入图片描述
2,传入相对路径,即同级目录下的文件
在这里插入图片描述
四,zip:// 用法与phar类似,不过有两点要注意
1,只能传入绝对路径。

2,要用#分隔压缩包和压缩包里的内容,并且#要用url编码%23
在这里插入图片描述
五,data 与input 类似,都是用户可以控制传入的php代码
1,直接写入代码
data: text/plain,<?php 执行内容 ?>
在这里插入图片描述
2,使用base64编码
data:text/plain;(注意是分号不是逗号,与前面不同)base64,编码后的php代码
在这里插入图片描述
有一点要注意的问题,base64编码后的加号和等号要手动的url编码,否则无法识别。

在这里插入图片描述
同样的,给了自己写代码的权利,就可看到更多东西
在这里插入图片描述
六,http协议
include中也可以传入外部链接,采用http://,具体怎么利用以后再来填坑。
在这里插入图片描述
最后来总结一下,

php://filter file:// 可以访问本地的文件

zip:// phar:// 可以访问本地压缩文件

php://input data: 可以自己写入php代码

关于allow_url_fopen和allow_url_include的设置和用法这里有个总结:
在这里插入图片描述
参考:http://www.freebuf.com/column/148886.html
https://www.cnblogs.com/Spec/p/11137030.html

你可能感兴趣的文章
《我的世界》Python编程入门(5) 租金游戏
查看>>
《我的世界》Python编程入门(7) 使用Python中的for循环语句放置多个方块
查看>>
多余元素删除之移位算法
查看>>
linux -----创建用户 ,群组,权限
查看>>
Linux自学之旅-基础命令(管道符 | )
查看>>
Linux自学之旅-基础命令(系统痕迹之who命令)
查看>>
HCIA(计算机网络概念、网络协议模型意义)
查看>>
HCIA(OSI七层参考模型详解)
查看>>
设计模式一(工厂模式)
查看>>
CentOS安装java开发环境(输入javac无反应及解决办法)
查看>>
node.js手写http服务器连接mysql数据库
查看>>
css 设置背景图片铺满固定不动
查看>>
laravel server error 服务器内部错误
查看>>
实习记录-1
查看>>
【图像去噪】基于全变分算法图像去噪matlab源码
查看>>
【TSP】基于混合粒子群求解TSP问题matlab源码
查看>>
socktIo的客户端与nodejs服务器端代码示例
查看>>
445. 两数相加 II
查看>>
Ubuntu | cannot remove is a directory
查看>>
CentOS | 02 Centos7如何调节桌面的图标的大小?
查看>>