- [Web] Sanity Check
- [Forensic] Portal Savior
- [Forensic] Roblox 1
- [Forensic] Roblox 2
- [Crypto] Recovery
- [Misc] Hexahue Hate!
2336点で65位/635。
んー、Web問…
[Web] Sanity Check
- Burpで与えられたURLを開いてソースを眺めると、フラグが書いてある
curl https://challs.viewsource.me/sanity-check/ | grep vsctf
Web何も分からなかった…
[Forensic] Portal Savior
- 一行目で検索すると、PortalのAIFファイルという形式と分かる
- http://portalwiki.asshatter.org/index.php/Aperture_Image_Format.html っぽい
- ここの「Method 1 (Precompiled)」を使えば開けそう
- DATAというフォルダにあるAPERTURE.APFとかを見ると似たような形式になっていることが分かる
- ちょっとファイル形式がおかしいので、フォーマット形式を見ながら修正する
(c) Doug Rattman 1985 All Rights Reserved!
は要らないので消す- 改行回りがおかしいので、APERTURE.APFを見ながら改行を調整
- 修正できたら、DATAフォルダのAPERTURE.APFを修正後のmaydayに置き換えると、隠された文字列が表示されてくる
[Forensic] Roblox 1
- adファイルが2つ与えられる。FTK Imagerで開く
- Robloxとはゲームっぽいので、とりあえずAppData回りを探してみるとRoblox関連のフォルダがあるのでダンプしてくる
\\Users\adminbot6000\AppData\Local\Roblox
- vscodeで開いて、nameで検索して適当に眺めているとftcsvisgreatという名前が出てくる。フラグフォーマットにくるんで提出すると通る
[Forensic] Roblox 2
- ftcsvisgreatで検索して周辺を探っていくと、IDは3635455297であると分かる
- logsフォルダを見ればよさそうなので、フォルダを限定してuserで検索する。大量に結果が出てくるので3635455297に関連するものを削除すると、もう一つユーザーが見つかる
- 0.531.0.5310423_20220620T033202Z_Player_9BB0E_last.logにてamazingmaltというユーザーを見つけることができる
[FLog::GameJoinUtil]
でそのログを見てみると、番号っぽいものが得られるのでrobloxでゲームが探せる画面を探して調べると、69184822という番号でゲームが見つかる- vsctf{themeparktycoon2}でフラグ獲得
[Crypto] Recovery
- validate関数を読み込んでいく
- passwordは49文字で、偶奇の文字は判定方法が異なる
- 奇数番目の文字は前半部分のreturn Falseらへんまでで判定
for a, b in enumerate(zip(gate, key), 1):
という感じでlen(b[1]) != 3 * (b[0] + 7 * a) // a
を判定している- b[1]はその上の
key = ...
で作っているが、passwordの奇数番目を後ろから1個飛ばしで取ってきたもののascii個数分7vs8vs9vs...みたいにくっつけている。 - key, gateの宣言の下で
for a, b in enumerate(zip(gate, key), 1):
print(chr((3 * (b[0] + 7 * a) // a - 2) // 3 + 1))
みたいにすれば奇数番目が逆順で手に入る
- 偶数番目の文字は後半部分で判定している
hammer = {str(a): password[a] + password[a + len(password) // 2] for a in range(1, len(password) // 2, 2)}
を読み解くことになる- まあ、入力を適当に入れて、
print(hammer)
をして中身を見てみるのが手っ取り早い - 偶数番目だけ持ってきて、半分に分割して前半と後半の2つにしたら、
[前半の先頭][後半の先頭]1
として先頭をどっちも取り除いて、ドットつけて、[前半の先頭][後半の先頭]3
...みたいにして文字列を作っている - blockの中身をbase64デコードして、ルールに従ってばらせばフラグ完成
vsctf{Th353_FL4G5_w3r3_inside_YOU_th3_WH0L3_T1M3}
[Misc] Hexahue Hate!
- hexahueでデコードされた画像が渡されるので、ただただデコードするだけ
- 多分普通にやっていたらマジでhateだったと思うが、調べるとkusuwadaさんの素晴らしいデコーダーがある kusuwada/hexahue: Hexahue decoder and encoder
- hexahue_decodeメソッド内部を位置調整する感じでリライトするとデコードできる
- デコード文章をジーっと見つめると
THE MESSAGE YOU SEEK IS IHATEHEXAHUESOMUCHPLEASEHELP
とあるので、vsctfにくるんで提出