見出し画像

防衛省サイバーコンテスト2024 感想とwriteup

2023年に引き続き防衛省サイバーコンテスト2024に参加してみました。感想とwriteupを書き残しておきます。


結果と感想

前回と同じく株式会社バルクによる運営ということで、問題の大きな傾向の変化はなく、問題数も前回と同じくWelcomeを除き31問でした。31問中19問解けて全体の上位20%ぐらいでした、前回よりも成績を下げているので反省です。また、全体の参加者数は前回の約270名から15%ほど増えて、約310名でした。前回までは大会参加に住民票の写しの提出が必要というちょっとしたハードルがあったのですが、今回から無くなったことも参加者増に繋がっているのかなと思います。あとは大会回数も重ねていますし、前回は問題も概ね好評だったことも要因ですかね。

競技時間はAM9時からPM9時までの12時間でしたが、近頃花粉症の薬の副作用でめっきり朝がよわよわになってしまいAM11時からスタート。その後、競技時間終了まで9時間ほぼ解き続けていましたが、今回は全問解き切る状態まで行けず、もう少し時間があれば点数伸びたかなぁという後味でした。(だったら早く起きろという話ですがw)

問題は10、20、30点の3段階でレベル分けされており、今回も30点問題は1問も解けずに終わりました。。。解けた中で一番正解人数が少なかったのは20点問題ではなく、Webの10点問題のAre You Introspective?というのが意外なところ。今回は一番正解人数の少なかった問題(3人だけ)もNetworkの20点問題と、点数配分の割に難しい問題が今回はちょこちょこあったかなと思います。(点数配分や調整は実際にやってみないとわからないところも大きいので、本当に難しいですけどね)

writeupは時間を掛けて取り組めなかった(大反省)Forensicsと、全編ChatGPT頼り切りのProgramming以外の解けた問題を自分で見返すように載せておきます。

Crypto

Information of Certificate (10)

情報を確認するだけ。
使用ツール:openssl

Missing IV (20)

ChatGPTにAESを復号してもらいました。
使用ツール:ChatGPT

AESの復号コード
復号されたバイナリが何か聞いてみる
Wordで開いたらフラグが出てきた

Miscellaneous

Une Maison (10)

画像の中にバーコードが含まれている問題。シンプルで好きでした。
使用ツール:バーコードリーダー

与えられた画像。なんとなく見ていると。。。
バーコードリーダーに掛けたらフラグが出てきた

String Obfuscation (10)

難読化されたPythonを解読する問題ですが、ChatGPTに頼りました。
使用ツール:ChatGPT

そのまま答えが。難読化問題は生成AI強いですね

Where Is the Legit Flag? (20)

こちらも途中までChatGPTの力を借りながら解答。「本物のフラグを見つける」というニュアンスは人間じゃないとまだ判断がつかないようです。
使用ツール:ChatGPT

難読化の復号まではChatGPTに
10行目が偽物フラグ。9行目が本物フラグ

Utter Darkness (20)

下のサイトを参考にBMPファイルのカラーパレットをバイナリエディタでいじったところ、フラグが出てきました。(ヒントをめくって最後の10分で駆け込み正解できました)

使用ツール:Stirling

与えられた画像。タイトルのとおり真っ黒
ヘッダをいじってみると
フラグが出てきました

Network

Discovery (10)

前回も使用したdirbを使用してフォルダ探索する問題。バージョン表記の形式からCMSを特定して、総当たりした方が早いんじゃないかみたいに最初思いましたが、意外とマイナーなCMSでした。あとこの問題フォルダ探索前提なので、アクセスが集中してサーバーがけっこう重くなってましたね。
使用ツール:dirb

cmsadminとftpフォルダを発見
ftpフォルダには認証情報らしきファイルが
CMSの認証情報がわざとらしく置いてあります(10点問題なのでOK)
cmsadminにアクセスすると、webEditonのログイン画面が。先程の認証情報を使用してログイン
設定からフラグとなるバージョン情報が確認できました

FileExtract (10)

FTPでのファイルの送信パケットから、やりとりされたZIPファイルを抽出する問題です。
使用ツール:Wireshark

ZIPのパスワードも記録されています
「FTP Data」のパケットでTCPストリームを追跡、Rawで保存

Exploit (20)

CMSの脆弱性を使用して、サーバー内にあるフラグを入手する問題。Exploit-DBに脆弱性を利用したExploitが掲載されており、それを参考にして解けました。ちなみに、このCMSの環境5分に1回クリーンアップされるようになっていたのですが、全員共通の環境だったため、他の方がコピーしたファイルが見えてネタバレ要素ありでした。
使用ツール:なし

PHPを自由に動かせる、RCEの脆弱性がCMSにあります
PHPファイルの新規アップロードは制限されていて、既存ファイルをコピー・リネームするというハードルがまずあったのですが、他の人が作成したPHPファイルが既に置いてありました。。。
DescriptionにPHPのコードをインジェクションすると
PHPのコードとして動作してRCEできました

Trivia

The Original Name of AES (10)

使用ツール:ChatGPT

正解!

CVE Record of Lowest Number (10)

使用ツール:Google

ChatGPT(3.5)は教えてくれませんでした
Perplexity AIはCVE番号までは正解
ググれということで。。。

MFA Factors (10)

使用ツール:Perplexity AI

不正解すぎる
Perplexity AIは正解ですが、2文字にしたり辞書順には並べ替えてくれたりはしませんでした

Web

Browsers Have Local Storage (10)

タイトルの通り、Local Strageを見に行くだけ。
使用ツール:なし

Are You Introspective? (10)

GraphQLのエンドポイントを見つける問題。エンドポイントのパスが全然わからずヒントを開けて「バージョン管理」というワードを見てようやくたどり着けました。GraphQLに馴染みのない人にとっては、ちょっとエスパー問題気味かも?
使用ツール:なし

/v1まで必要でした
GraphiQLを使ったことがないので試しにHello worldしてみようとしたら、たまたまフラグがサジェストされてきました。ここで引っかかる人もいたのかしら

Insecure (20)

パラメータの改ざん防止の仕組みにタイミングをずらすとバイパスできる脆弱性があるので、それを実際にやってみようという問題です。
使用ツール:ZAP

ポータルサイトで「プロフィールを見る」を押すと
ログイン中のユーザーのプロフィールが表示されます
リクエストを見ると、idをパラメータで渡してます
ということはパラメータをいじれば。。。
と思いましたが、うまくいかないようです
パラメータを改ざんした場合は、profile_error.phpに飛ばされるようです
そうだprofile_error.phpに飛ばされる前に、profile_success.phpを叩いちゃえばいいんだ
id=0のユーザー情報(フラグ)が取れました

この記事が気に入ったらサポートをしてみませんか?