CTF中的几种git泄露

admin 2021年3月27日16:01:50评论538 views字数 1865阅读6分13秒阅读模式

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

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

这里只说git利用的点

CTF中的几种git泄露


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

CTF中的几种git泄露


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

CTF中的几种git泄露


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

CTF中的几种git泄露

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

CTF中的几种git泄露


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

CTF中的几种git泄露


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

CTF中的几种git泄露


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

CTF中的几种git泄露


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

CTF中的几种git泄露


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

CTF中的几种git泄露


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

CTF中的几种git泄露


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

CTF中的几种git泄露

GitHack


CTF中的几种git泄露

JGitHack

CTF中的几种git泄露

Git_Extract


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


CTF中的几种git泄露

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

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


CTF中的几种git泄露


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


CTF中的几种git泄露


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

CTF中的几种git泄露


CTF中的几种git泄露


由此可获得提示信息

CTF中的几种git泄露


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


CTF中的几种git泄露


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

CTF中的几种git泄露


CTF中的几种git泄露

image.png


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

CTF中的几种git泄露


从这个commit中的tree继续获取

CTF中的几种git泄露


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


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


CTF中的几种git泄露


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


CTF中的几种git泄露


CTF中的几种git泄露


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

CTF中的几种git泄露


如果使用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泄露


转载自:https://www.jianshu.com/p/0ea09975169d


本文始发于微信公众号(LemonSec):CTF中的几种git泄露

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年3月27日16:01:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CTF中的几种git泄露https://cn-sec.com/archives/301113.html

发表评论

匿名网友 填写信息