第13話

「じゃあ、まずこれをテキストエディタで表示してみて。これこれ」


 二海は、桃の指したアイコンをダブルクリックした。見慣れない、緑色のバックに星に似たマークのついたアイコンで、『Atom』と名前が表示されていた。昨日桃がインストールしたものだろう。アプリケーションが開くと、黒の背景に薄いグレーで英語の文が書かれていた。ちょっと『それっぽい』と、二海は少しテンションが上がった。メニューもすべて英語で書かれていたのだが、『File』から『Open』を選び、今しがたダウンロードしたファイルを開いた。するとエディタには、一行目から『�ò��]%�Rk�__』と文字化けのような、意味不明な文字列が表示された。


「んん……」

「はは、よくわかんないでしょ。でもこの内容をちゃんとわかりやすいようにしてくれるのがあるから、今度はね、こっちの『VirtualBox』ってやつを開いて」


 二海は言われたとおりに手を動かした。『VirtualBox』は先ほどの『Atom』とは違って日本語でメニューが表示されていたが、『仮想マシン』や『システム』、『ストレージ』など見慣れない言葉が表示されていた。


「そこの左のメニューのところから、『Ubuntu』をダブルクリックして」


 そうすると、『Ubuntu』の下にあった『電源オフ』という表示が『実行中』に変わった。同時に、ノートパソコンのファンが低くうーっとうなりだした。


「これはねえ、仮想化ソフトっていって、ホストOSの上で、追加で別のOSを動かせるようになるものなの。わかる?」

「ホスト……?」

「えーと、ホストってのはこの、これだったらWindowsOSね。このWindowsOSの上で、別の、今回はLinuxなんだけど、それが動いてるの。ほら、二海ちゃんが借りてるレンタルサーバー、あれもたぶんLinuxだから、操作の仕方がこのWindowsマシンとはちょっと違ったでしょ」

「操作……あんまり操作ってしたことないんだけど……あ、でも確かに、マニュアルには色々書いてあったかも。コマンドとか。よくわからなかったけど……」

「そうそう、そういうこと。普通に売ってるパソコンに載ってるOSは、こういうWindowsとかMacとかだからあんまり馴染みがないかもね。でもLinuxはよくサーバーで使われてるんだよ。ああそう、あとAndroidもLinuxベース」

「へえ? そうなの?」

「そうそう。だから二海ちゃんもすでにLinuxユーザーだよ。サーバーもそうだしスマホもだしね。このUbuntuも同じLinuxディストリビューションのうちの一つで、CTFでよく使うツールが詰まってるから、これから問題解くときはこっち使ってみて」


 二人が話している間に起動が終わり、ぱっとUbuntuのデスクトップが表示された。夕焼けのような色の背景と、左に縦一列で表示されたアイコン。いつも使っているWindowsとはだいぶ違うなと二海は思った。全体の雰囲気というか、テイストというか、それがまったく馴染みが無いものなのだ。


「この左の、これあるでしょ、青いの」

「これ?」

「そう。それ開いて」


 桃が指しているのは、波のような形をしたアイコンだった。カーソルを上に乗せると、『Wireshark』とポップアップが表示される。


「あ、ジョーズ?」と二海は呟いた。

「ジョーズ?」

「いや、あの……鮫、ってこと? 『シャーク』って」

「あー、ああ! そうそう、鮫。何で鮫なのかわかんないけどね。ワイヤーの鮫って。そしたらそれを開いて……で、さっきダウンロードしたPCAPファイルあるでしょ? それを、あ、Ubuntuの中じゃなくてWindowsの方にあるから、それをエクスプローラーで開いて、ここのフォルダに移して。それでWiresharkのほうでFileからOpenで、そこ、そうそれを選んで」


 WiresharkがPCAPファイルを読み込むと、画面上にはずらずらと何かのデータの一覧が表示された。左から『No.』、『Time』、『Source』、『Destination』、『Protocol』、『Length』、『Info』と項目名がついている。

 『Protocol』の項目を見ると、そこには『DNS』や『TCP』と表示されている。お、と二海は一覧を上下にスクロールさせた。


