以前虽然学过git,但是时间久远,而且没有和安全方面联系起来。这道Git泄露题可以说是比较简单,帮助我慢慢架构起git的知识。
当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。
做这道题需要简单知道git的相关命令,比如:
git log 显示从最近到最远的提交日志。 git diff 简单的来说就是查看不同,具体用法如下: 1. git diff:是查看working tree与index的差别的。 2. git diff --cached:是查看index与repository的差别的。 3. git diff HEAD:是查看working tree和repository的差别的。其中:HEAD代表的是最近的一次commit的信息。 git reset 可用于回退版本库以及Githack(注意,githack需要在python2中才能使用,而且github上面有一个githack是不能用的,我一开始就下了那个不能用了结果弄了很久。)的相关用法。
打开之后进行dirsearch扫描,发现存在git泄露,使用Githack
python2 githack.py http://challenge-20523a0b6899c975.sandbox.ctfhub.com:10080/.git/之后进入githack下的dist里的本题的目录。 正常进入之后应该只有.log文件,我这里有其他的东西是因为我已经回退版本了,往下看就懂了。如果没有.log应该是被隐藏了。然后打开cmd或者bash都可,输入git log显示提交日志。 我们可以看到有三次操作,一次是init初始化现有仓库,经过这次命令就会产生.log文件。之后执行了add flag和remove flag。可以判断,flag应该是在add flag的那个版本,我们现在是在remove flag。所以,这题有两种解法,第一种是回退到之前的版本,git reset可以实现。第二种是直接查看add flag和remove flag这两个版本的不同,git diff可以实现。
方法一:
git reset --hard HEAD^方法二:
git diff HEAD^执行以上两种命令都可以成功获得flag,本题解出。