简单认识Git(dirsearch、githack下载),git泄露(ctfhub)

目录

dirsearch下载地址:

githack下载(一次不成功可多试几次)

一、什么是Git

1.git结构

2.git常用命令及示例

3.Git泄露原理

二、Git泄露

1.Log

2.Stash

3.Index


工具准备:dirsearch、githack

dirsearch下载地址:

GitHub - maurosoria/dirsearch: Web path scanner

githack下载(一次不成功可多试几次)

进入root用户,下载克隆GitHack库

git clone https://github.com/BugScanTeam/GitHack

kali下载使用GitHack_kali安装gitclone-CSDN博客

这样就是安装成功了

使用GitHack

使用到工具 GitHack 来完成,而 CTFHub 上提供的工具需要在 python2 环境中执行

 python2 GitHack.py 链接/.git/

一、什么是Git

1.git结构

Git的结构和使用_git结构-CSDN博客

(1)工作区: .git 所在文件夹
(2)暂存区(stage 或 index):一般存放在 .git 目录下的 index 文件( .git/index )中,所以把暂存区有时也叫作索引( index
(3))本地仓库(版本库):用于存储各种版本(分支)的信息。 .git 文件就是版本库,其中 的.git/HEAD 文件,它存储着当前分支的名字
(4)远程仓库:服务器存贮着各种项目,例如国内的 gitee ,国外的 github , gitlab 等等

运作过程:(图片来自水印)

创建一个版本库,通过命令git add添加到暂存区,然后通过命令 git commit -m"备注" 添加到版本库,最后通过命令 git push 推送到远程仓库 。

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

HEAD:即.git/HEAD文件,它存储着当前分支的名字

config:Git仓库的配置文件

index:这个文件就是暂存区(stage),是一个二进制文件

info:包含仓库的一些信息

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

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

hooks:这个目录存放一些shell脚本,可以设置特定的git命令后触发相应的脚本

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

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

2.git常用命令及示例

GIT常用命令大全------赶紧收藏_git命令大全-CSDN博客

git config --global user.name "Your Name"
git config --global user.email "email@example.com"
//git安装后-指定名称和邮箱
pwd	//查看当前目录
git init	//初始化,生成.git文件(若该文件隐藏,则使用ls -ah)
git log	//查看提交历史记录,从最近到最远,可以看到3次
git log --pretty=oneline	//加参,简洁查看
git reflog	//查看每一次修改历史
git add 1.txt  //添加文件
git commit -m "wrote a test file"	//提交文件
git rm 1.txt   //删除文件
git commit -m "remove 1.txt"    //删错了,恢复

git status	//查看工作区中文件当前状态
git remote	//查看远程库的信息
git remote -v	//查看远程库的详细信息
git remote rm origin	//删除远程仓库(解绑)

git diff <commit>  //比较现版本与上一版本的区别

git reset <commit> //回滚到上一版本
# 什么都不写 默认 --mixed 
git reset --hard <commit>   //回滚到上一版本(并丢弃修改的内容)
# --hard 丢弃修改的内容

3.Git泄露原理

Git泄露相关知识点_.git泄露-CSDN博客

Git是一个可以实现有效控制应用版本的系统,在配置不当的情况下,可能会将".git"文件直接部署到线上环境,就很可能将源代码泄露出去。

一旦攻击者或者黑客发现这个问题之后,就可能利用其获取网站的源码、数据库等重要资源信息,进而造成严重的危害。

所以发攻击者只要发现有git泄露,就可以通过相关工具来得到它所泄露的代码,其中会有一些关键信息。

二、Git泄露

题目描述:

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

1.Log

查看源代码,提示有git泄露(.git leakage)

使用dirsearch扫描,也可发现有git泄露

使用GitHack克隆目录

扫描成功后githack会生成一个文件夹dist,里面存放着重新生成的文件

进入新文件,题目提示log,就用git log查看提交历史记录

发现添加了flag(add flag)

法一:git reset回退文件版本

git reset --hard 4ef99b0bb42e1d518d8fd93ab2e41093cb82e7c3

提示游标HEAD位于add flag中,去文件夹中打开文件发现flag

法二:使用git diff文件对比

git diff 93f0a5663e1393ba385c26bf597296f9bb437a63 4ef99b0bb42e1d518d8fd93ab2e41093cb82e7c3

2.Stash

stash可以理解为git的暂存文件

源代码提示有git泄露(.git leakage )

使用dirsearch扫描,也可发现有git泄露

使用GitHack克隆目录

扫描成功后githack生成一个文件夹dist,里面存放着重新生成的文件

进入新文件后,与上题一样,先用git log查看提交历史记录发现了add flag的历史,但是发现使用git reset回退文件版本与git diff进行文件对比均无法得到flag。

原因是存放flag的文件仅存在于stash暂存区里面,没有被提交到本地库。一般来说,不能直接在本地库查看或操作暂存区中的文件。

于是可使用git stash pop提取git的暂存文件

git stash       //备份当前工作区的内容,保存到git栈中,从最近的一次commit中读取相关内容

git stash pop   //从git栈中获取到最近一次stash进去的内容,恢复工作区的内容。获取之后,会删除栈中对应的stash

原历史记录

使用git stash pop提取后 (删除了最近的一次remove flag记录)

可以用ls、cat命令查看,也可直接打开文件 获得flag。

3.Index

index可以理解为git的暂存文件

查看源代码,提示git泄露

步骤如上, 使用dirsearch扫描,也可发现有git泄露

使用GitHack克隆目录

扫描成功后githack生成一个文件夹dist,里面直接存放有重新生成的flag文件

index是暂存区,为什么直接就有flag?

使用git log查看提交历史记录,发现指针直接指向add flag的分支,故查看目录文件直接有flag。

相关推荐
木心1 小时前
Git基本操作快速入门(30min)
git·github
LXL_242 小时前
Git_撤销本地commit_查找仓库中大文件
git
yg_小小程序员3 小时前
鸿蒙开发(16)使用DevEco Studio上的Git工具进行多远程仓管理
git·华为·harmonyos
每天八杯水D8 小时前
Git完整使用经历
git
xianwu54310 小时前
反向代理模块。开发
linux·开发语言·网络·c++·git
前端_库日天12 小时前
部署自己的git托管平台
git·ubuntu·docker
神仙别闹14 小时前
基于C#实现的(WinForm)模拟操作系统文件管理系统
java·git·ffmpeg
刘大辉在路上1 天前
突发!!!GitLab停止为中国大陆、港澳地区提供服务,60天内需迁移账号否则将被删除
git·后端·gitlab·版本管理·源代码管理
落落鱼20131 天前
cenos如何升级git到2以上版本
git