首页 » PHP教程 » php伪协定ctf技巧_实战经验丨CTF中文件包含的技巧总结

php伪协定ctf技巧_实战经验丨CTF中文件包含的技巧总结

访客 2024-12-15 0

扫一扫用手机浏览

文章目录 [+]

php伪协议的分类

伪协议是文件包含的根本,理解伪协议的事理才能更好的利用文件包含漏洞。

php伪协定ctf技巧_实战经验丨CTF中文件包含的技巧总结

php://input

php伪协定ctf技巧_实战经验丨CTF中文件包含的技巧总结
(图片来自网络侵删)

php://input代表可以访问要求的原始数据,大略来说POST要求的情形下,php://input可以获取到post的数据。

利用条件:include( )、include_once( )、file_get_contents( )

比较分外的一点,enctype=”multipart/form-data”的时候 php://input 是无效的。

用法举例:

利用file_get_contents函数的伪协议包含有个经典的例子;可以利用fputs文件输入流直接手事器某一存在的目录下写入文件。

php://output

php://output 是一个只写的数据流,许可你以print和echo一样的办法写入到输出缓冲区。

php://filter(重点)

php://filter是一种元封装器,设计用于数据流打开时的筛选过滤运用,也便是作为一种过滤器,可以利用在数据流产生的地方。

在php文档中,标准的定义是这样的:

类似的过滤器还有string.rot13、string.strip_tags、zlib.deflate和zlib.inflate等等,目前只要知道convert.base64-encode就好了。

URL 中包含点的常见形式

?file = xxx 或者 ?file = xxx.php

allow_url_fopen和allow_url_include

在测试了包含点存在包含漏洞往后,并不是都可以利用filter伪协议包含出源码的,由于allow_url_fopen和allow_url_include会影响到fopen和include等函数对付伪协议的支持。

allow_url_include影响php://input的利用,若不打开则无法利用。

当allow_url_fopen打开时,可以包含任意url。

例如只打开allow_url_include时,只能包含远程文件和利用php://input

举个例子

题目链接:http://level3.tasteless.eu/

题目直接给出了源码:

根据提示,用php://input 伪协议读取php.ini

找到SERVER[\"大众DOCUMENT_ROOT\"大众],也便是网站的根目录,可以找到当前脚本的目录,如下:

还可以看到一些文件包含的配置:

rfi是关闭的,也便是allow_url_fopen为Off;allow_url_include开启,可以利用php://input伪协议来列出当前目录下的文件。

payload:

绕过 waf 的方法

字典绕过

在一些CTF中会对一些伪协议的关键词进行过滤,如read、resource等等,下面总结了几条绕过方法,在实战中作为字典来跑。

?f=php://filter/convert.base64-encode/resource=login.php(过滤了操作名read)?f=php://filter/read=convert.base64-encode/resource=1.jpg/resource=./show.php(正则 /resource=.jpg/i)?f=data:text/plain,<?php phpinfo()?>?file=data:text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=

这里说一下第二条,这是2018 ISCC中的一道题目的绕过方法。

这里用正则匹配了resource=,我们就可以用重写的方法来绕过正则。

截断包含

截断

这里技巧现在该当是用的比较少了,由于利用截断要知足下面的两个条件:

php版本小于5.3.4magic_quotes_gpc为off

./ 截断

点号和路径截断以及./截断,也便是添补大量的./使url长度超过最大值,来达到截断的目的。

详细可以看下面的文章:

https://blog.csdn.net/zvall/article/details/8951925

zip协议和phar协议

在实战过程中,若创造存在文件上传但是没有办法直接上传php文件,可以传zip压缩文件,我们就利用这两个协议,将php文件打包成zip文件来包含里面的php脚本。

phar://、zip://,都可以看到在phpinfo中有相应的描述。

例如脚本文件为1.php,打包成1.zip,然后再改名为1.jpg,上传之后包含1.jpg中的php文件即可。

zip://..(当前脚本的绝对路径).../1.jpg#1.phpphar://...(当前脚本的绝对路径).../1.jpg/1(分割不加后缀名)

标签:

相关文章

东京大数据,城市发展的新引擎

随着信息技术的飞速发展,大数据已经成为当今时代的重要特征之一。在全球范围内,各大城市都在积极探索大数据在城市建设中的应用。东京作为...

PHP教程 2024-12-17 阅读0 评论0

东城大数据,赋能城市发展,引领未来潮流

随着信息技术的飞速发展,大数据已成为推动社会进步的重要力量。我国东城区作为国家中心城市,积极拥抱大数据,将其作为城市发展的新引擎,...

PHP教程 2024-12-17 阅读0 评论0

专色印刷,色彩艺术与技术的完美结合

色彩是视觉艺术中的重要元素,而印刷行业更是色彩应用的舞台。随着印刷技术的不断发展,专色印刷逐渐成为印刷行业的一大亮点。本文将围绕专...

PHP教程 2024-12-17 阅读0 评论0

phpsession空文件技巧_PHPSession运用总结

Session观点:在打算机中,尤其是在网络运用中,称为“会话掌握”。Session 工具存储特定用户会话所需的属性及配置信息。这...

PHP教程 2024-12-17 阅读0 评论0