セキュリティ・キャンプ 全国大会 2018を振り返って #seccamp

セキュリティ・キャンプへNOCチューターとして参加しました。NDAに触れない書ける範囲でやったことなどを書いておきます。 準備 会場ネットワークは建物の回線引き込みが終わっている段階から関わりました。建物にあるEPSの配線を変更したり、Wi-FiのAPを設置したりしました。各部屋での疎通確認や掲示物作成にも取り組みました。 電気配線シャフト... Read More

母校でワークショップを行いました。

母校の高校でワークショップを行いました。スライドは以下に公開しました。 配布した資料は以下のリンクからダウンロードできます。 パケットワークショップ配布資料 楽しみながらWiresharkの使い方やパケットの仕組みについて興味を持ってもらえたようで良かったと思いました。また、機会があればワークショップを行いたいと思います。 ... Read More

Harekaze CTF 2018やってみた

久しぶりにCTFやれる、まとまった時間が作れたので参加してみた。全体での順位は230ptで131/447だった。修行が足りなすぎる。 ObfuscatedPasswordChecker 配布されるsrc.zipを展開してみるとhtmlファイルとjsファイルが含まれている。htmlファイルをブラウザで開いてみるとパスワードフォームが表示される。ここに何かの入力値を入れると、何か起きそうだと考えた。 試しに開発者ツールのNetworkタブを開きながら、適当な文字列を入力してボタンをおしてみる。タブ内に変化はなく、リクエストは送信されていないと分かる。つまり、このhtmlとjsで構成されるクライアント側で完結するアプリだと考えられる。 次に、JavaScriptの挙動を追跡してみる。ブラウザの開発者ツールから「ボタンが押された時」に関するイベントを探してみる。 bundle.jsの1行目にボタンを押した時の処理があることが分かる。実際にbundle.jsを表示して整形してみる。 次にボタンが押された時に、「入力値がどのように判定されているか」を調べてみる。ボタンが押された後の処理は311行目から319行目までの範囲にかかれている。 この中にif文がふくまれている。このソース全体は軽めな難読化がされているのでif文の内部の処理を分析してみる。 ブラウザのConsoleで変数やメソッドなどを展開できるので、これを使って値の中身を確認する。するとsuccessという文字列が314行目で代入されていることが分かる。次に315行目ではcongraz!... Read More