picoCTF #Forensics - Blast from the past

■問題
The judge for these pictures is a real fan of antiques. Can you age this photo to the specifications? Set the timestamps on this picture to 1970:01:01 00:00:00.001+00:00 with as much precision as possible for each timestamp. In this example, +00:00 is a timezone adjustment. Any timezone is acceptable as long as the time is equivalent. As an example, this timestamp is acceptable as well: 1969:12:31 19:00:00.001-05:00. For timestamps without a timezone adjustment, put them in GMT time (+00:00). The checker program provides the timestamp needed for each. Use this picture.

Additional details will be available after launching your challenge instance.

「これらの写真の審査員はアンティークの大ファンです。この写真の日付を指定された年齢に設定できますか？すべてのタイムスタンプを1970年01月01日 00:00:00.001+00:00に設定し、できるだけ精密に合わせてください。この例での+00:00はタイムゾーンの調整です。どのタイムゾーンでも、その時間と等価であれば受け入れられます。例えば、1969年12月31日 19:00:00.001-05:00も許容されるタイムスタンプです。タイムゾーン調整のないタイムスタンプは、GMT時間(+00:00)にしてください。必要なタイムスタンプは、チェッカープログラムで提供されます。この写真を使用してください。

追加の詳細は、チャレンジインスタンスを開始した後に表示されます。

■解き方

①画像をダウンロードする

②画像のメタデータをexiftoolコマンドで確認する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3519665/0066bbdf-1c14-1549-b35d-19b04a31ce99.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3519665/5a393e7b-202e-3585-a3fd-ad032a45b42a.png)
・Create Date
・Date/Time Original
・Modify Date
・Time Stamp
上記4つを確認

③Create Date、Modify Date、Modify Dateの3つの時間を1970年01月01日 00:00:00.001+00:00に変更する。
※この時点ではTime Stampの時間変更は困難
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3519665/f58f6642-e8b4-e2bb-c973-5b7b285713c4.png)
※参考
AllDatesオプションにDateTimeOriginal、CreateDate、ModifyDateが含まれている
~DateTimeOriginal~
意味: 画像が「撮影」された日時を表す。
~CreateDate~
意味: 画像ファイルが「作成」された日時を表す。
~ModifyDate~
意味: 画像ファイルが「最後に編集」された日時を表す。

SubSec（サブセカンド）フィールドは、Exifメタデータの一部で、秒以下の微細な時間（ミリ秒やマイクロ秒）を記録するためのフィールド

④変更後の画像を一度送信する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3519665/ba26fea0-44b2-0a8d-b5b3-06057dacb740.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3519665/b0270f4c-bf14-7581-63a1-68968d3fb712.png)

⑤Time Stampの時間変更が必要であることが④で確認できたため、
変更するための情報を収集する。

⑥Stringsコマンドを使用してバイナリデータを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3519665/f8d122d4-0e05-d261-210b-f5df22630878.png)
確認した結果からUNIXタイムスタンプであることが判明
※参考
UNIXタイムスタンプとは
UNIX系のシステムで使用される日付と時刻を表す形式で、「1970年1月1日00:00:00 UTC（協定世界時）」からの経過秒数で表現される。この「1970年1月1日00:00:00 UTC」をUNIXエポックと呼び、UNIXタイムスタンプはエポックからの経過秒数を整数値で示している。
今回の問題はUNIXエポックの時間に変更させようとしていることがわかる。

⑦バイナリエディタ等でUNIXタイムスタンプの値を、
1700513181420から0000000000001に変更する。
※すべて0にするとフラグが取得できない。
※バイナリエディタはImHexを使用
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3519665/19854b1a-02db-3dff-2ea7-fd0680f0b4f9.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3519665/ffcd8a1c-715f-4031-2c2f-a2a245a46a66.png)
※ctrl+Fで1700513181420を検索し、0000000000001に変更
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3519665/90c14c08-ab3b-9eb3-e2cc-f59bbf263a8d.png)

⑧画像を再度送信すると、フラグを取得できる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3519665/f93d27eb-35c9-02f3-807e-419681ba4b58.png)