忍者ブログ

プログラミングの練習

プログラミングの問題やプログラミング関連知識、ソフトウェアのテストについてのブログです

【PicoCTF】基本のワークフローで攻略せよ!「I have built my own Git server...」のadd/commit/pushアプローチ

前回に続き、愛用のM3 MacBook Airのターミナルを相棒に、CyLab Security Academy(旧PicoCTF)の「General Skills(Easy)」カテゴリにある問題「I have built my own Git server with my own rules!」に挑戦しました!


今回の問題は、特別な裏技を使うわけではなく、add・commit・push というGitの基本ワークフローを正しく実践することの重要性が試される実践的なテーマでした。どのようなアプローチで謎を解き明かしていったのか、その手順をまとめておきます。




1. リポジトリのクローンとREADMEの解析

まずは問題文の指示通り、指定されたSSH経由でGitリポジトリをローカルへクローンします。


  • ・カテゴリ: General Skills(難易度:Easy)

    ・初期調査: クローンしたディレクトリを確認すると、中には README.md が1つだけ存在していました。

その README.md を確認してみると、今回の謎を解く最大の鍵(ルール)が次のように記されていました。


# MyGit

### If you want the flag, make sure to push the flag!

Only flag.txt pushed by root:root@picoctf will be updated with the flag.

GOOD LUCK!

過去のコミット履歴を探すのではなく、「指定された条件を満たすファイルを自分で作り、正しい手順でコミットしてプッシュする」という、Gitの基本操作がそのまま鍵になるアプローチです。




2. 基本のワークフローによる条件のクリア

サーバー側のルール(「root:root@picoctf による flag.txt のプッシュ」)をクリアするため、M3 MacBook Airのターミナル上でGitの基本操作を行います。


  • 1. ユーザー情報の準備とコミット作成

    git config user.name "root"

    git config user.email "root@picoctf"

    echo "give me flag" > flag.txt

    必要な設定を整えた上で、対象となる flag.txt を作成します。

  • 2. add / commit / push の実行

    git add flag.txt

    git commit -m "Add flag.txt"

    git push origin master

    お馴染みのGitワークフローに沿って、変更をステージング、コミットし、リモートサーバーへプッシュします。

【実行結果】
プッシュが完了すると、サーバー側の自動フックが条件の一致を検知し、コンソールに無事フラグが表示されました!

Here's your flag: picoCTF{1mp3rs0n4t4_g17_345y_6877715a}


3. まとめ


  • ・「I have built my own Git server...」は、READMEの仕様を読み解き、適切なGitワークフローを実践する問題

    ・日頃の開発でお馴染みの add / commit / push の基本がいかに強力かを再認識できる

    ・仕様に沿って正しく操作を完結させ、フラグをゲットできたときの達成感は格別!

基本に忠実なGit操作を積み上げることで、セキュリティ上の謎を鮮やかに解き明かせるのは本当に面白いですね。次回のチャレンジもコマンドラインを武器に華麗に攻略していきたいと思います!


PR