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

【CTF-MISC-git】在 git 仓库中寻找隐藏的 flag。

题目

BearcatCTF 2026\forensics\Poem About Pirates

解题过程

查找步骤

1. 检查 git 仓库状态

首先,确认当前目录是否为 git 仓库,并查看工作区状态。

gitstatus

输出:

On branch main nothing to commit, working tree clean

2. 查看 git 提交历史

查看所有提交记录,寻找可能的线索。

gitlog--oneline

输出:

fb94dcb (HEAD -> main) Added sestina about pirates 026d64c Added limerick about pirates 4d41e95 Added acrostic about pirates 2778ad8 Added haiku about pirates 0f00ca7 Added sonnet about pirates 0d9c7f0 Initial commit

3. 检查分支和标签

检查是否存在隐藏的分支或标签,这些地方可能包含线索。

gitbranch-a

输出:

* main

gittag

输出:

(无输出,说明没有标签)

4. 查看 git 操作历史 (reflog)

使用git reflog查看所有 git 操作历史,包括可能被覆盖或删除的提交。

gitreflog

输出:

fb94dcb (HEAD -> main) HEAD@{0}: rebase (finish): returning to refs/heads/main fb94dcb (HEAD -> main) HEAD@{1}: rebase (pick): Added sestina about pirates 026d64c HEAD@{2}: rebase (squash): Added limerick about pirates a6f9948 HEAD@{3}: rebase (squash): # This is a combination of 3 commits. e945ca3 HEAD@{4}: rebase (squash): # This is a combination of 2 commits. ef980a4 HEAD@{5}: rebase (start): checkout HEADyu HEAD~5 ae56c9e HEAD@{6}: rebase (finish): returning to refs/heads/main ae56c9e HEAD@{7}: rebase (start): checkout HEAD~4 ae56c9e HEAD@{8}: commit: Added sestina about pirates d058dda HEAD@{9}: commit: Changed villanelle about pirates 4a58f3e HEAD@{10}: commit: Added villanelle about pirates 4521350 HEAD@{11}: commit: Added another haiku about pirates ef980a4 HEAD@{12}: commit: Added limerick about pirates 4d41e95 HEAD@{13}: rebase (finish): returning to refs/heads/main 4d41e95 HEAD@{14}: rebase (pick): Added acrostic about pirates 2778ad8 HEAD@{15}: rebase (pick): Added haiku about pirates 0f00ca7 HEAD@{16}: rebase (squash): Added sonnet about pirates 4eb6f1d HEAD@{17}: rebase (start): checkout HEAD~4 8dc49e7 HEAD@{18}: rebase (abort): updating HEAD 4eb6f1d HEAD@{19}: rebase (start): checkout HEAD~3 8dc49e7 HEAD@{20}: commit: Added acrostic about pirates fb3c329 HEAD@{21}: commit: Added haiku about pirates cdcb678 HEAD@{22}: commit: Changed sonnet about pirates 4eb6f1d HEAD@{23}: commit: Added sonnet about pirates 0d9c7f0 HEAD@{24}: commit (initial): Initial commit

解释git中的命令

这个输出是git reflog命令的结果,显示了HEAD指针在本地仓库中的所有移动历史。让我详细解释每一行:

  • 基本格式说明
    每条记录格式:[commit-hash] [HEAD位置]@{[索引]}: [操作]: [描述]
最新操作(顶部)
  • fb94dcb (HEAD -> main) HEAD@{0}: rebase (finish): returning to refs/heads/main

    • rebase操作完成,HEAD重新指向main分支
  • fb94dcb HEAD@{1}: rebase (pick): Added sestina about pirates

    • 在rebase过程中,应用(pick)了"Added sestina about pirates"这个提交
  • 026d64c HEAD@{2}: rebase (squash): Added limerick about pirates

    • 在rebase过程中,压缩(squash)了"Added limerick about pirates"提交
  • a6f9948 HEAD@{3}: rebase (squash): # This is a combination of 3 commits

    • 合并了3个提交的 squash 操作
  • e945ca3 HEAD@{4}: rebase (squash): # This is a combination of 2 commits

    • 合并了2个提交的 squash 操作
  • ef980a4 HEAD@{5}: rebase (start): checkout HEADyu HEAD~5

    • 开始rebase,检出HEAD~5(当前HEAD的第5个父提交)
