這是今天的題目
查看檔案型態及解壓縮等步驟我就不再贅述,今天直接來看解題的過程。
我們拿到的題目資料夾裡可以看到兩個檔案:message.py跟message.txt。
一開始直覺是去看message.py,結果發現它只有一行print("Hello, World!",還缺一個括號,跑起來直接 SyntaxError,根本沒什麼幫助。接著我嘗試用git log message.py與git blame message.py,卻都顯示這個檔案在Git歷史中不存在。看git status也印證了這點,至於?? message.py 表示它只是未追蹤檔案。
既然如此,線索就要從 message.txt 下手。我用以下指令:
git log --oneline -- message.txt
果然看到有commit訊息,最關鍵的是它的commit message裡就藏著flag。所以這題的重點不在表面上的 message.py,而是要懂得檢查Git歷史,追蹤檔案以前的版本或commit訊息。
心得:
這題讓我學到一個滿實用的技巧:不要只看現在檔案的內容,還要善用 Git 的歷史。像這次 message.py 看起來很顯眼,但其實不是本題重點,真正的flag是藏在 message.txt的commit訊息裡。
在真實專案中,很多人以為把檔案刪掉就安全了,但其實Git的版本控制就是用來保留歷史的,只要有人能存取 repository(儲存庫),就有辦法追出被刪掉的東西。這也提醒我,以後寫程式時要小心,不要隨便把敏感資訊commit進去,不然就算移除,也可能被翻出來。
整體來說,這題不算難,但能讓人重新認識 Git 的作用,也算是在複習一次之前談過的git類的題目。