neophyte.jp

Memorundum.

防衛省サイバーコンテスト2025 Write-up

前回のCTFで味をしめて、早速次のCTFに挑戦しました。

防衛省サイバーコンテストの開催について|防衛省
https://www.mod.go.jp/j/approach/defense/cyber/c_contest/index.html

スコアボードに載っている(=1問以上解けた)人が480人いたので、もう少し知識も、習熟もいるなぁ…と壁の高さを改めて感じました。

【事前学習】

いつも通り先人達のwrite-upをみつつ、久々に触るなぁ…とwiresharkやらBurpSuiteやらを準備。

(Virtual box上にparrot os 等々も準備してたのですが、当日インターネットに出られない不具合が発生したため、やむなくwindows2台という変則的な構成で臨む羽目になりました…)

【Write-up】

ひとまず記憶が薄れる前にダーッと書きました。

wireshark等々のツールの使い方、手法のひらめき形等々、勉強すべきものが山程あるなぁ…と反省しました。

<PG>

縮めるだけじゃダメ(100:クリア)

添付のExcelファイルからフラグを読み取ってください。【回答書式】 flag{6桁の半角数字}

対象のexcelファイルを開くと巨大なflagらしき文字列が。

何も書いてないなぁ…と思いつつ拡張子がxlsmであることに気づき、マクロを確認。それらしきマクロが中にある。

編集画面から見るに色を塗り替えていくコマンドぽかったので実行。何も変わらず、ステップインで見ていったらflagを発見。

暗算でもできるけど?(100:未挑戦)

添付のソースコードを実行した際の出力値の68番目の値と、このソースコードから推測される314番目の値を足した数を答えてください。【回答書式】 flag{n桁の半角数字}

プログラムを書く能力が無かったので諦めました。

formjacking(200:未挑戦)

添付のファイルは「Card Stealer」と呼ばれるフォームからの入力値を外部へ送信するJavaScriptです。 カード情報が妥当な場合、その値は外部へ送信されるようなので追跡したいです。【回答書式】 flag{n桁の半角英数記号}

上に同じくプログラムスキルが無かったので諦めました。

loop in loop(300:未挑戦)

以下の要件を満たすプログラムを作成してください。 プログラムの言語は問いません。【回答書式】 flag{n桁の半角数字}

1.引数として以下の値を指定できる。

  • 第一引数:文字列
  • 第二引数:文字列

2.プログラム内部で引数に以下の処理を加える。

  • それぞれの引数のハッシュ値を求める。ハッシュ関数にはRIPEMD160を使用する。
  • 第一引数のハッシュ値の1文字目と第二引数のハッシュ値の1文字目を抜き出し、それらの値が両方数値だった場合、それらのXORを求める。そうでない場合は何も処理しない。
  • 続いて、第一引数のハッシュ値の1文字目と第二引数のハッシュ値の2文字目を抜き出し、それらの値が両方数値だった場合、それらのXORを求める。そうでない場合は何も処理しない。
  • 同様に、3文字目、4文字目と続け、と第二引数のハッシュ値の最後の文字まで行う。
  • 続けて第一引数のハッシュ値の2文字目に対して第二引数のハッシュ値の1文字目から同様の処理を行う。
  • 同様に第一引数のハッシュ値の3文字目、4文字目と続け、と第一引数のハッシュ値の最後の文字まで行う。
  • それぞれの値を加算する。
  • 加算された値を10進数で出力する。

このプログラムに下記の引数を与えた時に出力される値を答えてください。

  • 第一引数:Phoenix
  • 第二引数:Messiah

同じく諦めました(もうちょっとできるように勉強するかなぁ…)

<NW>

頭が肝心です(100:失敗)

添付したメールファイルからフラグを探してください。 フラグはこのメールが届くまでに経由した2番目のメールサーバのIPアドレスとします。【回答書式】 flag{IPアドレス}

