关注这个靶场的其它相关笔记:攻防世界(XCTF) —— 靶场笔记合集-CSDN博客
0x01:考点速览
本题考察的是 PHP 文件包含漏洞,以下是从本关总结来的过关思路:
-
一测 base64 编码绕过
-
php://filter/convert.base64-encode/resource=flag.php
-
-
二测特殊编码集绕过
-
php://filter/convert.iconv.
. /resource=flag.php
-
0x02:Write UP
从题目描述,就已经知道了考点,进入靶场,代码很简单,传入的参数是 filename,它包含了一个 check.php 文件进行过滤:
我们直接在靶场地址后拼接 /flag.php 路径,页面是成功访问的,查看源代码是空空如也的。页面可以访问,说明该页面存在,源代码空空如也,说明这个 php 页面没有打印或者注释了。那我们下面的思路就是拿靶场首页的文件包含漏洞,包含这个 flag.php 页面,查看网页源代码:
我们在文件包含页面直接传入?filename=flag.php,页面返回报错:
无所谓,下面我们就是使用过滤器进行绕过,先使用 php://filter 过滤器对 flag.php 的内容进行 base64 编码看看:
?filename=php://filter/convert.base64-encode/resource=flag.php
从回显来看,Base64 编码的 PHP 伪协议不管用,没事,我们还有:
- convert.iconv.
. - or
- convert.iconv.
/
其中 input-encoding 和 output-encoding 中填写的是 PHP 支持的编码集,可以从下面这个网站获取:
PHP: Supported Character Encodings - Manual https://www.php.net/manual/en/mbstring.supported-encodings.php
然后发送一次模拟请求后使用 BurpSuite 进行抓包,模拟请求参数如下:
?filename=php://filter/convert.iconv.utf-8.utf-8/resource=flag.php
找到请求包,发送到攻击模块,选择 Cluster bomb 模式,并设置爆破的参数为
对应的位置,爆破字典,就是刚刚下载的 PHP 支持的字符编码集(记得要设置两个参数的哈):
然后点击 start attack ,开始爆破,找到 Length 最长的那个里面就是 Flag:
0x03:参考链接
详解php://filter以及死亡绕过_filter绕过过滤-CSDN博客文章浏览阅读1.6w次,点赞49次,收藏278次。详解php://filter以及死亡绕过php://filterPHP 提供了一些杂项输入/输出(IO)流,允许访问 PHP 的输入输出流、标准输入输出和错误描述符, 内存中、磁盘备份的临时文件流以及可以操作其他读取写入文件资源的过滤器。php:// — 访问各个输入/输出流(I/O streams)php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。 这对于一体式(all-in-one)的文件函数非常有用,类似 readfile()、 file() 和 file_ge_filter绕过过滤http://iyenn.com/rec/1646243.html
PHP: Supported Character Encodings - Manual https://www.php.net/manual/en/mbstring.supported-encodings.php
评论记录:
回复评论: