前回 は、Python の Scapy を使って、ネットワークプログラミングをやってみました。
今回は、以前 やってみた CpawCTF の続きである CpawCTF2 を始めたいと思います。
それでは、やっていきます。
※2024/9/8時点:300ポイントで、382位 / 2575人です
- はじめに
- サインアップ
- CpawCTF2の概要
- Webカテゴリ
- Networkカテゴリ
- Cryptoカテゴリ
- Reverseカテゴリ
- Pwnカテゴリ
- Forensicカテゴリ
- Stegoカテゴリ
- Miscカテゴリ
- おわりに
はじめに
「セキュリティ」の記事一覧です。良かったら参考にしてください。
・第2回:Ghidraで始めるリバースエンジニアリング(使い方編)
・第3回:VirtualBoxにParrotOS(OVA)をインストールする
・第4回:tcpdumpを理解して出力を正しく見れるようにする
・第5回:nginx(エンジンエックス)を理解する
・第6回:Python+Flask(WSGI+Werkzeug+Jinja2)を動かしてみる
・第7回:Python+FlaskのファイルをCython化してみる
・第8回:shadowファイルを理解してパスワードを解読してみる
・第9回:安全なWebアプリケーションの作り方(徳丸本)の環境構築
・第10回:Vue.jsの2.xと3.xをVue CLIを使って動かしてみる(ビルドも行う)
・第11回:Vue.jsのソースコードを確認する(ビルド後のソースも見てみる)
・第12回:徳丸本:OWASP ZAPの自動脆弱性スキャンをやってみる
・第13回:徳丸本:セッション管理を理解してセッションID漏洩で成りすましを試す
・第14回:OWASP ZAPの自動スキャン結果の分析と対策:パストラバーサル
・第15回:OWASP ZAPの自動スキャン結果の分析と対策:クロスサイトスクリプティング(XSS)
・第16回:OWASP ZAPの自動スキャン結果の分析と対策:SQLインジェクション
・第17回:OWASP ZAPの自動スキャン結果の分析と対策:オープンリダイレクト
・第18回:OWASP ZAPの自動スキャン結果の分析と対策:リスク中すべて
・第19回:CTF初心者向けのCpawCTFをやってみた
・第20回:hashcatの使い方とGPUで実行したときの時間を見積もってみる
・第21回:Scapyの環境構築とネットワークプログラミング
・第22回:CpawCTF2にチャレンジします(クリア状況は随時更新します) ← 今回
CpawCTF2 の公式サイトは以下です。
この記事では、問題に関する紹介は行いますが、解法に繋がる内容は書かないようにいたします。
それでは、やっていきます。
サインアップ
CpawCTF をやった方も、サインアップ(登録)からになります。
上のリンクからトップページにアクセスします。サインアップをクリックします。

以下の登録画面になるので、赤枠を入力して、Sign up をクリックします。

これで登録は完了です。
CpawCTF2の概要
Ranking のページを見てみます。
2571人がランキングにいて、トップの方は 3400ポイントで、867人の方が何らかのポイントを取得しています。0ポイントの方が 1704人いるようです。ポイントを取得するのは、かなり難しいようです。
次に、Challenges のページを見てみます。
8個のジャンルがあり、全19個の問題があり、ざっと計算したところ、全ての問題をクリアすると 3250ポイントのようです。2位の方が 3250ポイント、3位の方が 3015ポイントなので、過去に問題変更などがあったということでしょうか。現在は最高でも同率2位までになるようです。
100、150、200、250、300ポイントの問題があります。ポイントの高い問題ほど、難易度が高そうです。

以下、全19個の問題とポイント一覧です。
| No. | カテゴリ | 問題名 | ポイント | 状況 |
|---|---|---|---|---|
| 1 | Web | Fragile | 150 | 0% |
| 2 | Network | prank | 100 | completed |
| 3 | Network | HTTPS introduction | 100 | completed |
| 4 | Network | Illegal Packets... | 300 | 0% |
| 5 | Crypto | an apartment | 100 | 0% |
| 6 | Crypto | easy...? Turing Machine | 100 | 0% |
| 7 | Reverse | Secret instruction | 200 | 0% |
| 8 | Reverse | Exec me revenge | 100 | completed |
| 9 | Pwn | Blackboard Of Fake1 | 100 | 0%(Serverから応答が無い) |
| 10 | Pwn | Blackboard Of Fake2 | 300 | 0% |
| 11 | Pwn | Chance | 250 | 0% |
| 12 | Pwn | Name Editor++ | 300 | 0% |
| 13 | Forensic | Bad Container | 300 | 0% |
| 14 | Forensic | Trace Behavior | 200 | 0% |
| 15 | Stego | CCpost | 100 | 0% |
| 16 | Stego | Random Image | 200 | 0% |
| 17 | Misc | sumsumsum | 100 | 0%(メンテナンス中?) |
| 18 | Misc | BrokenBase | 150 | 0% |
| 19 | Misc | Everyone's power | 100 | 0% |
Webカテゴリ
とりあえず、Webカテゴリから見ていきたいと思います。
Webカテゴリは、ウェブサイトの脆弱性を探して、攻撃することでフラグを見つける問題です。
Webカテゴリを選択すると、Fragile という 1問だけがありました。
Fragile
Fragile(壊れやすい、弱い、もろい、割れやすい)を選択すると、問題のウェブサイトのリンクと、答えを提出するフォームがありました。150ポイントなので、100ポイントよりは難しそうです。

問題のウェブサイトのリンクをクリックすると、シンプルなフォームで、テキストを入力して submit するだけの画面になりました。

フォームに適当な文字列(とりあえず、<script>alert("aa")</script> を入力してみた)を入力すると、それが表示されました。

これ以上の情報はとりあえずは無さそうです。なかなか難しそうです。
壊れやすいというタイトルということは、壊すような攻撃方法が必要なんでしょうか(笑)。
Networkカテゴリ
次に、Networkカテゴリを見てみます。
Networkカテゴリは、pcapファイルからフラグを見つけたり、特定のノードに攻撃を行い、フラグを取る問題です。
3つの問題がありました。

prank
先頭の prank という問題を見てみます。zipファイルと、ヒント?の pcapファイルが提供されています。100ポイントの問題です。先ほどの Fragile よりは、やさしそうな印象です。

zipファイルはパスワード付きで開けませんでした。pcapファイルにヒントがあるのかもしれません。
pcapファイルを Wireshark で開いてみると、Telnet の通信データのようです。
※2024/8/25:初クリア
あ、解けた。

やりました!とりあえず、最初の目標の100ポイントをゲットです!

HTTPS introduction
もう1つの 100ポイントの問題の HTTPS introduction を見てみます。pcapファイルと、key というリンクをクリックすると、RSA の秘密鍵が表示されました。

こちらも 2ファイルが提供されていることから、少しはやさしそうな問題の印象です。
300ポイントの問題は、おそらく難易度が高そうなので省略します。
※2024/8/25:2個目をクリア
HTTPS introduction も解けました!

100ポイントゲット!計200ポイントです!

Cryptoカテゴリ
Cryptoカテゴリは、脆弱性のある暗号の解読を行ったり、どのアルゴリズムで暗号化してるかを調べる問題などがあります。
Cryptoカテゴリには、100ポイントの問題が2つありました。

Reverseカテゴリ
Reverseカテゴリは、実行ファイルを解析したり、デバッガを使って、フラグを探す問題です。
Reverseカテゴリには、100ポイントの問題が1つと、200ポイントの問題が1つありました。

Exec me revenge
Exec me revenge という問題です。実行ファイル?が1つ提供されています。

概要を調べてみました。実行すると、セグメンテーションフォールトになりました。あと、フラグを出力してそうな文字列がありました。
$ $ file exec_me_revenge exec_me_revenge: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.32, BuildID[sha1]=27b306d8607f80c9534a01d061d5fac21c157c4e, stripped $ strings exec_me_revenge_4ba9b20108e56b8d77d8a2dd091c55c6 | grep -i cpaw cpaw{%s} $ ./exec_me_revenge_4ba9b20108e56b8d77d8a2dd091c55c6 Segmentation fault
とりあえず、Ghidra で逆コンパイルしてソースを眺めていく感じでしょうか。stripped(シンボル削除)されてるので、なかなか手ごわそうです。Ghidra で逆コンパイルしたソースは 21万行以上ありました。まともには見れません。
タイトルが Exec me revenge なので、セグフォが出ないようにすればいいのかもしれないですね、それなら VSCode でデバッガで見てもいいかもです。
※2024/9/8:3個目をクリア
100ポイントゲット!計300ポイントです!
Pwnカテゴリ
Pwnカテゴリは、プログラムの脆弱性を攻撃してフラグを取る問題です。総合的な知識が求められる場合が多いようです。
Pwnカテゴリには、100ポイントの問題が1つと、250ポイントの問題が1つ、300ポイントの問題が2つありました。

Blackboard Of Fake1
100ポイントの Blackboard Of Fake1 を見てみます。
バイナリファイル?が1つあるのと、「nc ctf2.cpaw.site 9999」と書かれています。netcatコマンドでしょうか。

とりあえず、バイナリファイルの概要です。
$ file blackboard_1 blackboard_1: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=e75589d52a3a8b6970be6a59cf5165c2a2daf4c2, not stripped $ ./blackboard_1 1. Write on the blackboard 2. See the blackboard 3. clean the blackboard Please input action number:
サーバから応答が無いので、おそらく、「Blackboard Of Fake1」は出来ないと思います
Web で検索すると、Twitter のコメントで、同じくアクセスできないと言われていた方がいました
Forensicカテゴリ
Forensicカテゴリは、様々なデータの中に隠されているフラグを探し出す問題です。
Forensicカテゴリには、200ポイントの問題が1つ、300ポイントの問題が1つありました。

Stegoカテゴリ
Stegoカテゴリは、Steganography のことで、音声や画像データに隠されたフラグを探し出す問題です。
Stegoカテゴリには、100ポイントの問題が1つ、200ポイントの問題が1つありました。

Miscカテゴリ
Miscカテゴリは、分類できない、その他という意味のカテゴリです。
Miscカテゴリには、100ポイントの問題が2つ、150ポイントの問題が1つありました。
試してないですが、sumsumsum は、現在出来ないと、Notice に書かれていました

おわりに
今回は、CpawCTF2 に登録して、全19問をざっと見てみました。
まずは、2問解けたので、やれそうな問題からやっていこうと思います。
最後になりましたが、エンジニアグループのランキングに参加中です。
気楽にポチッとよろしくお願いいたします🙇
今回は以上です!
最後までお読みいただき、ありがとうございました。