順々に入力していったところ、3回までの入力制限に気づいておらず入力できなくなり失敗…そりゃこういう問題なら回数制限かけないと意味ないですもんね…

3 Way Handshake?(200:断念)

添付したのはTCPポートスキャン時のパケットログです。 オープンポートを見つけてください。 オープンしているポート番号を小さい順に「,(カンマ)」で区切って答えてください。【回答書式】 flag{n1,n2,n3,.....}

問題名にもある通り、特定のIPアドレスからポートスキャンをかけているログファイル(.pcap)。なんとなく眺めていると「ポートスキャンだから上手くいってるポートにはスキャン側からリセットフラグ送ってる…?」とぼんやり思い絞り込み。filter式がうまく書けず、「21,23,37,70,79,98,109,110,111,113,143,513,514,1025」あたりまでは絞り込めたけど正解ならず。何か漏れてたんだろうなぁ…。

さあ得点は?(200:未挑戦)

添付されたパケットファイルから攻撃を特定し、その攻撃のCVEを調べてください。 その攻撃のCVSS Version2.0のBaseScoreがフラグです。 CVSSのスコアはNISTで公開されている値とします。 https://nvd.nist.gov/【回答書式】 flag{数値}

パケットログ見ても何の攻撃か分からず断念。TCPの再送が気になりはしたけど…。

decode(300:未挑戦)

添付のパケットファイルからフラグを探してください【回答書式】 flag{n桁の半角英数記号}

複数のログの束を提示されたので、とりあえずwiresharkに一括ドロップでひとまとめに。問題名にちなみつつ、アプリケーションの暗号化通信、ブラウザでダウンロードしてるっぽいデータ等々気になるものはあれど力及ばずギブアップ。

<WE>

簡単には見せません(100:クリア)

問題文なしでURLだけ記載あり。

ひとまずアクセスしても「ここにフラグはない」との記述。nmapでポートスキャンを…と試みるとrobot.txtを読み取って/red /gold /blue /yellow …とカラフルなディレクトリが…

それぞれアクセスするとblueの中にflgフォルダがあり、

該当ページのhtmlコード内にフラグがありました。

試練を乗り越えろ!(100:クリア)

下記のURLからフラグを入手してください。

実際にアクセスしてみると次のようなサイト。

1と回答すると、こんな感じ

さすがにこれを1万回は…と思うのでburpsuiteで分析。

「q=」という隠しパラメータで何回目か送っているようなのでその値を10000にして送信。

そして無事にフラグ獲得。

直してる最中なんです(200:断念)

下記のサイトから脆弱性のあるアプリケーションを特定し、その脆弱性を利用してフラグを入手してください。フラグが記載されているファイルは下記の通りです。 /etc/WE-3【回答書式】 flag{25桁の半角英数字}

実際のページを開くと石ころを載せたページ。「ダウンロード機能は未実装」とわざわざ記している…

前述の問題と同様にnmapを照射、secret区画に怪しそうなものが…

実際のページを開くと色々構文エラーが見える…

多分ディレクトリトラバーサル攻撃…?と手法は思いつくも技術不足でギブアップ。

直接聞いてみたら?(200:クリア)

下記のURLはAPIテストのためのフォームです。 ここからフラグを入手してください。【回答書式】 flag{n桁のアルファベット}

該当のサイトを開いて色々いじってみる。どこかとやり取りしてデータの受け渡しをしているようである

Burpsuiteで覗いてみると何やらdataの文字列が。

name関数と項目名、チェックの有無がon/offとか?

レスポンスをみると、ブラウザ上のメッセージに出てこない本文の情報が見える…

となると問題の通り「直接聞いてみればよいのでは?」とリクエストを修正。

無事にフラッグを勝ち取りました。

(それにしても、black smith = 鍛冶職人やら、hakkaido abashiri outside(なぜか「はっかいどう」になっている)やら色々と周辺情報が気になる問題でした…)

