php伪协议漏洞_php伪协议利用文件包含漏洞

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

设置allow_url_fopen和allow_url_include都为On.

index.php

4d4465a2612fcc7e6e90051b90201aa2.png

index.php同级目录下有mytest001.txt

mytest002.txt

cdd52251fb789406c85aaab2fc1e459b.png

mytest003…txt

a1edd525000daba395bf2089a46d9b33.png

再说明一下,include()函数对文件后缀名无要求,而对其中的语法有要求,即使后缀名为txt,jpg也会被当做php文件解析,只要文件内是形式就可以执行,但是如果不是php语法的形式,即使后缀为php,也无法执行。

一,php:// 访问输入输出流,有两个常用的子协议

1,php://filter 设计用来过滤筛选文件

用法

非php语法文件include失败,直接输出源码内容。

e76d6207391f216489d68efc51351b89.png

php语法文件include成功,直接运行

24e5c6e5c1d7311cf60e909820e1cc5a.png

如果想要读取运行php文件的源码,可以先base64编码,再传入include函数,这样就不会被认为是php文件,不会执行,会输出文件的base64编码,再解码即可。

b7037079b054fdd0d508d1dc2fe6d477.png

7ae5c8a2d147b37598052943628838a0.png

若采用rot13编码,对php文件中的

4d46d2c034fc9f5e65483c70dcf3c160.png

bfcba3535a82e6cc30dc5060c24d3029.png

87723959d14c573687a1ae85e0787812.png

2,php://input

这个协议的利用方法是 将要执行的语法php代码写在post中提交,不用键与值的形式,只写代码即可。

fe1f78a69d2951d35b4a5d749579e4dd.png

如果可以自己构造代码,就可以看到更重要的信息:

1d0d3d76c5893c525d4dd7d698b39a11.png

二,file:// 与php:filter类似,访问本地文件,但是只能传入绝对路径

c1ad40895ce37ebd50b6412f9e51a9bf.png

三,phar:// 可以查找指定压缩包内的文件

1,传入绝对路径

02a4480426ab8919fe45319fb2922af4.png

2,传入相对路径,即同级目录下的文件

257b7c02f7251b48cb59b8ca90b2b3e5.png

四,zip:// 用法与phar类似,不过有两点要注意

1,只能传入绝对路径。

2,要用#分隔压缩包和压缩包里的内容,并且#要用url编码%23

10d7f53012ce425959f779fe46032967.png

五,data 与input 类似,都是用户可以控制传入的php代码

1,直接写入代码

data: text/plain,

e65f0e5e7b8b0ebf37c5749786d7e23d.png

2,使用base64编码

data:text/plain;(注意是分号不是逗号,与前面不同)base64,编码后的php代码

2fc24f585ce799eeb86cb2e2ace6808d.png

有一点要注意的问题,base64编码后的加号和等号要手动的url编码,否则无法识别。

00fa9dfdd164499115e0260c75ce54b0.png

同样的,给了自己写代码的权利,就可看到更多东西

72b5803d3635bdd10016fe67197e5e32.png

六,http协议

include中也可以传入外部链接,采用http://,具体怎么利用以后再来填坑。

5942ecf8d6a40e1a950d64746dabb1a4.png

最后来总结一下,

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

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

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

关于allow_url_fopen和allow_url_include的设置和用法这里有个总结:

778436622b0f42e04a1c108d01886728.png

参考:http://www.freebuf.com/column/148886.html

https://www.cnblogs.com/Spec/p/11137030.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值