SECCON2015 Online CTFに出た
この記事は「さくらインターネット Advent Calendar 2015 - Qiita」 8日目の記事です。
・・・なんですがうかうかしていたらいい感じの枠が埋まってしまっていたので名目上8日目だけど6日目に書いちゃいます。すいません。
チームMr.Takedaで出て3500ptsで19位、残念ながら3年連続本戦出場は無理そう。
以下writeup
自力で解いたやつ
Bonsai XSS Revolutions
起動するとわけのわからん画面が出る。
どこか外部と通信してるのかなあと思ってWiresharkだのBurp SuiteだのでSSLで通信してるパケットを捕まえようとしたけど何も無くていったん断念。
放置していたらチームメイトの__mathせんせーから「25番ポート開いてなんかしてるぞ」との情報、見てみたらどうもSMTPサーバが立ち上がってるっぽい。
最初はThunderbirdのSMTPサーバとしてlocalhostを登録していろいろやっていたのだけどThunderbirdがいろいろ余計なことをしてくれるので自前クライアントに方針転換。
C#でメール送信しまくるクライアントを書いたはいいけど標準で付いてるSystem.Web.Mail.SmtpClientではちゃんとRFCに準拠したメールアドレスとかでないと例外を吐いて死ぬ。
そこで「SMTPでメールを送信する: .NET Tips: C#, VB.NET」のコードを丸々拝借して変なメールを連続して送れるコードを書く。
最終的にはDateフィールドに任意の文字列を入れることができ、エスケープもされないようなのでここでXSSが可能。
ブラウザのユーザーエージェントがフラグなので Date: <script>alert(window.navigator.userAgent);</script>
をヘッダに仕込んでフラグゲット。
Exec dmesg
極端に機能の少ない(?)LinuxのLiveCDのイメージが渡される。
問題名からdmesgが怪しいけどbusyboxから削られてるのかdmesgが実行できない。
VMwareで起動したら幸いネットワーク環境も一発で認識してくれていたのでちゃんとしたBusyboxを落としてきて
busybox dmesg | grep SECCON
でフラグゲット。
QR puzzle (Windows)
バラバラになってるQRコードのパズルを完成させてQRコードの内容を読んだら1ステージクリア x300ステージぐらいあるやつ。
メモリダンプしてみたらあからさまに内部で使ってる辞書っぽいのが見えたのでそいつをWindowsAPIで送りつけまくる頭の悪いコードを書いてみたら案外上手く行ったのでその方針で行く。
残念すぎて正解したかどうかもわからないまま300回回す上一度通ったワードも再度チャレンジする(これに関しては問題の仕様が不明なのである程度しょうが無いけど)とか本当に頭が悪い。
途中拾えなかったワード(先頭大文字になってる単語が1つだけ混じってる)とか唯一辞書に載ってなかったsecconだとかを手で読むお世話をしながら延々6時間ぐらい回してたらフラグが出た。記念にスクリーンショット撮ったんだけど大会終了後にPCが落ちてスクリーンショット紛失。
とりあえずそんなこんなでフラグゲット。
すごいやってるぞ感があるけどこの間PCは使えないし遅いしで何もいいことがないソルバーの実行中の動画があったので貼っておきます。
途中までやって投げた or 途中からやった
Fragment2
全く意味がわからなかったけどもしかしてHTTP2じゃね?と言ってWiresharkでHTTP2としてDecodeさせてみたけどよくわからず。
ここが怪しそうじゃね?とSlackに投げて放置していたらチームメイトのaki33524が解読してくれた。
Command-Line Quiz
chibiegg先生がstage4まで突破して最後で悩んでいたのを持っていった。
以上
Bonsaiがおそらく想定解で解けたのでよかった
Exec dmesgは要らんこと(Slackで解けたぜヤッター等)してなければ最速いけたかもしれないのが残念
つらい回路を読めるようになりたいがつらい