Guess
別名: エスパー
CTFにおける「自明でない推測」のこと
例えば、以下のような問題があったとする
このWebサービスにadminとしてログインしてください!
ログイン画面のURLを渡される。ソースコードは配布されない。
プレイヤーは情報の少なさ、必要な推測の多さにイライラするだろう
答えは、ユーザー名をtest、パスワードをtestとして入力すればログインできて、その先ににadminのパスワードが書いてあります
「そんな何も示唆されてない情報わかるわけないだろ!」
これがいわゆる「Guessingが必要な問題」である
ちなみにtest:test、guest:guestあたりは悲しいことに暗黙の共通認識として出題されることがある
一般的にGuessは嫌われることが多い
技術的に楽しくない
理不尽
反対に、Guessを謎解きやなぞなぞと考えて楽しく解く人もいる
CTFからGuessを排除すべきかどうかは意見が分かれるところですが、作問する際には気を付けましょう
逆に、普通の問題でGuessをすることで楽をすることもできる
教えられてないけど、フラグのファイル名はflag.txtなのでは?
任意コード実行まで達成しなくともファイル読み込みだけで解けたりする
バイナリを詳しくは解読できてないけど、この処理とこのテーブルがあるならこの暗号方式を利用しているのでは?
フラグの一部が読めないけど、英単語を推測するとわかるのでは?
Guess The Flag: Writeup of router-nii from DEF CON CTF 2022 Quals
他のGuessingの例
『Webサービスを作りました』
「/index.php以外の情報がないが...」
解法『/robots.txtにアクセスすると秘密のページのURLがわかるぜ』
「robots.txtはどこから出てきたんですか?」
robots.txtはよく出題される
『暗号化されたデータを復元してください!』
「元のデータ形式がわからないし、暗号方式もわからないので無理だが...」
解法『実はデータはPNGで、16byteの鍵とXORしているのでヘッダから復元できるぜ』
「そう……」
『Cookieが暗号化されているWebサービスでCookieを偽造してください』
「情報が少なすぎ」
解法『実はCookieはAES-CBCで暗号化されていて、Bit Flipping Attackで偽造できるぜ』
「AES-CBCであることを0から思い付くのは無理では?」
解法『問題文中の大文字アルファベットをつなげて読むと、CBCになるぜ』
「(キレる)」