Der Exif-Header einer Bild/JPEG Datei beginnt in der Reglen immer mit folgendem HEX-String: ”FF D8 FF E0 00 10 4A 46 49 46 00″ und endet mit
diesem ”FF DA 00 0C 03 01 00 02 11 03 11 00 3F 00″. Zwischen diesen beiden Strings werden nicht die eigentlich Bilddaten aufbewahrt sondern viel mehr Informationen über Software, Kamera, Author, Zeit.
Nach dem Header kommt dann das eigentlich Bild, welches dann im Footer mit einem
EOF(“FF D9″) abschließt. Ab dieser Stelle wird nicht mehr weiter geparst und die Datei ist zumindest für das Bildbetrachtungsprogramm vorbei.Man könnte also Unmengen an Daten in einem Bild verstecken. Das ist die Idee. Ich setzte die neusten Blockbuster einfach hinter das EOF und share dann eben 8GB große mkv.jpg Dateien – not?
Doch jetzt, zum PHP Code
den man übrigens nicht einfach an einer belieben Stelle einfügen kann, bzw. man kann es schon, zerstört dann aber mit aller Wahrscheinlichkeit das Bild. Das kann für einen eventuellen Upload über ein PHP-Script ein Strich durch die Rechnung sein. Wenn das Bild bei Upload eine exif_imagetype() Überprüfung zu bestehen hat, muss man es gar nicht versuchen den PHP-Code in die nähe des Header oder an andere kritische Stelle zu setzen. Anscheinend gibt es diese Funktion schon seit PHP 4.3 und wird wohl gerne zusätzlich zu einer MIME Prüfung benutzt(ich denke?)
Um solche Probleme zu umgehen sollte man den Code einfach direkt an die richtige Stelle implementieren. Es gibt ganz nette Tools die einem die Arbeit mit dem HEXeditor abnehmen. Beispielsweise haben edjpgcom.exe oder Irfanviewer genau diese Comment Edit Funktion die man braucht.
Ich hab nun schon ein paar Versuche hinter mir, in denen ich wirklich _viel_ HEX Code von Bildern verglichen habe. Trotz der Mühe habe ich keine Implementierung gefunden die jedesmal funktioniert. Auch hab ich schon gewissen Dokumente gewälzt die zwar Aufschlussreich waren, aber nicht in dem Maße wie ich es gern hätte. Dazu muss man wissen dass ich es überhaupt nicht mag irgendwelche Tools zu benutzen von denen ich nicht genau weiß was sie tun und wie sie es tun. Wenn da jemand eine gute Quelle hat, bitte einfach mal weiterreichen.
[spoiler]
Jetzt komme ich aber wirklich zu PHP,
Diesen Source habe ich also mit edjpgcom.exe in die nyan.jpg injiziert, dann über mein PHP Upload Script hoch geladen per
index.php?WERT=pictures/nyan.jpg
inkludiert
Zuerst hatte ich den absoluten Pfad zu der injizierten Datei angegeben – nicht besonders elegant. Also fragte ich mal den PHP begeisterten 24dschumpstriet. Er konnte mir schließlich mit der $_SERVER[‚PHP_SELF‘] Funktion den Horizont erweitern.Vielen Danke dafür.
[/spoiler]
Quelle : loewenherz.cc
Ein Kommentar
loewenherz
Hey, super interessanter Beitrag, gefällt mir sehr gut!