plaidCTF 2012 – 3D

plaidCTF 2012 - 3D - task description

In dieser Challenge (3D) wird uns eine Datei mit der Information zur Verfügung gestellt, dass es sich um eine neue Kamera-Technologie handeln soll. Ziel für uns scheint es zu sein, die Datei zu analysieren und daraus irgendwie den Schlüssel zu extrahieren.

Erster Schritt ist die Datei grundlegend zu untersuchen und wenn möglich deren Dateityp festzustellen.

rup0rt@lambda:~/3d$ file edbd4701d0b9d2a33a743e96f7bc8f3b
edbd4701d0b9d2a33a743e96f7bc8f3b: JPEG image data, EXIF standard

rup0rt@lambda:~/3d$ ls -lh edbd4701d0b9d2a33a743e96f7bc8f3b
-rw-r--r-- 1 rup0rt rup0rt 6.1M Apr 28 11:12 edbd4701d0b9d2a33a743e96f7bc8f3b

Es handelt sich also um eine Bilddatei im JPEG-Format, die mit zusätzlichen Metadaten (EXIF) versehen zu sein scheint. Darüber hinaus ist auffällig, dass die Datei für ein JPEG-Bild relativ groß ist. Sehen wir uns zunächst noch die EXIF-Daten der Datei mit dem Werkzeug “exiftags” an.

rup0rt@lambda:~/3d$ exiftags edbd4701d0b9d2a33a743e96f7bc8f3b
Camera-Specific Properties:

Equipment Make: SONY
Camera Model: DSC-HX9V
Maximum Lens Aperture: f/3.3

Image-Specific Properties:

Image Orientation: Top, Left-Hand
Horizontal Resolution: 72 dpi
Vertical Resolution: 72 dpi
Image Created: 2012:04:04 11:32:05
Exposure Time: 1/125 sec
F-Number: f/3.3
Exposure Program: Normal Program
ISO Speed Rating: 200
Brightness: 4.4 EV
Exposure Bias: 0 EV
Metering Mode: Pattern
Light Source: Unknown
Flash: No Flash, Compulsory
Focal Length: 4.28 mm
Color Space Information: sRGB
Image Width: 1920
Image Height: 1080
Rendering: Normal
Exposure Mode: Auto
White Balance: Auto
Scene Capture Type: Standard
Contrast: Normal
Saturation: Normal
Sharpness: Normal
GPS Status: Measurement Interoperability
Geodetic Survey Data: WGS-84
GPS Differential Correction: No Correction

Die EXIF-Daten scheinen keine Besonderheiten aufzuweisen. Folgt also ein erster Blick auf das Bild selbst.

plaidCTF 2012 - 3D - normal view

Nun ergibt einiges einen Sinn. Der zur Challenge erforderliche Schlüssel muss von uns vom Bild selbst abgelesen werden. Das Problem ist nur, dass ein Papierstreifen uns den Blick versperrt. Diverse Verzerrungen und Überblendungen am Bild lassen jedoch auf eine Art 3D-Effekt schließen, was den Namen der Challenge wohl begründet.

Da 3D-Effekte immer durch das Aufnehmen eines Objektes aus verschiedenen Blickwinkeln entstehen, können wir den Schlüssel vielleicht ablesen, wenn wir einen anderen Blickwinkel (am Papierstreifen vorbei) aus dem Bild extrahieren können. Die Frage ist nur, wie die anderen Blickwinkel ins Bild codiert sind. Hier erinnern wir uns an die auffällige Größe der Datei und sehen uns den Inhalt im Hex-Editor an.

plaidCTF 2012 - 3D - hidden JPEG headers

Wie wir sehen, beginnt das JPEG mit den Bytes “FF D8 FF E1”. Testweise suchen wir nach diesen Bytes einmal in der gesamten Datei und erhalten als Ergebnis, dass diese Bytefolge (der JPEG-Header) genau 15 Mal im gesamten Bild vorkommt. Testweise schneide ich die ersten 0x6a200 Bytes aus dem Bild heraus und erhalte bei erneuter Betrachtung der Datei tatsächlich folgendes Ergebnis:

plaidCTF 2012 - 3D - multiple other angle views

Ein weiterer Blickwinkel! Und damit auch schon den hinteren Teil des Schlüssels, nämlich “dach3”. Der Rest ist simpel. Entweder man automatisiert sich das Vorgehen per Skript für die weiteren Bilder oder man wiederholt das Schneiden per Hand.

Der manuelle Weg erscheint mir hier schneller, also schneide ich das Bild erneut an den Stellen 0xd3200, 0x13b200, 0x1a2200, 0x2091be, 0x27017c, 0x2d713a, 0x33f0fa, 0x3a70b6, 0x40f074, 0x478021, 0x4dfff0, 0x547fae und 0x54ef70.Damit erhalte ich alle 15 Blickwinkel und kann mir den Schlüssel mit den Folgenden Auszügen einfach zusammensetzen.

plaidCTF 2012 - 3D - solution part 1 plaidCTF 2012 - 3D - solution part 2

Der Schlüssel lautet also “3d_g1v35_m3_a_h3adach3“.

Leave a Reply

Your email address will not be published. Required fields are marked *