Diese Challenge (Exploitation 200) stellt ein Binary bereit und verlangt von uns:
“Read the key out of ./key in the current working directory.”
Zusätzlich wird der Server “128.238.66.218” mit dem Port “54321” genannt.
Es geht also darum, die bereitgestellte ausführbare Datei, die auch auf dem genannten Server an Port 54321 betrieben wird, so durch das Senden von Daten auszunutzen, dass wir an den Inhalt der “key”-Datei gelangen, die auf dem Server abgelegt ist.
Wir sehen uns das Binary wie üblicherweise mit dem Tool “file” genauer an, um die zum Bearbeiten erforderliche Virtuelle Machine bestimmen zu können.
rup0rt@lambda:~/CSAW2012$ file exploitation1-release
exploitation1-release: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x94e984380a61d713c1a614f40eeee92c533593d4, not stripped
Es handelt sich um ein normales 32-bit Linux-Programm. Ich starte daher eine entsprechende Machine, hier ein Debian GNU Linux 6.0 über VirtualBox.
Auf der Virtuellen Machine legen wir zunächst eine “key”-Datei mit beliebigem Inhalt an. Diese soll die Datei auf dem Server nachstellen und beim späteren Testen des Exploits unterstützen, den Erfolg des Auslesens feststellen zu können. Danach starten wir die Datei machen uns mit der Funktionsweise des Binarys vertraut.
user@linux:~$ ./exploitation1-release
Got a connection from 127.0.0.1 on port 50047
user@linux:~$ nc localhost 54321
Wecome to my first CS project.
Please type your name: rup0rt
user@linux:~$
Genau wie auf dem Zielserver lauscht das Binary auf Port 54321. Nach dem Verbindungsaufbau mit “netcat” werden wir begrüßt und zur Eingabe unseres Namens aufgefordert. Nachdem dieser Abgesendet wurde, passiert nichts weiter.
Dem Anschein nach wird die Lösung dieser Challenge also darin bestehen, eine geeignete Zeichenkette zu wählen, so dass die interne Bearbeitung des Namens zu einem (ungewollten) Programmverhalten führt, durch das wir an den Inhalt der “key”-Datei gelangen können.
Continue reading →