「これがわかりやすくした通信内容ね。さっきのデータの内容を解釈して表示させてるの。まず最初に『DNS』ってあるでしょう。これは……」

「URLから、サーバーのありかを探す……?」

「そう」


 桃は二海の答えを聞いてにっと笑った。


「DNSの後にHTTPの行が続いてるでしょう。DNSでサーバーのありかを突き止めてから、そこに向かってHTTPリクエストを送信してる。この最後のDNSの行を見てみて。そう、そこのところにパケット内容の詳細が出るから……そこにAnswersっていうところがあるから。そこに『Address』ってあるでしょう。」


「ああ、52.193.179.175って……あ、そうか、それが次の行の『HTTP』の『Destination』になってる」


「そうそう。で、こういう通信内容解析の問題は、通信内容自体にフラグが入ってるか、通信してる先のサーバーにアクセスしてフラグを獲るか、ってのが多いのね。今回は点数も低いし簡単な問題のはずだから、一旦通信内容を見てフラグを探してみよう。そこに『http』って入れてみて。そうするとHTTPのパケットだけがフィルタできるから」

「うん……あ、出た。これを上から見ていくってこと?」

「あー、それでもいいんだけど、時間がかかるから。『Info』にメソッドとパス、それにレスポンスのステータスコードが出てるでしょう」


 言われた項目を見ると、『GET /』や『HTTP/1.1 401 Unauthorized』などが並んでいた。


「ステータスコードはわかる?」

「うん、えっと……Not Found、とかのやつ……?」

「そう。成功は200、そのNot Foundは404。で、401は、書いてあるけどUnauthorized。Unauthorizedって何かわかる?」

「いや、ちょっと……」

「『認証が必要』ってこと。つまり、サーバーは一旦リクエストを受けたんだけど、認証情報がないとリクエストされたものを返しちゃいけないって設定になっているから、200のかわりにこの401を返してるの」

「ふうん……」と、それを聞いて二海はひらめいた。「……じゃあ、その前後のリクエストを見たら、認証情報を送ってるのがある?」

「そうそうそう! いいねえ、するどい! その、401の下の、『Destination』が52.193.179.175になってるパケットを見てみて」


 二海がパケット詳細の中の『Hypertext Transfer Protocol』を見てみると、その中には『GET / HTTP/1.1\r\n』や『Host』や『User-Agent』と並んで、『Authorization: Basic YWRtaW5pc3RyYXRvcjpmbGFne3hrZkRrZjdjYW19』という行があった。


「この……これがフラグ? Authorizationって……」

「あー、惜しい! そう、これなんだけどね、これってベーシック認証で認証情報を送ってるのね。ベーシック認証って、こういうふうにAuthorizationっていうヘッダーにユーザー名とパスワードをくっつけて送るんだけど、ユーザー名とパスワードはBase64っていう方式でエンコードされてるの。なんで、これをBase64でデコードする必要があるのね」

「ああ……」


 二海はブラウザの検索窓に『Base64 デコード』と入力した。トップに出てきたページで、先ほどのYWから始まる長い文字列を入力する。『DECODE』ボタンを押すと、画面には『administrator:flag{xkfDkf7cam}』と表示された。


「ああっ!」

「よーしよし、いい子だ」

 と桃は言った。しかし二海が反応しないでいると、「だめか。他の子にはウケたんだけど」と呟いた。二海はまた何かやり損ねたと思ったが、今更何か反応するのも変だと、フラグに話を戻そうとした。


「……えっと……そしたら、このxkなんとかを……」

「さっきのPCAPファイルダウンロードしたところに入力するところがあるはず。そこに入れてみて」

「うん……よ……あ!」


 送信ボタンを押すと、『Congratulation! You got 20pt!』と表示された。


「いぇい! 初めてのCTF、クリアー!」


 桃はそう言って、顔のそばに手のひらを構えた。二海は迷ったが、思い切って自分の手のひらをそれに当てた。ぺちん、と小さな音がした。

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る