[日本語] [English]

Git Bomb

Gitのレポジトリをアップロードするとcommitをしてくれるサービスの情報と、 ファイル gcaas.zip および prepare-git-repo.sh が与えられた。

このサービスは、以下の手順で利用が可能である。

  1. 適当なディレクトリを用意し、git init コマンドでGitレポジトリにする。
  2. このディレクトリ内に適当なファイルを用意し、git add コマンドでステージングする。
  3. このディレクトリの中身全て (.git ディレクトリを含む) を7-Ziptar.gzアーカイブにする。
    この時、このディレクトリ自体はアーカイブに入れず、.git ディレクトリなどがアーカイブのルートに配置されるようにする。
  4. 作成したアーカイブファイルを以下のHTMLからサービスに送信する。

send.html

アーカイブファイルをサービスに送信すると、処理結果の標準出力と標準エラー出力の内容が返される。

問題文より、flagは /flag にあるということなので、以下の内容をレポジトリ内の .git/hooks/pre-commit ファイルに保存し、 同様にレポジトリのアーカイブを作成して送信した。

pre-commit

すると、標準エラー出力の内容としてflagが得られた。

sdctf{4lw4y5_Us3_GIT_cl0nE_n3v3R_sn3ak_R3P0}

writeup by MikeCAT

San Diego CTF 2022