当前位置: 首页 > news >正文

CTFHub技能树 git泄露3道题练习--遇到没有master如何解决!!!

题源:CTFHub

做题目的时候明明步骤很简单,但是master那里一致报错,试验了好几遍终于找到解决办法了

题目1:Log

先用dirsearch进行扫描

发现存在.git文件

使用gitHack工具

我们来到当前目录并打开,根据提示输入:git log

发现没有正确克隆

借助git_dumper正确复原仓库

git_dumper 是一款用于获取目标网站泄露的 .git 文件夹内容的工具,在 CTF(夺旗赛) 以及漏洞挖掘等场景中常被使用,以下是其详细介绍:

基本功能
  • 获取.git文件夹内容:当网站管理员配置不当,导致.git文件夹可以被外部访问时,git_dumper 能够下载该.git文件夹中的所有文件和目录结构。通过解析.git文件夹中的对象、引用等信息,恢复出完整的 Git 仓库。这样,渗透测试人员或安全研究人员就可以获取到网站的历史版本、源代码等信息,有可能从中发现敏感信息(如数据库密码、API 密钥 )或代码漏洞。
  • 还原代码历史:利用.git文件夹中的提交记录、分支信息等,git_dumper 可以帮助用户重建项目的开发历史,查看不同版本之间的代码差异,了解开发人员对项目的修改过程和思路。
工作原理
  • git_dumper 基于 Python 开发,通过分析.git文件夹中的关键文件(如 objects 目录存储 Git 对象、refs 目录存储分支和标签引用 ),向目标网站发送 HTTP 请求获取这些文件。然后,它会根据 Git 仓库的结构和文件格式,将下载的文件重新组织和解析,还原成一个完整可用的 Git 仓库。
使用方法
  1. 安装:一般从 GitHub 上克隆 git_dumper 项目仓库到本地,即 git clone https://github.com/arthaud/git-dumper.git
  2. 运行:进入项目目录,使用 Python 运行脚本,命令格式通常为 python git_dumper.py <目标网站的.git文件夹地址> <本地输出目录>。例如:python git_dumper.py http://example.com/.git/ output_dir,这会将目标网站.git文件夹内容下载到本地的 output_dir 目录中。
优缺点
  • 优点:操作相对简单,能够快速有效地恢复.git文件夹泄露的信息;对网络连接要求不高,在一般的网络环境下都能正常工作。
  • 缺点:依赖于目标网站.git文件夹的可访问性,如果网站设置了严格的访问控制(如身份验证、IP 限制 ),则无法获取;在处理大型.git文件夹或复杂仓库结构时,可能会耗费较长时间和较多资源。

解决题目问题过程

这里注意这个工具下载要放到dist目录下

然后使用这个工具,我使用的gitHack是python2版本的,但是git-dumper是python3适用,这点要注意

打开工具,我们使用命令:

C:\Python312\python.exe git_dumper.py http://challenge-1fbd3369b2f68fe5.sandbox.ctfhub.com:10800/.git/ output_dir 
  1. C:\Python312\python.exe

    • 指定执行脚本的 Python 解释器路径
    • 这里明确使用 Python 3.12 版本(因 git_dumper 需 Python 3 环境),避免系统默认的 Python 2 或其他版本导致兼容问题
  2. git_dumper.py

    • 要运行的工具脚本文件名
    • 即 git_dumper 工具的主程序,负责解析并下载目标 .git 仓库
  3. http://challenge-1fbd3369b2f68fe5.sandbox.ctfhub.com:10800/.git/

    • 目标网站泄露的 .git 仓库地址
    • 这是工具要下载的数据源,包含网站的版本控制信息(提交记录、文件历史等)
  4. output_dir

    • 本地输出目录名称
    • 工具会将下载的 .git 仓库文件保存到该目录,后续可通过 git 命令解析其中内容

可以看到他成功运行出来了,接下来我们查看输出目录

发现存在目录,我们接下来输入git log 查看历史

从提交记录看,add flag 提交(a7dcf898534e7db829ebcded612ae63ea42bd9e2 )添加了 flag,之后 remove flag 提交删除了它。

要想得到最终的flag,我们需要

1. 切换到 add flag 提交

git checkout a7dcf898534e7db829ebcded612ae63ea42bd9e2

2. 查看 / 提取 flag 文件

我们再返回目录进行查看

多了一个文件,应该就是题解了,把他打开

得到最终的flag,这道题结束

题目2:Stash

打开网页,直接使用GitHack进行获取

这里命令没有截图,跟上面的题基本一致,可以生成这个文件

50.html是一个错误页面,然后还是要借助git_dumper进行查看

>D:\python3.exe git_dumper.py http://challenge-937c1fe15bd8c4cb.sandbox.ctfhub.com:10800/.git output_dir

接下来查看所有目录:

在 Git 中,stash 是一个非常实用的功能,用于临时保存工作区和暂存区中的修改,以便在不提交当前工作的情况下切换分支、拉取代码或进行其他操作。以下是关于 stash 的详细介绍以及相关指令:

1. git stash (或 git stash save )

