zipper
Misc (50 pts)
Something doesn't seem quite right with this zip file.
Can you fix it and get the flag?
https://ja.wikipedia.org/wiki/ZIP_(%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88)#.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.83.98.E3.83.83.E3.83.80
まず、ローカルファイルヘッダは下記のようになっています。ファイル名の長さとファイル名がおかしいようです。
開始 | サイズ | 項目 | 値 | 備考 |
0
|
4 | シグネチャ | 50 4B 03 04 | |
4
|
2 | 展開バージョン | 14 00 | |
6
|
2 | ビットフラグ | 02 00 | |
8
|
2 | 圧縮メソッド | 08 00 | |
10
|
2 | 最終変更時間 | FC 99 | |
12
|
2 | 最終変更日付 | 92 4A | |
14
|
4 | CRC32 | 3E A9 2E 53 | |
18
|
4 | 圧縮サイズ | 46 00 00 00 | 70bytes |
22
|
4 | 非圧縮サイズ | F6 00 00 00 | 246bytes |
26
|
2 | ファイル名の長さ(n) | 29 23 | 9001bytes |
28
|
2 | 拡張フィールドの長さ(m) | 1C 00 | 28bytes |
30
|
n | ファイル名 | 00 00 00 00 00 00 00 00 | |
30+n | m | 拡張フィールド |
セントラルディレクトリファイルヘッダは下記のようになっています。これもファイル名の長さとファイル名がおかしいようです。
開始 | サイズ | 項目 | 値 | 備考 |
0
|
4 | シグネチャ | 50 4B 01 02 | |
4
|
2 | 作成バージョン | 1E 03 | |
6
|
2 | 展開バージョン | 14 00 | |
8
|
2 | ビットフラグ | 02 00 | |
10
|
2 | 圧縮メソッド | 08 00 | |
12
|
2 | 最終変更時間 | FC 99 | |
14
|
2 | 最終変更日付 | 92 4A | |
16
|
4 | CRC32 | 3E A9 2E 53 | |
20
|
4 | 圧縮サイズ | 46 00 00 00 | 70bytes |
24
|
4 | 非圧縮サイズ | F6 00 00 00 | 246bytes |
28
|
2 | ファイル名の長さ(n) | 29 23 | 9001bytes |
30
|
2 | 拡張フィールドの長さ(m) | 18 00 | 28bytes |
32
|
2 | ファイルコメントの長さ | 00 00 | |
34
|
2 | 開始ディスク番号 | 00 00 | |
36
|
2 | 内部ファイル属性 | 01 00 | |
38
|
4 | 外部ファイル属性 | 00 00 B4 81 | |
42
|
4 | ローカルファイルヘッダの開始位置 | 00 00 00 00 | |
46
|
n | ファイル名 | 00 00 00 00 00 00 00 00 | |
46+n
|
m | 拡張フィールド |
最後にセントラルディレクトリの終端レコードを確認します。これは特に問題ないようです。
開始 | サイズ | 項目 | 値 | 備考 |
0
|
4 | シグネチャ | 50 4B 05 06 | |
4
|
2 | ディスク数 | 00 00 | |
6
|
2 | セントラルディレクトリの開始ディスク | 00 00 | |
8
|
2 | セントラルディレクトリ数 | 01 00 | |
10
|
2 | セントラルディレクトリ合計 | 01 00 | |
12
|
4 | セントラルディレクトリサイズ | 4E 00 00 00 | |
16
|
4 | セントラルディレクトリ開始位置 | 88 00 00 00 | |
20
|
2 | コメントの長さ(n) | 00 00 | |
22 | n | コメント |
それでは、zipファイルを修復してみます。
- ファイル名の長さが8バイトと分かりますので、ローカルファイルヘッダとセントラルディレクトリヘッダのファイル名の長さのフィールドを08 00に修正します。
- 次に、ローカルファイルヘッダとセントラルディレクトリヘッダのファイル名のフィールドをダミーで41 41 41 41 41 41 41 41(AAAAAAAA)に修正します。
つまり、下図のように修正します。
これで解凍できるようになります。解凍したファイルをテキストエディタで確認すると下記のようになっています。
Huzzah, you have captured the flag:PCTF{f0rens1cs_yay}
フラグは、
PCTF{f0rens1cs_yay}
です。