Net」「Police」を作ってみたEDITコード全体を公開しました。​https://github.com/chris-x86-64/tkbctf2-Policeくりすです。Net」と、「Police」を担当しました。Netトップ画面右下に「π」の文字がうっすら浮かんでいたのですが、この文字を出現させるCSSはbootstrap.css中に定義されていました。そのCSS中に、コメントの形式でフラグの文字列を設置しておりました。通信データを逐一フィルタしていれば、何も知らなくても発見できていたでしょう。Police吉村くん(​@_yyu_)が原案のJavaScriptを制作し、わたしがその検査器をPythonで書きました。解き方は彼のブログに載せられる予定になっている[要出典]ので、わたしは裏方のタネ明かしをしたいと思います。問題自体の解法は、彼のブログに記事が上がるのを待ちましょう。用語や関数名なども彼のブログで解説されることを願いたい。CGIが、XSS成功時にそのフォームの内容をPOSTで受け取っていました。これは、バックエンドでユーザが入力したJavaScriptを評価するために、PyV8を用いていたからです。validation.pyの内容(理解を簡単にするために一部簡単にしてあります)を見てみましょう。CGIざっくらばんにいうと、皆さんのブラウザにも現れたcheck.jsとfoo.js(※サーバ上で動かすための多少の改変あり)をロードし、そのJavaScriptに対して、checkSum(ユーザの入力)を評価するということをしています。その結果isYoshimuraYuu()が実行されれば勝ちというわけです。isYoshimuraYuu()はPythonで定義されていますが、PyV8を使うことでevalしたJavaScriptから呼び出せるので、こういうことができるのです。こんな変な名前なのは、参加者のブラウザにロードされる諸JavaScriptと名前の衝突を起こさないようにするためです。trueの状態のときに実行されると、PythonのisYoshimuraYuu()が実行される仕組みになっているわけです。こんな裏方を作っていました。結局、半数の正解者が別解で解いたため、何度か手動検査をやるはめになったのですが。(0)軽くメモPythonでJavaScriptを評価するのにPyV8を使おうとするも、インストールに苦労した。C++のclock_gettime()を呼び出せない問題を解決。リンキングのオプションがタコだった。2013あやふみ女史(※男の娘)のコスプレ画像zipがパスワード付きでうpされたらしいです。2013ここでピンときた。Attackパスワードを設定して暗号化したPKZIPファイルの中身をある程度知っていると、それをもとにストリームキーを推測してアーカイブ全体を解読できるというもの。2013名指しで腕を試されている。