Added writeups
This commit is contained in:
64
de/tragic_magic.md
Normal file
64
de/tragic_magic.md
Normal file
@@ -0,0 +1,64 @@
|
||||
# Tragic Magic
|
||||
|
||||
`Tragic Magic` ist eine Forensik-Challenge, die eine beschädigte Bilddatei beinhaltet. Uns wird eine Datei namens `flag.png` zur Verfügung gestellt, sowie ein Hinweis, dass das Dateiübertragungsprotokoll die Binärdaten beschädigt haben könnte.
|
||||
|
||||
## Informationsbeschaffung
|
||||
|
||||
Wir beginnen damit, den Dateityp mit dem `file`-Befehl zu identifizieren:
|
||||
|
||||
```bash
|
||||
$ file flag.png
|
||||
flag.png: data
|
||||
```
|
||||
|
||||
Der `file`-Befehl sagt einfach "data", was bedeutet, dass er die Dateisignatur (Magic Bytes) nicht erkennt. Wenn wir versuchen, das Bild mit einem Viewer zu öffnen, wird dies fehlschlagen.
|
||||
|
||||
## Analyse
|
||||
|
||||
Untersuchen wir die ersten paar Bytes der Datei mit `xxd`:
|
||||
|
||||
```bash
|
||||
$ xxd -l 16 flag.png
|
||||
00000000: 5550 4e47 4141 1a0a 0000 000d 4948 4452 UPNGAA......IHDR
|
||||
```
|
||||
|
||||
Wir können die Strings `PNG` und `IHDR` in der ASCII-Darstellung deutlich sehen. `PNG` ist Teil der Standard-Dateisignatur, und `IHDR` ist der obligatorische erste Chunk jeder gültigen PNG-Datei. Dies bestätigt zweifelsfrei, dass die Datei als PNG-Bild gedacht ist.
|
||||
|
||||
Die "Magic Bytes" (die 8-Byte-Dateisignatur) ganz am Anfang sind jedoch inkorrekt.
|
||||
|
||||
**Gültige PNG-Signatur:**
|
||||
`89 50 4E 47 0D 0A 1A 0A` (`.PNG....`)
|
||||
|
||||
**Unsere Dateisignatur:**
|
||||
`55 50 4E 47 41 41 1A 0A` (`UPNGAA..`)
|
||||
|
||||
Die Signatur wurde teilweise beschädigt:
|
||||
- `89` wurde zu `55` ('U')
|
||||
- `0D 0A` (Windows Newline) wurde zu `41 41` ('AA')
|
||||
|
||||
Dies passt zum Hinweis über ein "optimales ASCII-Protokoll", das die Binärdaten verunstaltet.
|
||||
|
||||
## Lösung
|
||||
|
||||
Wir müssen den Datei-Header reparieren, damit Bildbetrachter ihn erkennen können.
|
||||
|
||||
1. Öffnen Sie `flag.png` in einem Hex-Editor.
|
||||
2. Suchen Sie die ersten 8 Bytes.
|
||||
3. Ersetzen Sie sie durch die Standard-PNG-Signatur: `89 50 4E 47 0D 0A 1A 0A`.
|
||||
4. Speichern Sie die Datei.
|
||||
|
||||
Alternativ können wir `printf` verwenden, um den Header über die Befehlszeile zu überschreiben:
|
||||
|
||||
```bash
|
||||
printf "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A" | dd of=flag.png bs=1 count=8 conv=notrunc
|
||||
```
|
||||
|
||||
Nach dem Fixen des Headers wird die Datei korrekt erkannt:
|
||||
|
||||
```bash
|
||||
$ file flag.png
|
||||
flag.png: PNG image data, 256 x 256, 8-bit/color RGB, non-interlaced
|
||||
```
|
||||
|
||||
Das Öffnen des wiederhergestellten Bildes enthüllt die in den Pixeln geschriebene Flagge:
|
||||
`{flag: corrupted_png_header}`
|
||||
Reference in New Issue
Block a user