今年はチームshioshiotaで参加して結果は3100点で29位でした。
勝手に問題が解かれる分一人よりかは楽でした。
###Entry form
普通に入力したメールアドレス宛にメールが飛ぶと思って生きてるアドレスを入力してみたが、関係ないようなので適当にSQLインジェクションを試すが不発。
一旦時間を置いて適当に考えてURLを削ってみるとソースコードが読めた。OSコマンドインジェクションがあったのでlogをcatしようとするが権限が無かった。権限見るためにls -alRしたらbackdoorがあったのでそれを使ってフラグを取った。
それはそれとして、logに無駄にメールアドレス吐いて、他の人にも見えるのはやめて欲しい。
###Unzip the file
他の人がブルートフォースで頑張っていたが、zipファイルに明らかに怪しいバックナンバーのファイルがあったので、「既知平文攻撃とかできそう」って言ったらshioshiotaさんががんばってくれてた。
###Decrypt it
実行ファイルに引数を与えると引数が暗号化+base64されて出力される。何回か試した感じストリーミング暗号だったので1文字ずつ全探索するプログラムをC++で作成。C++で全部やるのは面倒なので下のような感じにして、result.txtに末尾の1文字の暗号結果が出力されるようにした。
snprintf(command, 999, "./cryptooo '%s%c' | cut -d ' ' -f 2 | base64 --decode | tail -c 1 > result.txt", str, c);
system(command);
###QR puzzle (Windows)
Windows上でプログラムを書けるまともな環境を持ってるのが自分しかいなかったぽいので担当した。C#でパズルのウィンドウの位置を固定して、デスクトップキャプチャ取って、パズル解いて、リーダに読ませて、結果をSendKeysで自動送信する。やるだけ問題だった。
https://gist.github.com/cos65535/e44bfdb0a07ee4e50586
###QR puzzle (Nanogram)
どうせピクロスのソルバーとか誰か作ってるやろう、と思って探したらすぐ見つかったのでやったら結構時間がかかった。
最終的には、クリップボードのテーブルタブの内容をパースしてソルバーに突っ込んで、ソルバーの出力をsvgに書き換えて、convertでpngに変換して、zbarimgで読み取ってクリップボードに出力するスクリプトを作った。クリップボード間は問題ページを開発ツールのインスペクタで開いておいて人力でコピペした。途中でzbarimgで読み取れないQRコードが出ることがあったので、諦めて30回連続で読み取れるまで人力でコピペし続けたので疲れた。
###その他
今回5人チームで参加時間もてきとうで思ったより良い成績が取れた。もうちょい真面目に頑張れば予選通過できるかもしれないので、来年は頑張りたい。