CTFHub技能树-Git泄漏-Stash

目录

一、前提知识

[1.什么是git stash](#1.什么是git stash)

2.git文件目录结构

3.git中对象指向

二、解题过程

方法一:使用GitHack

[方法二:使用Git_Extract工具,这个是自动解析不用git stash等操作,直接得到flag](#方法二:使用Git_Extract工具,这个是自动解析不用git stash等操作,直接得到flag)


当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。请尝试使用BugScanTeam的GitHack完成本题

一、前提知识

1.什么是git stash

应用场景

比如你正在dev 分支开发一个新需求,此时突发一个bug需要你紧急修复,但新的需求并没有开发完成还不想提交代码,怎么办?这时就是 git stash 发挥作用的时候了,它可以将没开发完的代码保存到 堆栈区,切换到新的分支修复bug,等 bug 修复完可以再切换为 dev 分支,释放保存的代码继续之前未完的开发。

使用方法

将当前未提交的修改(即,工作区的修改和暂存区的修改)先暂时储藏起来

git stash 

之后可以切换到新分支修复bug

git checkout dev 

修复完之后再次切回 dev 分支继续开发,此时需要释放之前保存的代码:

git stash pop 

下列命令可以查看缓存的列表:

git stash list 

有时我们会发现因冲突导致 git stash pop 命令并没有消除 list 的记录,这样对我们操作造成一些干扰,这时我我们可以执行以下操作,清除记录:

git stash drop 

2.git文件目录结构

.git目录:使用git init初始化git仓库的时候,生成的隐藏目录,git会将所有的文件,目录,提交等转化为git对象,压缩存储在这个文件夹当中。

COMMIT_EDITMSG:保存最新的commit message,Git系统不会用到这个文件,用户一个参考文件

config:Git仓库的配置文件

description:仓库的描述信息,主要给gitweb等git托管系统使用

HEAD:这个文件包含了一个档期分支(branch)的引用,通过这个文件Git可以得到下一次commit的parent

hooks:这个目录存放一些shell脚本,可以设置特定的git命令后触发相应的脚本;在搭建gitweb系统或其他

git托管系统会经常用到hook script(钩子脚本)

index:这个文件就是我们前面提到的暂存区(stage),是一个二进制文件

info:包含仓库的一些信息

logs:保存所有更新的引用记录

objects:所有的Git对象都会存放在这个目录中,对象的SHA1哈希值的前两位是文件夹名称,后38位作为对象文件名

refs:这个目录一般包括三个子文件夹,heads、remotes和tags,heads中的文件标识了项目中的各个分支指向的当前commit

ORIG_HEAD:HEAD指针的前一个状态

3.git中对象指向

来自:Git信息泄露原理解析及利用总结 - FreeBuf网络安全行业门户

二、解题过程

方法一:使用GitHack

使用dirsearch扫描网站

发现git泄漏

使用GitHack下载.git文件

使用git stash list查看暂存的代码,然后使用git stash pop将代码从暂存堆栈中拉去出来

cat查看文本得到flag

方法二:使用Git_Extract工具,这个是自动解析不用git stash等操作,直接得到flag

直接拿到flag

相关推荐
爱吃红薯拔丝的小鹿11 天前
CTFHub技能树-Git泄漏-Log
ctfhub
爱吃红薯拔丝的小鹿12 天前
CTFHub技能树-Git泄漏-Index
ctfhub
I_WORM5 个月前
CTFHUB RCE作业
rce·命令执行·ctfhub·作业
ZH的四月6 个月前
以题为例浅谈SSRF
安全·web安全·ssrf·ctfshow·ctfhub