plaidCTF 2013 – hypercomputer 1

plaidCTF 2013 - Hypercomputer 1 - Task description

Diese Challenge (hypercomputer 1) erinnert nicht nur vom Namen her an die Supercomputer-Challenge aus dem vorjährigen plaidCTF 2012. Auch die Aufgabenstellung selbst weist bereits auf diese Challenge hin und vermerkt, dass es diesmal einfacher sein soll. Neben der Beschreiben erhalten wir die IP-Adresse eines SSH-Servers von dem wir uns dieses Binary kopieren.

Eine erste Untersuchung zeigt uns…

root@linux64:~/Plaid2013# file hypercomputer 
hypercomputer: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x0b7c8d904831417f536c59b59fdecfc738136536, stripped

…, dass es sich um ein 64bit Linux-Binary handelt, das beim normalen, testweisen Ausführen diese Ausgabe liefert:

root@linux64:~/Plaid2013# ./hypercomputer 
...Welcome to Hypercomputer!...
...This could take a very long time...

Es ist jedoch nicht so, dass dieser Text sofort erscheint – vielmehr dauert es mehrere Sekunden, was darauf schließen lässt, wie lange die gesamte Berechnung und Ausgabe der Flagge dauern könnte. Im letzten Jahr musste der Assembler-Code per Hand untersucht und optimiert werden, also sehen wir uns auch diesmal das Programm im Debugger an.

root@linux64:~/Plaid2013# gdb ./hypercomputer 
GNU gdb (GDB) 7.4.1-debian
Reading symbols from /root/Plaid2013/hypercomputer...(no debugging symbols found)...done.
(gdb) run
Starting program: /root/Plaid2013/hypercomputer 
...Welcome to Hypercomputer!...
...This could take a very long time...
^C
Program received signal SIGINT, Interrupt.
0x00007ffff787cbc0 in nanosleep () from /lib/x86_64-linux-gnu/libc.so.6

Durch die Unterbrechung der Programmausführung mit CTRL+C sehen wir, dass die Ausführung in der Funktion nanosleep(), die eine bestimmte Zeit abwartet, angehalten wurde. Dies erinnert schon an das Vorjahr, in dem der Programmablauf ebenfalls durch solche Funktionen künstlich verzögert wurde.
Continue reading

plaidCTF 2013 – three eyed fish

plaidCTF 2013 - three eyed fish - task description

Diese Challenge (three eyed fish) verrät zunächst nicht viel über das eigentliche Ziel. Nur eine Binärdatei wird zum Download bereit gestellt und der legendäre “Ban Hammer” als Belohnung für dieses Quest versprochen ;-)

rup0rt@linux64:~/Plaid2013# file three_eyed_fish
three_eyed_fish: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

Eine erste Untersuchung ergibt, dass es sich um ein 64bit Linux-Binary handelt. Um das normale Verhalten des Programmes zu testen, starten wir die Datei direkt.

rup0rt@linux64:~/Plaid2013# ./three_eyed_fish

Eine Ausgabe erzeugt das Programm nach dem Starten nicht. Beendet wird es jedoch auch nicht sofort – es muss also eine andere Funktion geben. Nach weiterer Betrachtung stellt man fest, dass immer nach dem Starten die Umschalt-LED des Keyboards aufleuchtet und zu blinken beginnt.

Die LED blinkt jedoch nicht einheitlich oder nach einem festen Muster. Alles was erkennbar ist, dass regelmäßig größere Pausen zwischen den Sequenzen liegen. Es könnte sich demnach um eine Art Morse-Code handeln, wobei die Pausen die Trennung zwischen den einzelnen Buchstaben darstellt.
Continue reading

plaidCTF 2013 – charsheet

plaidCTF 2013 - charsheet - task description

Ziel dieser Challenge (charsheet) ist es, an den Charakter-Namen des Administrators einer Webseite zu gelangen. Der Aufgabenstellung zur Folge spielt dieser mit dem Auftraggeber zusammen in einer Dungeons & Dragons (D&D) – Kampange.

Zuerst sehen wir uns die angegebene Webseite im Browser etwas genauer an. Dabei finden wir ein System vor, mit dem Charakterbögen von Charakteren aus Pen-and-Paper Rollenspielen verwaltet und gepflegt werden können.

Neben der Möglichkeit sich auf der Seite zu registrieren und – nach Login – neue Charaktere anzulegen, kann auch nach bereits hinterlegten Charakteren und Kampagnen gesucht werden. Ohne zu zögern testen wir die Suchfelder direkt auf die Möglichkeit von SQL-Injections, indem ein Hochkomma ‘ übergeben wird.

plaidCTF 2013 - charsheet - sql injection check

Tatsächlich führt diese Anfrage direkt zu einem serverseitigen Fehler und wir erhalten folgende Ausgabe:

plaidCTF 2013 - charsheet - sql query error message
Continue reading