功能:将工作区中所有未提交的修改(包括已暂存和未暂存的文件修改)保存到一个 stash 栈中,工作区会恢复到上次提交时的状态。如果希望为 stash 操作添加描述信息,可以使用 git stash save "描述信息" 的形式。
示例

# 临时保存工作区修改,不添加描述
git stash # 临时保存工作区修改,并添加描述
git stash save "临时保存当前修改,准备切换到其他分支" 

2. git stash list

功能:列出当前仓库中所有的 stash 记录,显示每个 stash 的名称和简短描述。记录的名称格式为 stash@{n},其中 n 是序号,stash@{0} 表示最新保存的 stash 记录。
示例

git stash list
# 输出类似
# stash@{0}: WIP on main: 临时保存当前修改,准备切换到其他分支
# stash@{1}: WIP on feature-branch: 保存修改去处理紧急bug

3. git stash apply

功能:恢复最新的 stash 记录(即 stash@{0} )到工作区,但不会从 stash 栈中删除该记录。可以通过指定 stash 记录名称来恢复特定的 stash,例如 git stash apply stash@{1} 。
示例

# 恢复最新的stash记录到工作区
git stash apply # 恢复指定的stash记录到工作区
git stash apply stash@{1} 

4. git stash pop

功能:恢复最新的 stash 记录(即 stash@{0} )到工作区,并且将该记录从 stash 栈中删除。同样可以指定 stash 记录名称来恢复特定的 stash 并删除,如 git stash pop stash@{1} 。
示例

# 恢复最新的stash记录到工作区,并删除该记录
git stash pop # 恢复指定的stash记录到工作区,并删除该记录
git stash pop stash@{1} 

5. git stash drop

功能:删除最新的 stash 记录(即 stash@{0} ),可以通过指定 stash 记录名称来删除特定的 stash,例如 git stash drop stash@{1} 。
示例

# 删除最新的stash记录
git stash drop # 删除指定的stash记录
git stash drop stash@{1} 

6. git stash clear

功能:清空整个 stash 栈,删除所有的 stash 记录。执行该操作后,所有通过 git stash 保存的修改记录都将被永久删除,无法恢复。
示例

git stash clear

7. git stash show

功能:显示最新 stash 记录(即 stash@{0} )所包含的修改内容的摘要信息。如果想查看详细的修改差异,可以使用 git stash show -p 。也可以通过指定 stash 记录名称查看特定 stash 的内容,如 git stash show stash@{1} 。
示例

# 显示最新stash记录的修改内容摘要
git stash show # 显示最新stash记录的详细修改差异
git stash show -p # 显示指定stash记录的修改内容摘要
git stash show stash@{1} 

应用场景

  • 切换分支:当你在当前分支上进行开发,但还没完成工作,又需要切换到另一个分支处理紧急任务时,使用 git stash 保存当前修改,切换到目标分支处理完任务后,再恢复 stash 继续之前的开发。
  • 拉取代码:在拉取远程仓库的最新代码前,为了避免本地未提交的修改与远程代码冲突,可以先 git stash 保存修改,拉取代码后再恢复。
  • 临时保存实验性修改:在进行一些实验性的代码修改时,使用 stash 保存修改,方便在实验失败后快速恢复到之前的状态,或者将有用的修改应用到合适的分支中 。

所以对于这道题,我们使用git stash list查看一下有那些内容

接着使用git stash pop恢复这个记录到工作区,但有冲突

再使用git stash apply去恢复

查看恢复好的文档,完成操作

题目3:Index

gitHack扫描

得到答案

http://www.dtcms.com/a/348744.html

相关文章:

  • 一文掌握 Java 键盘输入:从入门到高阶(含完整示例与避坑指南)
  • 【大模型LLM学习】Research Agent学习笔记
  • c++随笔二
  • CI/CD企业案例详解
  • 从零开始学习概念物理(第13版)(1)
  • 问卷管理系统测试报告
  • 极验demo(float)(二)
  • JAVA快速学习(一)
  • 30分钟通关二分查找:C语言实现+LeetCode真题
  • 【通识】大模型
  • AI工具:开启开发实践的新纪元
  • Qt---架构文件.pro
  • Shell 循环实战:while 与 until 的趣味编程之旅
  • 【轨物交流】轨物科技亮相“智汇日照・杭电赋能”科技合作交流会,共谋产学研用新篇章
  • MOS的导通及应用
  • 6.2 el-menu
  • 20.13 ChatGLM3 QLoRA微调实战:3步实现高效低资源训练
  • 06 - spring security角色和权限设置
  • 虚拟机蓝屏问题排查与解决
  • 小工具推荐
  • 【数据结构】栈和队列——栈
  • 生成模型 | DDPM -> Imrpoved DDPM -> DDIM
  • LIANA | part2 results部分
  • QML Charts组件之坐标轴示例
  • LangGraph 与 MCP 模型上下文协议简介与演示
  • 教育系统搭建攻略:线上知识付费与线下消课排课全解析
  • 【Java开发日记】我们来讲一讲 Channel 和 FileChannel
  • Polkadot - JAM
  • 美股期权历史市场数据波动特性分析
  • 【中文教材】14. 汇率计算