[极客大挑战 2019]Secret File
一、题目简介
二、思路分析
1)信息泄露
2)文件包含
三、解题步骤
1)查看网页源代码
2)拦截请求,查看响应信息
3)文件包含漏洞
4)PHP伪协议读取文件内容
四、总结
一、题目简介
进入链接以后是一个「文字」页面,没有什么特别的功能
二、思路分析
这一关是一个「文件包含」漏洞,推荐使用「PHP伪协议」查看文件内容
1)信息泄露
针对这种没有什么功能的页面,可以检查是否存在信息泄露。右键查看「页面源代码」,发现一个被「隐藏」的标签,标签中有一个「文件」路径
故意隐藏,说明文件很「重要」,我们访问这个文件
提示我们点击「按钮」,按他说的做
又让我们退回去仔细看看,说明在这两个页面之间存在一些内容,右键「检查」
或者按 F12 键调出来开发者界面,返回上一个页面(Archive_room.php)重新点击一次 SECRET 按钮,观察这一过程有哪些「请求」
可以看到,在结束页面之前,还访问了一个页面,只是我们没有「权限」(302),看不了,所以直接跳过了这个页面。针对这种情况,我们使用代理工具查看它的「响应」请求即可
从响应内容中我们可以看到页面的内容中存在信息泄露,「注释」中有一个文件 secr3t.php,我们访问这个文件即可
2)文件包含
访问 secr3t.php 文件,页面中展示了部分代码,很明显是一个「文件包含」漏洞,并提示 flag 就在 flag.php文件中,意思就是让我们查看 flag.php 文件的内容。
PHP的文件包含函数有一个「特性」,被包含的文件内容中,如果是「代码」则会执行,而不会在页面中展示;如果是「非代码」(不能被执行的内容),则会以文本的形式在页面中展示出来。针对这一特性,我们可以使用PHP伪协议对文件内容进行「编码」,编码后的文件内容由于不能被执行,会展示在页面中,而后再将页面中的内容复制到本地进行「解码」,即可查看文件内容,拿到 flag。
三、解题步骤
1)查看网页源代码
进入链接后,右键查看网页源代码,在一个「隐藏」的 a 标签中找到泄露的信息——「敏感」文件 Archive_room.php
2)拦截请求,查看响应信息
访问敏感文件 Archive_room.php,点击 SECRET 按钮,同时使用代理工具(此处使用 Brup Suite)「拦截」请求。
在「响应」信息中发现另一个敏感文件 secr3t.php
3)文件包含漏洞
访问敏感文件 secr3t.php,是一个文件包含漏洞
4)PHP伪协议读取文件内容
使用PHP伪协议对文件内容进行base64「编码」,使文件内容在页面中展示出来,payload如下
/secr3t.php?file=php://filter/read=convert.base64-encode/resource=flag.php
复制文件内容,在本地进行base64「解码」,点击连接进入base64解码地址
四、总结
喜欢一个东西首先要先学会「尊重」,虽然网络安全的圈子不乏各种灰产,以及高调宣传自己是黑客的脚本小子,但不可否认,这个圈子仍有不少人保持着「举世皆浊我独清,众人皆醉我独醒」的心态,努力磨砺技术,提升自身修养,让互联网变得更加安全