問題の解き方
まず配布されたファイルをダウンロードする
サーバーを攻撃するWeb問題なら、ソースコードを見てみる クライアントを攻撃するWeb問題なら、botのソースコードを見てみる XSSなどでブラウザに保存されている情報を抜き出す形の問題が多い 暗号文を復号してフラグを手に入れる問題か、ある条件を満たすとフラグが降ってくる問題のどちらかであることが多い
古典暗号などフラグの場所が明記されてない問題は、大抵は平文がフラグである
Reversingの問題なら、フラグの場所は明記されてないことが多い。問題に合わせてどうしたらフラグが出てくるか考える必要がある その他のジャンルの問題も、まずはどうやったらフラグが手に入るかを考えるとよい
入力された値がどう処理されるかを追ってみる
Webなら、サーバーがどのようなパラメータを入力として受け入れ、どのように処理されるかを追うことで効率よく脆弱性を探すことができる フラグの場所から、フラグを手に入れるために必要な条件を逆算する
他にも、フラグがファイルとして存在しているならLocal File Inclusion以上の攻撃が必要、フラグがadminユーザーしか見れないような場所に存在するならadminとしてのログインが必要……など この問題は「何をしろ」と言っているのかを理解することが大事
自分が問題に対してできることを整理する
それをどのように組み合わせて、あるいは発展させて悪用ができるかを考える
検索エンジンを使う
検索エンジンはCTFにおいて最強のツール
「(脆弱性の名前) CTF」などで検索するとよい
過去の似たような問題のWriteupやブログ記事などを読むことで得られることは多い CTF, Writeup, Exploit, Vulnerabilityあたりがおすすめの検索ワード
CTF Challenges by Category
* crypto: guess the paper
* web: guess the blog post
* pwn: 猜blog post但是中文版
* rev: seek therapy.
メタ読みする
「こんなマイナーなライブラリを使っているのだから解法に関係してくるのだろうな」など
時には強力な武器となる
TODO: Guess The Flagのブログ入れる
フラグを取引する、バックドアを仕込む、主催者を脅迫するなど
https://scrapbox.io/files/650cf7bb034aec001bc7776b.jpg
余談
cursedCTFという何でもありな悪い身内ノリのCTFでは、作問者と交渉してフラグを手に入れるという出来事もあったよう