首页 » Web前端 » ctf文件包括php技巧_实战经验丨CTF中文件包含的技巧总结

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

访客 2024-12-12 0

扫一扫用手机浏览

文章目录 [+]

php伪协议的分类

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

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

php://input

ctf文件包括php技巧_实战经验丨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类若何传技巧_php的文件上传

这里首先声明一下这一章的内容比较多,比较难,你要抱着和自己去世磕的态度。细微之处不放过,多敲多练是王道。 学习就像爬山,得一步一步...

Web前端 2024-12-14 阅读0 评论0

php多态的寄义技巧_php多态性若何理解

多态性是指相同的操作或函数、过程可浸染于多种类型的工具上并得到不同的结果。不同的工具,收到同一将可以产生不同的结果,这种征象称为多...

Web前端 2024-12-14 阅读0 评论0

php反射被动加载技巧_php反射机制用法详解

面向工具编程中工具被授予了自省的能力,而这个自省的过程便是反射。反射,直不雅观理解便是根据到达地找到出发地和来源。比如,一个光秃秃...

Web前端 2024-12-14 阅读0 评论0