ynk800のメモ帳

イベントの参加記録や備忘録などを書いていきます。

SECCON Begginers 2018の振り返り

SECCON Beginners 2018

CTFやってみたいんだけどどこから始めればよいのだろう…と思っていた折に、丁度よくSECCON Beginners 2018の案内が目に入り登録したところ抽選が見事当選。

SECCON Beginnersとは - SECCON 2018

せっかく参加してきたので振り返ってみます。 自分にとっては入門的な内容の講義+演習のCTFというスタイルは丁度よい構成でした。 ただ、講義の内容をすぐに演習で活かすのはちょっと難しかったな…。

今回のSECCON BeginnersではCryptoとPwnが題材でした。 講義パートで技術解説があり、CTFパートではCrypto4問、Pwn3問、Misc4問が出題されました。

講義パート

Cryptoはその名の通り暗号解読系の問題で、公開鍵暗号方式RSAが取り上げられていました。 公開鍵暗号RSAといえば超メジャーな技術ですが、CTFの問題を解くとなると仕組みを正確に理解しておくだけでなく、 どういう条件のパラメータだと既知の攻撃手法が使えるのかまで知っておく必要があります。 また限られた時間内で問題を素早く解くという意味では、 利用できる周辺ツール類、ライブラリをどれだけ知っているかということも重要ですね。 実務の観点でいうと、使ってはいけない素数のペアについて詳しくなれてよかったです。 あと乱数生成器の話の中で、「予測可能な乱数生成器でセッションIDなどを発行していると別の人のセッションIDが予測できる」というのが興味深かったかな。 言われてみればそりゃそうなんですが、意識したことがなかったので気を付けるべきですね。

Pwnはプログラムや環境の脆弱性を突いてFlagを取得するタイプの問題です。BOF(バッファーオーバーフロー)が題材でした。 Pwnは仕事柄あまり馴染みがなく大苦戦…。

CTFパート

どうやって解いたかを振り返ってみます。

Factoring

具体的な値はメモるのを忘れてしまいましたが、RSAで使うN=pqの値が与えられるので、p+qを求めよという問題。 演習に使用した環境にfactorコマンドが入っていたので、これを使えば一発でした。

Go Fast

2^{4085} mod 97 を解く問題。 演習環境に入っていたpythonでpow(2,4085) % 97をたたいて終わり。 他の人の話を聞くと、pow(2, 4085, 97)でよかったらしいです。 2. 組み込み関数 — Python 3.6.5 ドキュメント

SimpleRSA

これも具体的な値はメモってませんが、RSAのp, q, e と暗号文Cが与えられるので、平文を求めよという問題。 講義資料に記載の拡張ユークリッドの互除法pythonのコードを使って暗号鍵を求め、復号して終わりでした。

Find Primes

問題はgenerate.pyとproblem.txtの2つのファイルが与えられるだけ。 generate.pyは中身を見ると、どうやらRSAで鍵を10個程度用意し、平文のflagをそれぞれの鍵で暗号化して出力しているだけ。 problem.txtはその出力っぽい感じでした。 generate.pyの中身をよくよく見ると、公開鍵に使用する素数の組み合わせの一部が使い回されていました。 講義パートの中で鍵の素数を使いまわすと既知の攻撃手法が使えるという話があったので、 それをどうやって実装しようか考えている最中にタイムアップ。 普段仕事ではJavaを使っていますがわりとEclipseに頼りきりなので、ちゃちゃっと書いて動かせるスクリプト系言語に強くなる必要性を痛感… PythonRubyと仲良くなろう。

Pwnの問題

講義パートでアセンブリgdbについて解説があったものの、アセンブリを読み慣れていないのもあり20分くらい経っても解けそうになかったので諦めました。 一応、講義で触れていたCanaryっぽい文字は見えたんですが、何バイト与えればBOFして上書きできるのかがわからなかった…

Misc

PwnとCryptoに時間を使いすぎたのであまり見れませんでした… Welcomeの問題は採点システムの使い方のチュートリアルみたいなものなのでよいとして、 Tekeisan4b ShinagawaはCookieか何かに回数が保存されていてそれを改変すれば簡単にFlagが出てくるのかと思いましたが、本当に愚直に100回計算するタイプの問題だったようで。 decrementも取り組む時間が取れれば解けたような気がしますが、時間配分ミスなので後の祭り。

終わりに

初めてCTFのイベントに参加しましたが、解けたときの達成感が気持ちよく純粋に楽しかったです。 CTFを通じて攻撃手法を知ることは転じて防御手法を知ることになるので、ただ遊びとしてだけでなく実務でも役に立つものだと思いました。 ちょっと興味あるけどどこから始めればよいのだろう、とお悩みの方にはSECCON Begginersはおすすめです。 運営スタッフの皆様、ありがとうございました!