[CpawCTF] 第六夜: JPEG に埋もれた個人情報
Q10.[Forensics] River
以下、問題文
Q10.[Forensics] River
10pt
JPEGという画像ファイルのフォーマットでは、撮影時の日時、使われたカメラ、位置情報など様々な情報(Exif情報)が付加されることがあるらしい。 この情報から、写真に写っている川の名前を特定して欲しい。
問題ファイル: river.jpg
FLAGの形式は、"cpaw{river_name}"
例:隅田川 → cpaw{sumidagawa}
答案
今回は問題文に jpeg
形式で保存された写真が添付されているようです。
この写真がどこで撮影されたものなのかがわかれば、それが直接 Flag
になるみたいですね。
何はともあれ、画像をダウンロードします。
見たことない場所ですね。 知っている人にとっては、一瞬でクリアな問題なのでしょうか
あ、いや、そういう問題ではないようです。 以下の文面に着目します。
JPEGという画像ファイルのフォーマットでは、... 位置情報など様々な情報(Exif情報)が付加されることがあるらしい。
jpeg
に付加される Exif
情報には、位置情報が含まれるらしいので、これがわかれば Flag
のヒントになりそうです。
ところで、Exif
情報とはなんでしょう...? 初耳です。
以下、wikipedia より引用。
Exchangeable image file format(エクスチェンジャブル・イメージ・ファイル・フォーマット)は、富士フイルムが開発し、当時の日本電子工業振興協会 (JEIDA)で規格化された、写真用のメタデータを含む画像ファイルフォーマット。デジタルカメラの画像の保存に使われる。略称はExifで「エグジフ」(もしくは「イグジフ」)。
直訳すると「画像に勝手に付け加えられる情報のフォーマット」というところでしょうか。
jpg
ってせっかく情報落として、圧縮効率高めているのに、余計な (?) 情報付与して大きくしないほうがいいのではないか...? という意見は考えなかったことにします。
プリントなどする際には「カメラがどんなものだったか」という情報や、画像処理の際に「ISO 感度, シャ速, 絞り」などがあると何かと応用が効くらしいです。 あまりやらないので、わからないすけど
ただ、写真に位置情報などの個人情報が残ってしまうって、個人的にはゾッとしますけど、SNS などにアップロードするときには、このうちのいくつかが削除されるなどの対策が取られているらしいです。
Exif
情報は、PNG
に対応してないので、写真を撮影したものを jpg
で保存されたものを、スクショ撮って png
にして...とかって書いてありますが、それもう (以下略)
とまあ、Exif
情報に関して、斜め読みしたところで、
これを見る (調べる) 方法を探していきましょう。
exif 情報 確認 [検索]
とすると、
EXIF確認君 - 画像情報解析ツール というのが出てきますね。
ここに、問題から入手した画像をアップロードしてみましょう。
右に、GPS, 地図というタブあるので、それぞれ選択してみます。
どうやら「甲突川」という場所だろう、ということが地図からわかります。
読みがわからないので、調べると「こうつきがわ」と読むらしいです。
問題文下部にある回答の例を見ると
隅田川 -> cpaw{sumidagawa}
なので
甲突川 -> cpaw{koutukigawa}
で Flag Get
でしょう。
submit
Flag
が見つかったので、提出します。
弾かれてしまいました?
おや? と思い他の方の writeup
を拝見すると、「甲突川」のスペルは「koutsukigawa」だそうです。
Flagはcpaw{koutsukigawa}
一悶着ありましたが、無事 10pt 獲得です。 ごちそうさまでした。
次回は、パケットの一部を保存したファイルを解析せよ、とのこと。
こういうことが知りたかったんだよ〜。ということで次回も張り切っていきます。
別解
exiftool
という Perl
製のライブラリ / コマンド使っても (こちらでは、緯度経度が) 求められるそうです。
私のメインPC は macbook なので、Homebrew
で入れるには
brew install exiftool
すれば良いそうです。
サーバは Ubuntu
派なので、Ubuntu
で呼び出してみたら「libimage-exiftool-perl
から取得してくれ」と言われました。
どっちでも使えるっぽいですね。
$ exiftool Command 'exiftool' not found, but can be installed with: sudo apt install libimage-exiftool-perl
使用方法はざっくりと以下の通り。
# man $ exiftool # exif 情報を表示する $ exiftool {ファイル名} # 日本語で表示 (タブがバラバラになるのでオススメしない...) $ exiftool -lang ja {ファイル名}
今回の問題に対する実行結果です。
$ exiftool ~/Downloads/river.jpg ExifTool Version Number : 11.85 File Name : river.jpg Directory : /Users/sudachi/Downloads File Size : 414 kB ...(中略) GPS Position : 31 deg 35' 2.76" N, 130 deg 32' 51.73" E
これで 緯度経度の位置がわかるので、Google map にでも渡せば、場所がわかるカモですね。
ちなみに、Google map で検索するには、緯度と経度それぞれの初めにある「XXX deg
」の部分を「XXX°
」に変える必要がありそうです。
元: 31 deg 35' 2.76" N, 130 deg 32' 51.73" E 検索用: 31° 35' 2.76" N, 130° 32' 51.73" E
以上です。