整列!(300:断念)

(問題文保存忘れ)URLが示されて、アクセスすると以下のような感じの表がIDの1〜20まで表示される。idの昇順降順ボタンがあるので押すと順番が変わり、アドレス欄に「?sort=id+ASC」の表記が。

dataやflagseqに置き換えつつ、下の表を作りながら埋めるも、20〜39の一部分が歯抜けに…

絶対もう少し出す手立てがあるよなぁ…と思いつつもギブアップ。

CY

エンコード方法は一つじゃない(100:断念)

以下の文字列をデコードしてFlagを答えてください。

%26%23%78%35%35%3b%26%23%78%36%33%3b%26%23%78%36%31%3b%26%23%78%36%65%3b%26%23%78%34%32%3b%26%23%78%37%64%3b%56%6d%46%79%61%57%39%31%63%30%56%75%59%32%39%6b%61%57%35%6e%63%77%3d%3d%36%36%36%63%36%31%36%37%37%62 【回答書式】 flag{n桁のアルファベット}

cyberchiefを使って色々デコード

URL Decode + HTML entity +

UcanB}VmFyaW91c0VuY29kaW5ncw==f6c61677b

Base64

UcanB} VariousEncodings f6c61677b

最後の文字列を変換できず、真ん中にあるそれっぽい文字列でフラッグを入れてみるも失敗。ギブアップ。

File Integrity of Long Hash(100:クリア)

添付のZIPファイルの中から下記のファイルを探してください。 フラグはそのファイルの中に書かれています。

189930e3d9e75f4c9000146c3eb12cbb978f829dd9acbfffaf4b3d72701b70f38792076f960fa7552148e8607534a15b98a4ae2a65cb8bf931bbf73a1cdbdacf【回答書式】 flag{22文字の半角英数字}

zip内にはflag10.txt〜flag99.txtまでの大量のファイル。

雰囲気(もタイトルも)ハッシュだし長さ的にSHA512?と思って算出すると1つだけ一致するのでそれに書いてあるフラグでクリア。

Equation of ECC(200:未挑戦)

楕円曲線のパラメータは以下の通りとします。

a=56,b=58,p=127

基準点(42,67)と設定した場合、公開鍵の値が下記になる秘密鍵の最も小さい値を答えてください。

公開鍵(53,30)

【回答書式】 flag{半角数字}

なんにも分からなかった…。

PeakeyEncode(300:未挑戦)

文字化けした文が送られてきました。送信者によるとこの文字化けはインターネットから探してきたロジックを使って暗号化を施したかったそうです。 暗号化した際の環境が送られてきているので復号ができないでしょうか。

置換暗号…とはうっすらわかりつつも、それ以上の知識はなく未挑戦。

<FR>

露出禁止!(100:クリア)

添付のログファイルから脆弱性を特定し下記のサイトからフラグを手に入れてください。【回答書式】 flag{n桁のアルファベット}

URLと共に対象のファイルをみる。会員サイトのようである。

明らかにセッションIDがきな臭いのでcyberchiefで一通り復号化してみると↓な感じ

MTcyMjMzNDE5MiwxLGFkbWluCg== →1722334192,1,admin

(ほかにもuser1等々ありましたが、)面倒なのでadmin狙い。前半がUNIX TIME Stampだったので、日付を挑戦日のそれっぽい時間にし、元の形に戻して、ログを参考にアクセスするとフラグゲット。

成功の証(200:クリア)

フラグは攻撃者が見つけ出した「パスワード」とします。【回答書式】 flag{パスワード}

添付されたパケットログをみるとアクセスを試みているようです。

フィルタリング等も挑戦しましたがうまくいかず、禁じ手の目grep。「login sucsess」だかあった行の近くのパスワードを入れてクリア。

犯人はこの中にいる!(200:断念)

