CTF实战练习:http://120.78.xx.xxx:8012
首先打开题目链接,已知的是这是一道关于文件包含的题目,既然是文件包含的题目,那就按照一般的步骤来喽。
先说一下,我拿到这道题目之后我的思路,因为之前博客中也写过关于文件包含漏洞的题目,就按照之前的思路来了。第一步,首先我输入了解题链接之后,网页链接变成了xxxx/index.php?file=hello.php,这就很明显了,文件包含漏洞妥妥没毛病,既然这样我们先通过php://filter读取一下index的源代码,看一下源代码里是不是有我们需要的flag。
在网页链接后面添加:php://filter/read=convert.base64-encode/resource=index.php,回车测试一下。测试结果如下,这当然就是base64编码的index的源码了:
然后我们需要对这串编码进行base64解码,解码结果如下:
嗯?代码里并没有我们想要的flag,也没有对我们解题有实际应用的信息,这是什么问题?
回过头查看一下网页源代码:
从源代码里我们也并没有发现有用的信息,咋整咧?
最后,通过老师的提示,才得知这道题涉及到一个点就是SVN遍历。
SVN遍历??嗯?什么东西?其实就是遍历 .svn 目录下所有的内容。现在我们在网页链接后面输入 .svn回车执行看一下结果:
访问到我们的 .svn目录我们可以看到在svn目录下有一个文件夹叫“flag_is_here”,嗯,不出问题的话,flag就在这里了。
当我们找到flag_is_here文件夹下的flag.php文件打开时,页面却是空的页面,这是咋回事?回头想想,肯定是页面信息被隐藏了,那这个时候我们该如何查看页面信息呢?不要忘了这道题目是文件包含的题目,因此我们使用文件去包含flag.php就可以查看页面信息了。在网页访问连接后添加:
页面信息仍然不可以正常显示,现在我们需要使用base64编码去包含访问flag.php文件,操作如下:
信息是显示出来了,最后一步,我们需要对显示出来的信息进行base64解码,解码结果即得flag。
实验结束!
总结:这道文件包含的题目和之前一篇关于文件包含的博客讲解的题目非常的相似。南邮CTF - Web - 文件包含 综合两篇博客来看,都是用了base64编码进行页面内容的查看,由此我们可见,php://filter这个东西在文件上传漏洞利用中是非常常见的。另外一点,这道题目涉及了一个内容就是svn目录遍历,其实如果事先不了解这个东西,这道题你就抓俩小时的包都抓不出最后的flag。我就是那种上来就抓包的孩子……所以说啊,见多识广这句话是对的,不停的刷一些题,见识的多了,自然遇到相同或者相似的问题就能迎刃而解了。