iT邦幫忙

2025 iThome 鐵人賽

DAY 20
0
Security

30 天闖關 picoCTF系列 第 20

[2025鐵人賽Day20]Git 題目統整與心得

  • 分享至 

  • xImage
  •  

最近解了一些Git有關的CTF題目,用法基本上差不多只是有些解題時的小地方不同而已。這類題目的核心是要懂得翻repo的歷史紀錄。那趁今天就整理一下常用指令,以及我自己的心得。

首先我先來談一下常用到的git指令:

檢查狀態

git status

這是用來看哪些檔案是未追蹤、修改過及還沒commit過的指令。

查看檔案歷史

git log <檔案>

顯示該檔案的commit紀錄。

查看所有commit簡寫

git log --all --oneline

快速掃過整個repo歷史,有時候flag會直接藏在message裡。

檢視某個 commit 的檔案內容。

git show <commit>:<檔案>

看特定commit裡檔案的樣子。

檢查刪除紀錄

git log --diff-filter=D -- summary -- <檔案>

如果flag是藏在被刪掉的檔案裡,這招特別有用。

心得:
這幾天做了幾題和Git有關的挑戰,過程中慢慢體會到他在解題裡的特殊地位。題目表面上可能只丟給我們一個看似普通的檔案,但只要他有repo,就代表整個歷史都可以一步步慢慢去找出來。從一開始的git status去確認哪些檔案真的有被追蹤,到git log看commit訊息,再到git show打開舊版本檔案。每一個步驟都像是時光機,所以之前有個解過的題目就叫Time Machine。剛開始我常常會卡在檔案內容本身,直到後來才發現flag往往不在現在,而是藏在過去。這點讓我印象很深,因為在真實開發中也有相同的問題,如果不小心commit了敏感資料,就算之後刪掉也還是能被人找到。換句話說,Git題目不只是在測試指令熟不熟,更是在提醒我們資訊安全的基本觀念。做完這幾題,我覺得自己對git的理解不再只是會執著於題目的表象,而是真的能把它當作一種時間軸去思考,也更清楚為什麼很多公司會嚴格要求不要把密碼、金鑰等敏感資訊寫進repo。這些題目雖然難度不算高,但帶來的警惕卻很實在。


上一篇
[2025鐵人賽Day19]Blame Game
下一篇
[2025鐵人賽Day21]Netcat
系列文
30 天闖關 picoCTF22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言