CTFという大会があるよというお話

## はじめに
どうも。記事を書くこと自体が2年振りなwatnow所属の[りょーま。](https://qiita.com/Ryoma_0831)です。
一昨年と同じである13日目を担当しています。
今回は『CTFという大会があるよというお話』について少し触れていきたいと思います。

## CTFについて
まず、CTFとはなんなのか？ということから書いていきたいと思います。

CTFとは、『Capture The Flag』の略称であり、旗どりゲームのこと指します。
大会では、情報セキュリティの知識を用い、何らかの方法で隠された文字列(Flag)を見つけ出し、提出すると得点となります。当然、専門知識や高度な技術は求められます。が、情報セキュリティの分野の敷居を下げ、楽しみながらスキルアップを目指すことのできる大会でもあるのです。

## CTFの基本ルール
大会のルールとしては、クイズ形式で制限時間内により多くの問題を解いて得点を獲得した個人やチームの勝ちとなり、高得点を取ることで情報セキュリティ人材として評価されやすくなります。

### 例：SECCON CTFの場合
<table style="border-collapse: collapse; width: 100%; text-align: center;">
  <tr style="background-color: #7f7f7f; color: white;">
    <td>制限事項</td>
    <td>24時間(大会によって12〜48時間)</td>
  </tr>
  <tr style="background-color: #d9d9d9;">
    <td>参加資格</td>
    <td>なし(国籍・年齢・性別問わず)</td>
  </tr>
  <tr style="background-color: #7f7f7f; color: white;">
    <td>チーム定員</td>
    <td>制限なし(本戦はリーダーを含む4名まで)</td>
  </tr>
  <tr style="background-color: #d9d9d9;">
    <td>検索</td>
    <td>オンライン、オフライン問わず可能</td>
  </tr>
  <tr style="background-color: #7f7f7f; color: white;">
    <td>禁止事項</td>
    <td>他者とのFLAG・解法・ヒントを共有すること</td>
  </tr>
</table>

## CTFの大会の内容
CTFの大会では、情報セキュリティに関する技術を利用して様々な問題を解くこととなります。出題範囲としては非常に膨大な量です。

Reversing：実行ファイルを解析する問題
Pwn：サーバプログラムが持つ脆弱性をつく問題
Web：Webに関する問題
Crypto：暗号を解読する問題
Network：ネットワークの通信を解析する問題
Forensics：与えられたファイルを解析する問題
Steganography：あるデータに隠蔽されたデータを探す問題
PPC(Professional Programming and Coding)：プログラミングを使って解く問題
Recon：ある特定の人物を調査する問題
Misc：上記のジャンルに当てはまらないコンピュータの雑学、練習問題

このように、CTFでは非常に幅広い分野の知識とスキルが求められます。そのため、情報セキュリティに関する技術的な部分を深く理解することにも繋がります。

## 実際に解いてみる
では、ここからは実際に問題を[CpawCTF](https://ctf.cpaw.site/index.php)の問題から紹介してみようと思います。
問題はLevel1で9問となります。
![Main.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3014107/8699199b-9c3c-e12a-7773-cf0d90a6bf50.png)


:::note warn
警告
ここからはCpawCTFの問題を実際に解いていきます。
実際に解いてみたい時は、ここから下の記事を読まないことを推奨します。
:::

## ド初級編
まず、[Misc] Test Problemを解いてみましょう。
この問題はすごく簡単です。なんと問題自体に答えが書いております。
![Misc.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3014107/172ea76b-7c25-8aba-428f-51511fecb842.png)
そうですね。答えはcpaw{this_is_Cpaw_CTF}です。

## 少し難しくなる編
では、次に[Forensics] Riverを解いていきます。
ちなみに、全然順番通りではないのですが、あんまり気にしないでください。
この問題を紹介するのは、僕自身も解けた問題が少なく、この問題が個人的に一番面白いと感じたからです。
![Forensics.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3014107/deea77af-e8da-73e8-5ed4-f66ed116fe20.png)
この問題は提示された問題ファイルである川の写真(以下、river.jpg)の名前を特定するというものになっています。(川の写真の詳細は省きます)

こういった写真から位置情報などを特定するのにもってこいのものとして、『Exiftool』というものが存在します。
このツールは、画像に関する詳細なメタデータを含むExif情報を抽出することができるものとなっています。(他に使い方があるのかも知れませんが、僕には分かりませんでした)

まず、ターミナルからインストールして、
![Terminal.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3014107/aba1a1b5-e187-7826-156c-386270d5cd41.png)

そして、実際に使用してみるのみ！！
![スクリーンショット 2024-12-12 15.28.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3014107/b32bb2f3-6747-661d-b862-0d78829628d8.png)
この画像はほんの一部ですが、これだけでもファイルサイズやアクセスした時間が分かるようになっています。

そして、今回はriver.jpgの位置の情報が欲しいので、少し下にスクロールしてみると、
![GPS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3014107/e4082927-254f-2dc7-34d6-f7fe40b9fd29.png)
ありました！ここまで分かれば、あとはGoogle Map等で調べるだけです。

緯度と経度を打ち込むと、
![river.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3014107/3e38644c-de84-be4c-b614-fd1b6305aa99.png)
<INS>甲突川(こうつきがわ)</INS>であるということが分かりました。

あとは、CpawCTFに打ち込むだけです。一度、甲突川をローマ字に変換して、Cpaw{}を付けます。
![Forensics2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3014107/0f079ef4-63d3-8bb3-0823-1fa716dcb3d5.png)
答えはcpaw{koutsukigawa}です。

## まとめ
今回の記事、いかがでしたでしょうか。久しぶりに記事を書いたということもあり、拙いところもあるかも知れませんがここまで読んでいただけたら光栄です。ありがとうございました。

## 参考にしたもの
1\. SECCON
https://www.seccon.jp/13/

2\. CpawCTF
https://ctf.cpaw.site/index.php

3\. CTFとは？初心者の勉強法や独学のコツを解説
https://www.computerfutures.com/ja-jp/knowledge-hub/cyber-security/what-is-ctf/

4\. CTF（Capture The Flag）とは？概要・ルール解説
https://cybersecurity-jp.com/column/33780

5\. 「exiftool」で画像データのEXIF情報を抽出 #コマンドライン
https://qiita.com/daruda/items/d18c2056be8dd96fed98