0x00 前言
CTFHub 专注网络安全、信息安全、白帽子技术的在线学习,实训平台。提供优质的赛事及学习服务,拥有完善的题目环境及配套 writeup ,降低 CTF 学习入门门槛,快速帮助选手成长,跟随主流比赛潮流。
0x01 题目描述
Log:
当前大量开发人员使用 git 进行版本控制,对站点自动部署。如果配置不当,可能会将 .git 文件夹直接部署到线上环境。这就引起了git 泄露漏洞。请尝试使用 BugScanTeam 的 GitHack 完成本题。
0x02 解题过程
根据题目描述,这个题目需要使用到工具 GitHack 来完成,而 CTFHub 上提供的工具需要在 python2 环境中执行,注意 python3 环境无法使用。因为对工具的不熟悉,且也不太了解 Git 泄露漏洞。此题主要参考官方 writeup 来完成。
Ⅰ根据题目描述的提示,在CTFHub上下载基于GitHack工具 (注意:使用工具需要确保 git 在环境变量中)
https://github.com/BugScanTeam/GitHack
Ⅱ终端打开GitHack工具所在目录
Ⅲ使用GitHack工具clone题目源码到本地目录下,工具运行需要一会时间
python2 GitHack.py http://challenge-66aef77fe3416661.sandbox.ctfhub.com:10800/.git/
解释说明:
python2 表示我的 py2 程序名称,是为了与 py3 共存而设置更改的名称
使用说明:
使用前需确保 git 在环境变量中
- git
- ubuntu/debian:
$ apt-get install git
- redhat/centos:
$ yum install git
- windows git-for-windows下载
Ⅳ在GitHack工具的dist目录中打开刚才clone的网站目录文件
Ⅴ在终端打开clone的目录路径,并使用git log命令查看其历史记录
git log #查看历史记录
解释说明:
remove flag 表示当前版本
add flag 表示这次提交的版本
init 表示初始的版本
Ⅵ使用git diff命令可以对比提交版本,对比这三个版本发现在add flag中获得此题flag
git diff 4f116709933b4392a3a3ec62a6d139112104a6d3
0x03 Git简要了解
Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。是为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
1.git diff命令
git diff 命令用于显示提交和工作树等之间的更改。此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容。
git diff <file> # 比较当前文件和暂存区文件差异 git diff
git diff <id1><id1><id2> # 比较两次提交之间的差异
git diff <branch1> <branch2> # 在两个分支之间比较
git diff --staged # 比较暂存区和版本库差异
git diff --cached # 比较暂存区和版本库差异
git diff --stat # 仅仅比较统计信息
2.git clone命令
git clone 命令将存储库克隆到新目录中。
git clone <版本库的网址/.git/>
3.git reset命令
git reset 命令用于将当前 HEAD 复位到指定状态。一般用于撤消之前的一些操作
git reset --hard 4f116709933b4392a3a3ec62a6d139112104a6d3
0x04 参考文献
[1].CTFHub. Log[EB/OL]. [2022-10-07]. https://www.wolai.com/ctfhub/5YAMX5UKxbg5Z2XBCHhxPY.
[2].易百教程. Git教程[EB/OL]. [2022-10-07]. https://www.yiibai.com/git/git_diff.html.
0x05 总结
文章内容为学习记录的笔记,由于作者水平有限,文中若有错误与不足欢迎留言,便于及时更正。