下記のパケットログは、攻撃のフェーズにおいて特定のサーバにポートスキャンを行ったと思われていたものです。 実は、これは内部にいる攻撃者が外部IPアドレスを偽証したものです。 本当の内部にいる攻撃者のIPアドレスを見つけてください。

同様にパケットログのデータを確認。macアドレスとかで突合出来るのかなぁ…と思いつつもギブアップ。

chemistry(300:未挑戦)

添付のプログラムは実行時に引数として数字を与えることができます。 このプラグラムで「FLAG I AM LUCKY」と表示させるための引数を答えてください。

複数の引数を送る場合は、「,(カンマ)」で区切ってください。 スペースは「0」を送ってください。【回答書式】 flag{数値,数値,.....}

全く分からず諦めました。

InSecureApk(300:未挑戦)

管理者だけが使えるAndroidアプリを作成しました。 このアプリはパスワードを入れないと使うことができません。 そのパスワードがフラグとなっています。

【回答書式】 flag{n文字のアルファベット}

apkを最低限解凍しつつ、そこら辺に転がってた実機でも試してみましたがうまくいかず諦めました。

PW

CVE-2014-7169他(100)

アクセスログから脆弱性を特定しフラグファイル内のフラグを見つけ出してください。 フラグファイルは下記の通りです。

/etc/PW-1

【回答書式】 flag{n桁の半角英数記号}

示されたURLとログを見比べると明らかにアクセスに成功しているCGIファイルがある。

該当のページにアクセスすると「shellshockable」の記述があり、各種サイトの情報を下に、環境変数を変えてあげればアクセスできそう…と思いつつも失敗。metasploitでも試みるも失敗しました。

認可は認証の後(200:断念)

下記のURLにアクセスし、フラグを入手してください。 Webアプリケーション脆弱性診断の観点を持つと良いみたいです。【回答書式】 flag{n桁の英数字}

これも色々試しつつ、auth.phpという怪しいファイルがいるなぁ…と思えどギブアップ。

formerLogin(200:断念)

資料を添付しました。 この資料から推測できる情報でグループウェアにアクセスできないでしょうか。

提示されたURLを開くとIDとイニシャルを入れるログイン画面。表示されている情報を下に入れてもだめ。

あんまり良くないよなぁ…と思いつつもBurpSuite で 総当たり(TGT001〜TGT123 と AA、AB、AC…)を試みるもうまくいかず断念。

overmeow(200:断念)

ファイルを用意したので、解析してもらえませんか。【回答書式】 flag{n桁の半角英数記号}

指示されたコマンドでアクセスしてみるも猫がないてるだけ、うまく乗りこなせませんでした。可愛い。

heapmeow(300:未挑戦)

猫ちゃんの鳴き声はなんですか?【回答書式】 flag{n桁の半角英数記号}

指示されたコマンドでアクセスしてみるも猫がないてるだけ、うまく乗りこなせませんでした。可愛い。

TR

合体はロマン(100:クリア)

QRコードの断片4つを示されてくっつけたら読み込めそうな問題。端っこが少しずつ重なることに気が付きくっつけていくと、左の角っこのパーツが黒白反転していることに気が付き、そこを修正して読み込んでクリア。

Windowsで解きましょう(200:クリア)

下記のファイルを実行すると「flags」というフォルダが作成され、複数のファイルが生成されます。 すべてのファイルに違うフラグが書かれています。 その中のファイルの一つには印がつけてあります。正解のフラグを探してください【回答書式】 flag{22桁の半角数字}

batファイルをとりあえず実行してみるも、大量のフラグファイルを生成するだけ。

バッチの中身を覗いてみると、末尾にFDATA4がフラグファイルとの記述が。そのファイルのフラグを入力してクリア。

排他的倫理和(300:断念)

比較対象ファイルの値と各候補ファイルに記載の値のXORを計算し、有意な値を見つけてください。

該当のファイルから排他的論理和を力技でやるも、それらしい情報に行きつけず、ギブアップ。