中间操作
  • ae56c9e HEAD@{6}: rebase (finish): returning to refs/heads/main

    • 另一次rebase完成
  • ae56c9e HEAD@{7}: rebase (start): checkout HEAD~4

    • 开始rebase,检出HEAD~4
  • ae56c9e HEAD@{8}: commit: Added sestina about pirates

    • 创建了一个提交,内容是"Added sestina about pirates"
  • d058dda HEAD@{9}: commit: Changed villanelle about pirates

    • 创建了一个提交,修改了关于海盗的维拉内拉诗
  • 4a58f3e HEAD@{10}: commit: Added villanelle about pirates

    • 添加了关于海盗的维拉内拉诗
  • 4521350 HEAD@{11}: commit: Added another haiku about pirates

    • 添加了另一个关于海盗的俳句
  • ef980a4 HEAD@{12}: commit: Added limerick about pirates

    • 添加了关于海盗的打油诗
较早操作
  • 4d41e95 HEAD@{13}: rebase (finish): returning to refs/heads/main

    • 另一次rebase完成
  • 4d41e95 HEAD@{14}: rebase (pick): Added acrostic about pirates

    • 在rebase中应用了关于海盗的藏头诗提交
  • 2778ad8 HEAD@{15}: rebase (pick): Added haiku about pirates

    • 在rebase中应用了关于海盗的俳句提交
  • 0f00ca7 HEAD@{16}: rebase (squash): Added sonnet about pirates

    • 压缩了关于海盗的十四行诗提交
  • 4eb6f1d HEAD@{17}: rebase (start): checkout HEAD~4

    • 开始rebase
  • 8dc49e7 HEAD@{18}: rebase (abort): updating HEAD

    • 中止了rebase操作
  • 4eb6f1d HEAD@{19}: rebase (start): checkout HEAD~3

    • 开始另一个rebase
  • 8dc49e7 HEAD@{20}: commit: Added acrostic about pirates

    • 添加了关于海盗的藏头诗
  • fb3c329 HEAD@{21}: commit: Added haiku about pirates

    • 添加了关于海盗的俳句
  • cdcb678 HEAD@{22}: commit: Changed sonnet about pirates

    • 修改了关于海盗的十四行诗
  • 4eb6f1d HEAD@{23}: commit: Added sonnet about pirates

    • 添加了关于海盗的十四行诗
  • 0d9c7f0 HEAD@{24}: commit (initial): Initial commit

    • 初始提交,仓库的第一个提交
关键观察
  1. 多次rebase操作:用户多次进行rebase,可能是为了整理提交历史
  2. 提交压缩:使用了squash来合并多个相关提交
  3. 中止rebase:有一次rebase被中止(abort)
  4. 诗歌主题:所有提交都与海盗主题的诗歌相关

5. 检查被覆盖的提交

在 reflog 中发现与villanelle.txt相关的提交d058dda,该提交被 rebase 操作覆盖。查看该提交的内容:

gitshow d058dda

输出:

commit d058dda829008df2881c18d34eb6ac1f7cbf8015 Author: Fish enjoyer <fish@cyberatuc.org> Date: Sat Jan 31 19:53:51 2026 -0500 Changed villanelle about pirates diff --git a/villanelle.txt b/villanelle.txt index 634f5a0..ebc9b59 100644 --- a/villanelle.txt +++ b/villanelle.txt @@ -7,7 +7,7 @@ No place remains for honest men to hide. The Jolly Roger flies above the bay. Across the map where ink and salt decay. -BCCTF{1gN0r3_4ll_PreV1OU5_1n57Ruc7iOns}. +They chase the ghosts that on the winds do ride. They seek the gold before the break of day. The restless waves wash all the blood away.

