CyberRebeatCTFに参加したのでwrite-up
先日、SECCON Beginner Hiroshima に参加しまして、初めてCTFやってみたのですが、これが面白くってオンラインの大会に出てみたよ。という話です。 後輩のguriと出場しましたが、大半は彼が解いてくれました。すごい!
tl;dr
壊滅的でした。
Binary
SimpleBinary
SimpleBinaryファイルが配られる。 実行権限与えるも、
$ ./SimpleBinary
応答なし。 stringsかけてもヒントはなさそうだったので逆アセンブルかける。 それっぽい関数を見つけるも、そもそもアセンブリが読めず断念。
Binaryクリアするにはちゃんとアセンブリ読んで編集してってできないとダメだね。
crackme
未着手。
f31337
未着手。
Crypto
Rotation
P4P6S{9RN4RUNPXR45}
を解読する。
ローテーションというからrot13だったり、いろんな文字数ズラすも解読できずパス。
FLAG.encrypted
未着手。
Signature
未着手。
Exercise
Exercise
CRCTF{CyberRebeatCTF}
Misc
Readme
が配布される。
どっかで見たことあると思ったらこれか。 www.ebook5.net
一旦パスしてあとで解こうと思ったらチームメンバーに解かれてました。
Opening Movie
url先の動画を300回再生しろという問題。
startを押すと爆音でオープニングムービーが流れる。驚く。
動画再生中にstart押すと「Now Playing...」とalertかかって言うことを聞かない。
BeautifulSoupでスクレイピングしようかと思うも、これAjaxかなにかで動的に動画ファイル取得して埋め込んでいるから、BeautifulSoup使えないことが判明。 Selenium使ったことないけど1時間位格闘して諦めた。こりゃ悔しい。頑張って5回位手動でstart押したけど、悔しいこりゃ。
Programming
Calculation
ncコマンドで指定されたip叩くと計算式が返されるので答えていく。
$ nc 59.106.212.75 8080 69 - 98 + 34 - 65 - 88 0 Wrong!
これを30問くらい出題される。
Pythonで演算子をパースして計算するスクリプト書いたものの、ncコマンドからパイプで値渡せるわけじゃないのね。
しょうがなくコピペでPythonに投げる。
コマンドに直接流し込めば計算もしてくれるが、 pyperclip
モジュールを使えば、実行結果を自動的にクリップボードに保存するなんてこともできるので、ちょっとは楽になる。
後日談的な話ですが、Pythonでncコマンド叩けるスクリプトが公開されていました。
これ使えばよかった…
Prime Factor
Calculationと同様、ncコマンドで最大素因数を答える問題。 強引にPythonに投げましたが、単純なアルゴリズムだと桁数増えると計算に時間かかりすぎてしまうので、sympyを使う。
import sympy def max_prime(n): return max(sympy.factorint(n).keys()) max_prime(542778378564)
ちなみに実行するときはローカルでもよかったけど、Colaboratoryを使った。
https://colab.research.google.com/
最初っから数学系のパッケージがインストールされているのでimportするだけでいいし、手軽にGPU使えるのでスクラッチするのに良いと思ってる。
Visual Novels
余裕があれば解こうと思ったが結局パスした。
Recon
Tweet
未着手。
CyberRebeatScripts
未着手。
ChangeHistory
これに一番時間をかけたかもしれない。そして解けなかった問題。 GitHubのリポジトリ内にFLAGが隠されているらしい。
closedのissueを見ると、間違ってコミットしたとの記述があった。
コミット番号が書いてあるものの、git logで見れるわけでもない。 メルカリのエンジニアブログの記事を参考に、commit番号生成のロジックを学ぶ。
FLAGがどこに隠れているか、自分はコミットメッセージに含まれていると睨んだ(のが間違いだったか)。 ブルートフォースでコミット情報を復元できそうと思い、hashcat導入するも時間切れ。 hashcatも文字数が把握できてると効率よく当てれるらしいけど、今回は文字数不明だったのでうまくいかず、断念。
Stegano
Secret.pdf
コピペ
Alpha
未着手
Last 5 boxes
未着手
Trivia
Monero
未着手
Crossword
未着手。
Web
White page
http://hidden-field.cyberrebeat.adctf.online/index.php id:Hiro password:LittleGarden
とのことだた入力フォームは表示されず。styleでhiddenがかかってるので、インスペクターから直接styleを修正してあげて入力する。
<form action="index.php" method="post"> <input type="text" name="id" style="visibility:hidden"> <input type="text" name="password" style="visibility:hidden"> <button>LOGIN</button> </form>
これ最初どうやっても解けんなと思ったら、問題文のidがHeroになってました。いつの間にか訂正されたみたいです。ヒーロー。
Let's Tweet!
ハッシュタグ付きでツイートしたURLを送るフォームがあり、送信するもdbの権限周りで弾かれ断念。
Uploader
未着手
あとがき
Beginnerあがりたてにはちょっと難しかった。ただ時間はあるので、じっくり調査できて勉強になりました。
WindowsマシンとLinuxマシンもちゃんと用意するべきでしたね…
あと、write-up書くときのために、逐一キャプチャしておけばよかったですね。 次回からはそうしよう。
お疲れ様でした。