美文网首页CTFctf
CTF中的几种git泄露

CTF中的几种git泄露

作者: gakki429 | 来源:发表于2018-09-11 09:24 被阅读233次

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

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

    这里只说git利用的点


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

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

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

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

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

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

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

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

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

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

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

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


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

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



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



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


    由此可获得提示信息

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



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

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

    从这个commit中的tree继续获取

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

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



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




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

    如果使用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文件提取恢复

    相关文章

      网友评论

      • w_不安分:我要去顶一波师傅的仓库:clap:
        w_不安分:https://github.com/gakki429/Git_Extract
      • Imtinmin:之前用了一下githack下全了文件,但是后来又下不全了,不知道怎么回事,请教一下师傅
        gakki429:@Imtinmin 是不是有download failed
        提示,那些文件是不一定有的,应该不碍事,恢复的点有很多,你可以看一下readme的说明,要是两个版本的flag.js都已经复原,就说明git恢复的没问题,有问题再说
        Imtinmin:@gakki429 我一开始用师傅的去下hello world这题可以,后来下失败了
        gakki429:@Imtinmin emmm,git_extract能下全嘛,githack我只知道logs那块有点问题,方便给个题目地址嘛

      本文标题:CTF中的几种git泄露

      本文链接:https://www.haomeiwen.com/subject/fedygftx.html