Git与Git文件导致源码泄露

  1. Git与Git文件导致源码泄露
    1. Hello World (i春秋 第二届春秋欢乐赛 web)
    2. 登录 (百度杯CTF比赛 十月场 web)
    3. Backdoor (百度杯CTF比赛 十月场 web)
      1. Git常见的利用

Git与Git文件导致源码泄露

Git是目前世界上最先进的分布式版本控制系统

git泄露是常见的ctf题型,来看几个例子

Hello World (i春秋 第二届春秋欢乐赛 web)

这里只说git利用的点

img

由上可知有git泄露
之后尝试使用常用工具GitHack
https://github.com/BugScanTeam/GitHack

img

这里应该是通过.git/refs/heads/master中存储的commit的object来提取了master分支

img

但是这并不够,因为本题的考点原意是.git/logs/HEAD文件的利用,而githack并没有对其中的hash提取,因此遗漏了部分的object,即下图中的部分hash

img

这里使用JGitHack是可以获取到这些遗漏的object的

img

之后需要手动提取object
这里使用git的底层命令,cat-file和ls-tree
看一下logs中的提交记录

img

可以发现有两个commit,并且hash值是不一样的,说明有文件出现改动
于是这里手动查看一下

img

可见他们的tree的hash也是不一样的,说明其中有文件改变,这里继续看两个tree

img

由此可见其中的flag.js是变动了,他们的hash值不一样,说明文件不一样,分别是
f2b45f1e5af6dc1a8607c11e4ddc5fd077276c45
04bb09bb63fe48e6cab3e1c72a7ef51dda9634b8
所以flag应该就是在这其中
之后可以使用git cat-file命令提取文件

img

之后再sublime中diff一下这两个文件

img

会发现有不同,很明显的区别就是flag了,这前三个差异的字符分别是f,l,a,再往后看便是flag了
到这里,这题做完了,但是过程有些繁琐,而且是可以自动完成的
原先我的想法是使用几个git命令自动完成这个,但发现效率有些低
于是我写了这个工具
https://github.com/gakki429/Git_Extract
我们试试这个工具

img

看下获取到的文件,与之前的对比

img

img

之后直接diff其中的flag.js和f2b45f_flag.js就可以了

img

登录 (百度杯CTF比赛 十月场 web)

前面是注入
最后可以得到用户
username: bctf3dm1n
password: adminqwe123666
登录之后如下

img

可见.bctfg1t,应该是git泄露
这题的主要考点是.git/refs/stash

img

stash是一个用于保存git工作进度的文件
之后利用Git_Extract获取
这里获取了master分值,之后也解析了stash中的存的hash的object

img

img

由此可获得提示信息

img

之后打开这个71ec9d5ca5580c58d1872962c596ea71.php
就可以看到flag了

img

如果这里使用GitHack也是可以完成的

img

img

之后我们手动查看stash中的object就可以了

img

从这个commit中的tree继续获取

img

Backdoor (百度杯CTF比赛 十月场 web)

依旧是git的logs/HEAD,但是这里的commit有些多

img

使用Git_Extract会帮助你自动解析提取这些commit

img

img

查看这几个flag文件可以发下如下提示,之后继续做就好了

img

如果使用GitHack也可以完成,但是这些commit需要你手动提取,相当的难受

Git常见的利用

.git/index中会缓存git add的文件,这里在没有commit的情况下,也是存在的
https://github.com/lijiejie/GitHack lijiejie的这个就是获取的这个
.git/refs/heads/master 记录了master的commit的hash,由此可以解析出这个commit的所有文件
.git/logs/HEAD其中存储了git的log信息,可以找到历史的commit项
.git/refs/stash 工作进度的临时保存
最后说一个pack的问题,这个好像还没看见有ctf中考到,这里也做了恢复
.git/info/packs packs文件提取恢复

去除了原本的不存在文件的下载失败的提示
增加对windows字体颜色输出的支持,并同步默认背景色,linux中背景色也修改为与默认同步
更换了帅气的Logo(手动滑稽)
觉得好用的话就给个star吧

下载地址
https://github.com/gakki429/Git_Extract

此文章为转载:CTF中的几种git泄露 - 简书 (jianshu.com)


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。后续可能会有评论区,不过也可以在github联系我。