NITIC-CTF 入門の巻


Welcome to nitic-ctf!!!

nitic-ctfにようこそ!

ここでは初めてCTFに参加する人のために、CTFとは何なのか、CTFの始め方を解説していきます!

このチュートリアルを読破すれば、今回のnitic-ctf2の☆1~2の問題をクリアすることができるレベルの物となっています。

ちなみに私はCTF初心者です。誤った文章等ございましたらコメント等で教えていただけると幸いです。

nitic-ctf-2はこちら
公式Discordはこちら

目次

  1. イントロダクション
  2. 各カテゴリの解説
    1. Crypto
    2. Pwn
    3. Rev
    4. Web
    5. Misc
  3. 手の動かし方
  4. 例題
  5. まとめ

1.イントロダクション

CTFとは、 Capture The Flag の略であり、セキュリティに関する問題を解く競技です。多くのCTFでは、Flagと呼ばれる文字列を入手し、それを入力することで点数を得ることができるルールとなっています。今回のnitic-ctfでは、nitic_ctf{Flag}の形式で指定される文字列を見つけることが目標です。
問題は、それぞれカテゴリに分かれています。今回は、カテゴリごとにそのカテゴリの簡単な説明と、いくつかの簡単な例題を示していきます。

2.各カテゴリの解説

1.Crypto

このカテゴリでは、主に暗号についての問題が出題されます。
暗号と一口に言っても、メモ書きを用いれば解けるレベルからRSA暗号などのより解読が難しいものまで多岐にわたります。

2.Pwn

このカテゴリでは、バイナリの脆弱性を付くような問題が出題されます。
問題としては、例えばプログラムが配布され、そのプログラムのソースコードなどから脆弱性を発見し、その脆弱性を付くことでFlagを得るといった問題があります。

3.Reverse

このカテゴリでは、与えられたファイルを解析することでFlagを得る問題が出題されます。
解析というのは、例えばファイルの種類を解析したり、リバースエンジニアリングを行ってソースコードを入手し、Flagを得るといったものが挙げられます。

4.Web

このカテゴリでは、Webに関する問題が出題されます。Web上の脆弱性をついたり、ソースコードからFlagにつながるポイントを見つけて正解を導きます。

5.Misc

このカテゴリでは、名前の通りここまでのカテゴリに当てはまらない問題が出題されます。
問題文に記載されているキーワードなどから解法を推測し、正解を導いていきましょう!

3.手の動かし方

まず、問題文とジャンルをみて、解き方を推測していきましょう。
次に、それをどうやって行うかを調べましょう。

解法を推測し、実行していく、これを繰り返し行うことで、Flagを見つけていきます。

例として、暗号化されたFlagが提示されているとします。

まず、その文字列をどう処理するかを考えます。
今回は、何らかの形式で暗号化されていることがわかっているので、これを復号すればFlagを見つけることができます。
また、この文字列はなんの形式で暗号化されているのかということを推測する必要があります。
多くの場合、問題の名前や問題文にヒントとなる単語が記載されていたり、暗号文からその特徴を読み取って推測することができます。

次に、どのように処理するかを調査します。
先程得たヒントをもとに、Googleなどを用いて解読方法を探します。
その解読方法に基づいて、解読を行います。

ここで、Flagらしい文字列が見つかれば、それを入力してみます。
ここで正解できれば、クリアです!
もし正解できなかった場合は、また最初に戻って、推測→調査→処理を繰り返して正解を見つけましょう。

4.例題

1.Crypto

以下は、暗号化されたFlagです。
-・-・ ・-・ -・-- ・--・ - ---
Flagは、英語アルファベットの小文字のみで記述されていることがわかっています。
sample_flag{復号したFlag}を提出してください。

解答

暗号化されたFlagを見ると、モールス信号のように見えます。
そこで、モールス信号を英文に変換してくれるサイトを見つけましょう。
もしくは、アルファベットとモールス信号の変換表を見て、自力で変換します。

すると、cryptoという文字列が浮かび上がります。
答えは、sample_flag{crypto}となります。

2.Web

以下のページを見て、Flagを見つけてください。
Here
sample_flag{Flag}を提出してください。

解答

ページに有るように、Flagは ****************.netlify.app の * の部分です。
つまり、このページのURLの該当部分であることがわかります。
つまり答えは、sample_flag{you-can-see-flag}です。

また、別解として、先程のページを開いて、F12キー(ブラウザによって変わる場合があります)を押すと、開発者モードに入ることができます。
そこを見ると、ページのソースコードをみることができます。
そこにはなんと、答えはsample_flag{you-can-see-flag}と書いてあります!

5.まとめ

いかがだったでしょうか。
今回が初めてのCTFだという方の手助けになれば幸いです!
今回のnitic_ctf_2では、難易度が低いものから高いものまで幅広く出題されます。
ぜひ、解けそうな問題を解いてみて、CTFの世界に踏み込んでみてください。

また、今回のような期間指定型のCTF大会の他にも、常設CTFと呼ばれる、常に開催しているCTFがあります。
もしもっと様々な問題に触れてみたい!という人は、ぜひこちらも試してみてください。
以下に、有名な常設CTF大会を掲載させていただきます。

【追記】
また、今後予定されているCTFなどについての情報は、
CTFtime.org
というサイトに記載されています!
もっと他のCTFにも参加してみたい!という方は、ぜひこちらもチェックしてみてください!