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

2.2 KiB

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:

$ 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:

$ 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:

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:

$ 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}