git 是一个分布式版本控制系统
题目
一、需要用到的工具
1、浏览器
2、dirsearch
1.下载 ZIP 文件安装: 可以直接从 GitHub 下载 ZIP 文件:
https://github.com/maurosoria/dirsearch/archive/master.zip
下载后解压文件。
2.安装依赖库: 进入 Dirsearch 目录后,打开终端,安装所需的 Python 依赖库:
pip3 install -r requirements.txt
3、虚拟机(Linux系统)
二、解题步骤
步骤一
1、打开题目网址
发现没有多余提示,直接用 dirsearch
扫描一下目录
也可以用其他的,比如“御剑”
在dirsearch的目录下打开 powershell 或者 cmd ,输入:
python dirsearch.py -u http://117.72.52.127:18382/
(网址要放自己的题目网址哦,我是后面写的WP,所以地址不一样)
发现有.git
目录(那应该有所有代码提交记录)
同时发现有个 flag.txt,查看一下,显然不是(笑哭)
查看/.git目录
这个目录是Git用来存储仓库的元数据和版本历史的地方。
用户通常不需要直接操作这个目录,而是通过Git命令来管理代码版本。
1、COMMIT_EDITMSG
用于存储最近一次提交的编辑消息(commit message)。
2、HEAD
指向当前分支的引用(ref),表示当前工作目录所处的分支或提交。
3、ORIG_HEAD
通常在执行某些操作(如
git reset
或git checkout
)后,用来保存HEAD
的原始位置。
4、logs/
存储仓库的历史记录,包括
HEAD
和分支的更新日志。
5、refs/
存储引用(refs),包括分支(
refs/heads/
)、标签(refs/tags/
)和远程分支(refs/remotes/
)。
我们去 logs 目录看一看,发现端倪
步骤二
根据题目描述,打开 Ubuntu 或者 kali,用 wget
将网站整个 git
目录和文件下载下来
输入:
wget -r http://117.72.52.127:14119/.git/
wget
是一个命令行工具,用于从网络上下载文件,Linux自带。
-r
:递归下载,可以下载整个网站或目录。
下载成功,进入目标文件夹(是以网址命名的,每个人不一样)
输入:
cd 117.72.52.127:14119
用 git 查看之前的版本(代码提交记录,更改历史),获得版本号,能明显看到有三个版本是有 flag 字符串的
输入:
git reflog
git reflog
:不带任何参数时,显示当前分支(HEAD)的引用日志。
一个一个去查看记录
输入:
git show HEAD@{num}
git show
:不带任何参数时,显示当前分支的最新提交(HEAD)的详细信息。
在第 4 个HEAD得到 flag:
git show HEAD@{4}