TSGCTF2019の解答
floretとして2人で参加
Warmupと感想入力問題(?)含めて5問解けて14位 870ptsでした
[Forensic]Obliterated File
Point: 92 (90solves)
問題文
※ この問題は非想定な解法があり,"Obliterated File Again" で修正されました.元の問題文は以下の通りです.
TSG CTFに向けて問題を作っていたんですが,いつの間にか誤ってflagのファイルをコミットしていたことに気付いた!とにかく,Google先生にお伺いして次のようなコマンドを打ちこみました.よくわからないけどこれできっと大丈夫...?
$ git filter-branch --index-filter "git rm -f --ignore-unmatch problem/flag" --prune-empty -- --all
$ git reflog expire --expire=now --all
$ git gc --aggressive --prune=now
解法
git log --name-status
git reset --hard 8412
でそのcommitまでさかのぼる
lsで確認するとflagというファイルがあるので
fileコマンドで確認すると
$ file flag
flag: zlib compressed data
zlibという形式で圧縮されているようなので
pythonで解凍する
import zlib
f=open('flag',mode='rb')
zlib.decompress(f.read())
これでflagゲット
TSGCTF{$_git_update-ref_-d_refs/original/refs/heads/master}
[Forensic]Obliterated File Again
Point: 178 (61solves)
問題文
さっきのコマンドには間違いがあったことに気づきました.これで今度こそ本当に,本当に大丈夫なはず......?
$ git filter-branch --index-filter "git rm -f --ignore-unmatch *flag" --prune-empty -- --all
$ git reflog expire --expire=now --all
$ git gc --aggressive --prune=now
解法
先程と同様に
git log --name-status
としてもflagのログを発見できない
履歴の消し方が強くなっているようだ
gitの履歴はhash値へのポインタのようなものなので
hash値のリストを見ることができればflagの情報
を確認できると考えて調べると
git rev-list --objects --all
で全てのobjectのhash値の一覧を見ることができると分かった
problem/flagというhash値を
git cat-file -t c1e3
で調べるとblobであることが分かったので
git cat-file -p c1e3
で中身を見ると文字化け
前の問題と同じだろうとエスパーして
git cat-file -p c1e3 > flag
で中身を別ファイルに入れて、
import zlib
f=open('flag',mode='rb')
zlib.decompress(f.read())
Obliterated Fileで使ったpythonをそのまま実行してflagゲット
TSGCTF{$_git_update-ref_-d_refs/original/refs/heads/master_S0rry_f0r_m4king_4_m1st4k3_0n_th1s_pr0bl3m}
結局想定外の解法は分からなかった。。。
[Stego]Harekaze
Point: 499 (8solves)
問題文
Are you ready for next CTF?
次のCTFの準備はお済みですか?
解法
単純にflagになる文字列の部分の色を変えてるだけだと思い
pythonの画像処理ライブラリ使用して画像を変換
import cv2
filename='harekaze.jpg'
gry=cv2.imread(filename,0)
cv2.imwrite('flag.jpg',gry)
見づらいけど色覚ある人なら読めるレベル
これでflagゲット
一応
TSGCTF{UnderTheBlueSeaMermaidSwims}
感想など
正直問題としてはHarekazeが一番簡単でした。
何か間違いあったら指摘お願いします。
参考にしたサイト
https://qiita.com/nkshigeru/items/eb2b6f758c2707757738
https://docs.python.org/ja/3/library/zlib.html
https://git-scm.com/book/ja/v1/Gitの内側-メインテナンスとデータリカバリ