ふるつき2

裏ブログです。うそです

静/動のCTFプレイヤー

この記事はCTF Advent Calendar 2021の2日目の記事でした。いえ、嘘です。登録していないので……

CTFプレイヤーはある観点からは2種類に大別できるんじゃないかな……と思っている。それというのが、タイトルどおりに静のCTFプレイヤー、動のCTFプレイヤーである。

静のCTFプレイヤー

静のCTFプレイヤーは静的解析が好み。プログラムを動かさずしてその挙動を理解することが好きだし、ディスアセンブル結果を眺めたあとおもむろにエクスプロイトを書き始め、それが一撃でフラグを出力した瞬間に最大のエクスタシーを得る。

問題を解くことよりはその動作原理や出題意図の理解に重きを置いている。面白い問題や未知の知識に触れられるなら、問題を解ききることが出来なくてもよいと考えるものもいる。

考察パートでは「なぜこの問題はこの構成になっているのか?」というメタ的な視点から推理を進め、解法を逆算したり、問題から自然に導かれる解法を列挙したりしてチームに貢献する。

一方で固定観念に囚われやすく、誤った(しかしそれらしい)解法に固執しがち。「この問題必ず解けるはずなのに解けない……」といった泣き言が散見される。好きな戦型は相矢倉

座右の銘は「理解に優る正解なし」*1

動のCTFプレイヤー

動のCTFプレイヤーは動的解析が好み。ひたすら手を動かしてその挙動を理解するほうが、ディスアセンブルをして複雑な状態を全部頭に叩き込むより、手と頭の連携プレイで短い時間に深いドメイン知識を獲得すれば良いと思っている。ひたすら試行錯誤を繰り返すためにタイピング技術が向上しており、デバッガ・エディタの特定の動作が非常に高速に行えるように最適化されている。

問題の動作原理が理解できなくても試行錯誤の末にそれらしい挙動にたどりつくことの唯一無二性に楽しさを覚える。問題を解いたという達成感が好き。試行錯誤の回数を減らして高速に問題を解くより、試行錯誤自体の速度を上げて高速に問題を解くほうが良いと思っている。

考察パートでは「なんか実験してみたらこうなったんだけど……」と唐突にチームに光明をもたらす。熟練に従って問題の隠された性質にたどり着くための不自然な入力を生成する能力に長ける。また、不自然な入力から得られる不自然な挙動の動作原理を経験から推測し高速に答えにたどり着くようになり、結果として静のCTFプレイヤーのように問題の意図した解に近づく。

一方で所見の問題に出会ったときに行き詰りがち。ひたすら時間をかけて解ききる根性と筋力が求められる。

好きな戦型は角換わりで、座右の銘は「解釈をしたがらず手を動かす」*2


いかがでしたか? 「この分類によると私は静/動です」「静のCTFプレイヤーにはこのような特徴もあると思います」「静のCTFプレイヤーと動のCTFプレイヤーなら静/動のCTFプレイヤーのほうが強いと思います」などのご意見ご感想おまちしています

それでは次回、「CTFプレイヤー風林火山」でお会いしましょう

*1:適当に作りました

*2:https://twitter.com/bd_gfngfn