发现 Flag

在被覆盖的提交d058dda中,发现了被替换的内容,其中包含 Flag:

Flag: BCCTF{1gN0r3_4ll_PreV1OU5_1n57Ruc7iOns}

总结

通过以下步骤成功找到 Flag:

  1. 检查 git 仓库状态,确认工作区干净
  2. 查看 git 提交历史,了解仓库结构
  3. 检查分支和标签,排除这些位置的线索
  4. 使用git reflog查看所有 git 操作历史,发现被覆盖的提交
  5. 通过git show查看被覆盖提交的内容,找到 Flag

Flag 被隐藏在一个被 rebase 操作覆盖的提交中,通过查看该提交的 diff 内容成功提取。

附录:查看所有git内容操作

gitlog-p>all_commits.md

使用git log -p命令查看所有提交的详细内容,并将输出重定向到文件中以便查看。

但要注意:

  • git log -p 命令只会显示当前分支(main)上的提交历史
  • 提交 d058dda 已经被 rebase 操作覆盖,不再存在于当前分支的历史中
  • 只有通过 git reflog 命令才能找到这种被覆盖的提交
http://www.jsqmd.com/news/1267024/

相关文章:

  • Diffusion模型与Stable Diffusion架构深度解析
  • 探索Hangul.js的核心功能:5个你必须知道的实用方法
  • 万国手表回收2026洛阳指南 毓典寄卖行专业名表回收门店 - 毓典寄卖行
  • 基于YOLOv5改进的护栏翻越行为检测系统设计与优化
  • 5个实用技巧:用DriverStoreExplorer彻底清理Windows驱动存储
  • 终极指南:如何快速解密游戏音频文件?ACB Decrypter完整教程
  • JVM 编译原理深度研究
  • 人工智能技术体系:从机器学习到深度学习的演进与应用
  • 告别GitHub龟速下载:5分钟实现20倍加速的终极解决方案
  • 为什么选择AudioLazy?Python DSP库对比与性能分析
  • 免费开源M3U8视频下载工具:N_m3u8DL-CLI-SimpleG完整指南
  • 如何用raylib在5分钟内创建你的第一个游戏窗口
  • 深入解析TMS320C55x DSP芯片支持库:从硬件抽象到DMA、中断实战
  • HslControlsDemo最佳实践:工业物联网项目中的控件选型与布局设计
  • 苏州智能算力中心:AI算力集群架构与应用实践
  • 实测!Gemma-4-12B-coder-OptiQ-4bit能否通过程序员终极测试:编写回文检测函数
  • AI全彩3D打印技术:从图像到实体的创新实践
  • Q-learning在电力市场交易策略中的优化应用
  • Linux命令行参数、环境变量与内存管理详解
  • 抖音内容收藏革命:5分钟打造你的个人视频档案馆
  • DSP/BIOS通信模块选型实战:消息与流模型深度解析
  • 316L不锈钢焊管厂商 - 速递信息
  • 边缘AI与AutoML融合:轻量化模型优化实践
  • 嵌入式USB主机控制器驱动:架构、枚举与管道管理详解
  • 省级智能制造创新中心通过平台促成数十项技术交易,其运营模式值得哪些城市借鉴?
  • 2026年8月全国 GEO 服务商综合实力TOP5实测榜单(智擎GEO 实测首位) - 速递信息
  • LLaMA-Factory微调MiniCPM-o-2_6-GPTQ实战:医疗/教育领域定制化模型训练指南
  • 暗黑破坏神II终极角色编辑器:5步打造完美存档的完整指南
  • LLM优化电商产品列表:提升搜索准确率与转化率
  • SoundCloud Redux核心功能探索:音乐搜索、播放与用户数据获取