git泄露/file协议--Welcome To My Blog(东华杯2017-200分)

题目地址:http://67cbb3ff99c448e0957076c4367b109b2fa699df5e294b1a.game.ichunqiu.com/index.php?action=home
题目界面:

git泄露/file协议--Welcome To My Blog(东华杯2017-200分)_第1张图片

点击三个栏目,观察url变化,猜测是一个文件包含(结果不是。。)。这里测试了一下action=flag,查看源码可以直接获取flag,这样就太简单了,我们看一下其他的解法。

如果仅仅看各个页面我们是不知道该系统逻辑的,所以猜测源码泄露,简单的测试一下(或扫描常见的备份/源码泄露),发现存在.git目录,我们尝试对其进行还原。

nac@nac-PC:~/Desktop$ file 3207b7443805336f105c63c6f9948f0c9ae7a4 
3207b7443805336f105c63c6f9948f0c9ae7a4: zlib compressed data

发现是zlib文件,使用python的zlib库进行还原,得到如下代码。
这里也可以使用别的方式进行恢复:链接


直接读flag.php的解法就不说了,这里重点在于curl函数,这里的curl并不是php自带的函数,而是在function.php中定义的函数,通过index.php?action=function可以读取function.php文件。

git泄露/file协议--Welcome To My Blog(东华杯2017-200分)_第2张图片

发现url可控,并且调用PHP的函数curl_exec(),查询官方文档可知支持file协议,所以可以读取本地文件系统。(payload:/index.php?action=album&pid=file:///var/www/html/flag.php

git泄露/file协议--Welcome To My Blog(东华杯2017-200分)_第3张图片

打开右键源码,flag就在最底部


reference:###

  • https://ring0.me/2015/05/recover-code-from-corrupt-git-repo/
  • http://www.jianshu.com/p/c60aeca68e03
  • http://bestwing.me/2017/11/05/2017-shwas-Writeup-SeeSea/
  • http://bobao.360.cn/ctf/detail/212.html

你可能感兴趣的:(git泄露/file协议--Welcome To My Blog(东华杯2017-200分))