調べて、学ぶ

検索したり実験したことを覚えとくブログ

NISM ctfのwriteup

NISM ctfとは

twitterで流れてきた知った。

nism-ctf.siebold-cyber.net

ジョパディ形式。CTFdの画面構成に似てる。(よく見たら右下にCTFdと書いている) それじゃ行ってみよーぅ。

welcom

練習問題。答え方を教えてくれる。

Misc: カラーコード

NISMのロゴマークに使われている青色は、
RGB形式で表すと、rgb(0,153,204)です。この色のカラーコードを答えてください。
flagは、NISM{#xxxxxx}の形式で答えてください。

手元にあったフリーウェア(colorPPP)でも拾えるけど、調べることがこのブログの趣旨なので、「カラーコード rgb 変換」でググる

tech-unlimited.com

ここで0,153,204を入れればフラグゲット

Misc: 奇妙な文字列

こんな意味不明な文字列が友達から送られてきたんだけど、君は解読できるかい?
TklTTXtiQHNlNjRfYzRuX2IzX2VhNWkxeV9kZWMwZGVkfQ==

「ctfで文字列が来たらまずbase64を疑え」と死んだじいちゃんが言ってた。 御用達のdencodeで文字列をコピペしてフラグゲット。

NW: Electrical talk

あなたは、社内ネットワークに接続されている無数のコンピュータの中から、
唯一通信できるコンピュータ1台を発見するネットワーク宝探しゲームに参加しています。
様々なIPアドレスへ通信確認をしているpcapと、そのIPとのホスト名対応表を用いて、
通信可能なコンピュータのホスト名を答えよ。

回答の際は、次の形式で答えること。
ただし、ホスト名には、ホスト名対応表の任意のホスト名が入る。 NISM{[ホスト名]}
  • pcapファイルと、IPに対応したホスト名の一覧csvが添付されている
  • pcapファイルをwiresharkに食わせたら、いろいろなIPアドレスpingを打っているデータが出てくる
  • 斜め読みする感じではicmp以外のデータはなさそう。かつ、ほとんどが未達(destination unreachable)

pingと聞いたら”echo"と"reply"がセットで出るわな…ということは、うまくいったやつ(reply)を探すのね...とゆっくり見ていくと発見。 目でも見つかるけど、wiresharkの文字列検索で一発だった。ゲット。

wiresharkの文字列検索

NW: Insecure communications

ネットワークの勉強の一環で、親友の同意のもと、親友のネットワークを
数分キャプチャさせていただいた。
どうやら、親友はある会員向けのHTTPサイトにアクセスし、
会員限定記事を見ているようだ。
僕も見たい。そこには魔法のflagが隠されているみたいだ、、、
与えられたpcapより、会員向けサイトのクレデンシャルを見つけ出し、
実際にアクセスして自分の目でflagを確認してみよう。

pcapファイルが添付されている。wiresharkに食わせてファイルに戻したけど、フラグらしきものは見つからず。なにをしたらいいのかわからず。Hintを見ると「URLがわからない。見つけ出さないと、、」とのこと。そゆことか。
wiresharkのprotocolをhttpのみにしてinfo欄を並び替えると、”post”コマンドのデータが発見。post先ではなく、postしていたURLを開くと入力画面にリダイレクトされるので、 post先に送られていたパケットのunameとpwrdの値を使ってログインするとフラグゲット。

NW: Where am I?

ネットワークを学習する上で避けては通れないサブネットマスクの計算。
力試しでやってみましょう。

192.168.1.0/28のネットワークにおいて、192.168.1.93のネットワークアドレスを答えなさい。
なお、解答の際はNISM{[IPアドレス]}の形式で答えること。

例:回答が192.168.250.34なら、回答はNISM{192.168.250.34}となる。

計算は苦手です...マスクを計算することはできなくもないけど、自信がないのでズルをするw 「ネットワークアドレス 計算」でググり、CMANサブネットマスクを「28」にしてIPアドレスを入れればフラグゲット。

Web: 超、易問!

NISMのテーマカラーは何色でしょうか?
https://easy-quiz.siebold-cyber.net 

いや、知らんがな... - 示されたURLにいくと、色の選択肢を答える画面が表示されるが、選択肢のどれを選んでも「違うよ」と言われる。(でしょうね) - 選択肢をクリックするとURLが(グレーを選ぶと)「https://easy-quiz.siebold-cyber.net/?color=grey」と変わる。

このctfのログインページのことを思い出し、「もしかして青?」と思って「https://nism-ctf.siebold-cyber.net/?color=blue」でフラグゲット。

Web: frog, frog, frog

蛙好きの友人が、蛙と名の付く文学作品を集めたサイトを作ったらしい。せっかくだから見てみようか。
https://frog-works-collection.siebold-cyber.net 

案内されたURL
下のセレクトボックスで文学の内容が表示されるが、明らかに数が少ない(1970移行がない) ので、そこを怪しむ。
F12キーでwebページのソースを表示し、セレクトボックスの値を変えて「select」ボタンを押すと、作者:NISMのポエムが表示された。ぱっと見フラグらしきものはないので、ページのソースを見てみると、わかりやすく”hidden”が。
フラグのヒント?
とりあえず NISM{君には何が見えている?} と入れたもののハズレ。
ここにはない...前回のtaskctfであったようなrobots.txtか?と思い、URLに指定しても404が返る。それならcss?
https://frog-works-collection.siebold-cyber.net/stylesheet.css でフラグゲット。

Web: お米食べろ

近年はお米の消費量が落ち込んでいる、と言われますが、やっぱり毎日一番食べているのはお米ですよね!
2010年から2020年までの全国の水陸稲作付面積の統計データを集めました。

都道府県名か年を入力したらデータ抽出するwebページ。

  • ページのソースに不審点はなし。
  • 「京」と入れたら「東京」「京都」のデータが出てくる。
  • 「’; 」を入れると「Fatal error: Uncaught mysqli_sql_exception: You have an error in your SQL syntax; 」

ということは... 「mysql テーブル 一覧」でググって、ここを参考にして入力欄でMYSQLのテーブルを一覧する文をインジェクションしてみる。

' union all select table_name,1,1 from information_schema.tables; -- (最後は半角スペース)

テーブル一覧
出てきましたねぇ~。riceはおそらくこの画面で抽出しているテーブルのはず。

スキーマもテーブルも「flags」なら、列も同じじゃね? と考えて、SQL文を組み立てる。

' union all select flag,1,1 from flags.flags; -- (最後は半角スペース)

flagsテーブル内
なんかやたら似た文字列がたくさん出てくる中にフラグ発見。ゲット。

Forensics: Lost USB memory

あっ、大切なUSBメモリを紛失してしまった。まぁでも重要なデータは削除してたから大丈夫でしょ。
  • zipファイルが添付されている。
  • 解凍するとproblem.bin というファイル。
  • binならバイナリエディタか?と開いてみてもフラグらしきものはなし。ただ、エディタ内の文字列に「Disk error Press any key to restar」が。

これ、ディスクか。ならばと思いbinから.isoに変換したものの、マウントできず。むむ...
改めてNISMサイトを見ていると「技術者向けイベントのハンズオン資料を公開いたしました。」を発見。

...ものすごくわかりやすい。 ここのフォレンジックの資料を見ながら「青空白猫」を使ったら、あらまぁ...binに埋まっているファイルが見える。いやぁ、勉強になります。フラグゲット。

青空白猫でbinファイルを検索

Forensics: Hidden files

長崎で撮った写真を集めてみました。画像に埋め込まれているflagを見つけることはできるかな?
  • jpgが4枚添付
  • 青空白猫でjpgが2枚あるのがわかる

サムネイルじゃないjpgを取り出すとフラグの断片が見つかるので、すべて取り出してフラグゲット。
これ、画像を結合したらもっとスマートに取り出せそうだけどそこまでのやり方は分からず。

Forensics: A file is opening

とあるプログラムが重要なファイルを開いているみたい...
  • Win10_MEMORY.DMPというファイル
  • forensicsを始めるときに見つけたハンズオン資料がむちゃくちゃわかりやすく(2回目)、つまりこれを使えと。
  • volatility3をインストール。問題文から、ファイルを開く=コマンドラインでファイルを指定していると判断...お前か!

あからさまに怪しいnotepad.exe

来い! dencode!(これも2回目)

dencode2回目

フラグゲット。

Forensics: Find Reg Value

このPCにOSをインストールしたのはいつだろう?

※この問題のフラグはNISM{ }のカッコの中に年・月・日・時・分・秒をアンダーバー区切りにして入れたものです.

例)
答えとなる日時が1970/01/01 10:20:30である場合,フラグは
NISM{1970_01_01_10_20_30}
となります
  • Win10_MEMORY.DMPというファイル
  • ハンズオン資料を見たからわかっている。ありがとう。
  • 読みながら手を動かす。これぞまさしく「ハンズオン」。俺は今猛烈に感動している。

  • volatility でwindows.registry.hivelist.HiveListを指定し、「¥SystemRoot¥System32¥Config¥ SOFTWARE」のオフセット値を取得

  • volatility でwindows.registry.printkey.PrintKey --offset (オフセット値) --key "Microsoft\Windows NT\CurrentVersion\"で得られるinstalltimeの値を取得
  • w32tm /ntte (上記の値)

フラグゲット! 終わった~。

初心者向けで資料に助けられまくりだけど、初めて全部解けた!うれしい! これからも励みます。