Files
HIP7CTF_Writeups/de/tragic_magic.md
m0rph3us1987 a79656b647 Added writeups
2026-03-08 12:22:39 +01:00

65 lines
2.2 KiB
Markdown

# 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}`