BaltCTF 2013 – 数独 (Sudoku)

BaltCTF 2013 - Sudoku - task description

Auch in bei dieser Challenge (Sudoku) werden wenig Informationen vorab gegeben. Nur chinesische Schriftzeichen stechen hervor, die nach kurzer Anwendung des Google-Translators als “Sudoku” übersetzt werden.

Für einen ersten Überblick verbinden wir uns zu dem angegebenen Server und bekommen folgende Ausgabe:

MANUAL: Have a nice time with sudoku
Format:
a) "[1-9] [1-9] [1-9]" - coords and input digit
b) "solution [1-9]{81}" - full solution
Other:
"restart" to start current game again
"[QqXx]" to exit

-------------
|97_|164|__2|
|__1|5_2|_9_|
|325|_9_|16_|
-------------
|__9|_2_|37_|
|_16|3_5|_4_|
|753|__8|___|
-------------
|5__|78_|419|
|837|_19|2__|
|_94|256|78_|
-------------

Wie erwartet – und bei diesem Capture the Flag auch nicht das erste Mal – muss ein Spiel automatisiert gelöst werden. Wir haben die Möglichkeit, entweder (a) die Felder einzeln anzugeben und so schrittweise eine Lösung zu erzeugen oder (b) die Lösung des gesamten Feldes direkt vorzugeben.

Ich habe mich für den zweiten Weg entschieden, nämlich das Feld lokal automatisiert zu lösen und nur das endgültige Feld abzusenden. Dafür habe ich ein Python-Skript entwickelt, das ich im Folgenden schrittweise erläutern möchte:
Continue reading

BaltCTF 2013 – Positive

BaltCTF 2013 - Positive - task description

Die “professional programming and coding” – Challenge “Positive” gibt zunächst keine Beschreibung des eigentlichen Ziels. Daher verbinden wir als erstes direkt zum angegebenen System.

MANUAL: Be positive, change all minuses to pluses!
Rules: clicking on a cell changed it and it's neighbours.
Format: 
a) "\d\d" - number of cell
b) "(?:\d\d)+" numbers of cells

++---+---+
----------
-+--------
--++------
-+---+-+--
---+------
----------
----++---+
-+---+----
-----+-+--

Mit den ersten Zeilen der Ausgabe sind wir etwas schlauer. Auf dem Spielfeld müssen durch Angabe der Spalte und Zeile alle Minus in Plus getauscht werden. Der Haken dabei ist, dass die benachbarten Felder ebenfalls getauscht werden. Die Eingabe von “11” als Lösung tausch damit neben 11 auch die Positionen 10, 12, 01, 02.

( Bei diesem Spiel handelt es sich um das so genannte “Lights Out” Spiel, das über bestimmte Algorithmen einfach gelöst werden kann. Diesen Hinweis hatte ich beim Lösen der Challenge leider nicht, was sich auch in meinem Lösungsweg widerspiegeln wird ;-). )
Continue reading

BaltCTF 2013 – Game

BaltCTF 2013 - Game - task description

Bei dieser Challenge (Game) wird uns ein Bild gezeigt und wir müssen den Namen des entsprechenden Spiels heraus finden. Das gesuchte Spiel sieht so aus:

BaltCTF 2013 - Game - whats the name of this game

Die direkte Bildersuche bei Google oder TinEye liefert kein Ergebnis. Darum habe ich zunächst nur einmal allgemein nach “ASCII games” gesucht und mir alle Bilder, die mit diesem Begriff in Zusammenhang stehen, auflisten lassen. Das Ergebnis sieht so aus:

BaltCTF 2013 - Game - Ascii game search results

Als siebentes Ergebnis des gezeigten Auschnittes befindet sich auch ein Bild, dass dem Gesuchten zumindest ähnelt:

BaltCTF 2013 - similar image

Wir verfolgen des Bild bis hin zu einem Blogeintrag, der den gefundenen Ausschnitt wie folgt beschreibt:

BaltCTF 2013 - Nethack

Demnach soll es sich um das Spiel NetHack handeln, ein rundenbasiertes Computerspiel aus dem Jahr 1987. Da der Name bereits mit großer Wahrscheinlichkeit auf die gesuchte Lösung hindeutet, versuchen wir diesen als Flagge und erhalten 73 Punkte ;-).

Die Antwort lautet somit: “nethack“.

asdf

BaltCTF 2013 – Gallery

BaltCTF 2013 - Gallery - task description

Bei der “Gallery” – Challenge erhalten wir nur eine Webseite und müssen anschließend selbst heraus finden, wo und wie wir an die Flagge gelangen. Das direkte Aufrufen der URL liefert dieses Ergebnis:

BaltCTF 2013 - Gallery - Website

Es handelt sich um eine Seite, auf der wir Bilder hochladen und – in einer Gallerie – speichern können. Sobald wir den Link zum Hochladen eines Bildes anklicken, erscheint das entsprechende Formular:

BaltCTF 2013 - Gallery - Upload pictures form

Wir werden darauf hingewiesen, dass nur Dateien mit den Endungen “.gif” und “.png” erlaubt sind. Es drängt sich die Frage auf, ob vielleicht auch andere Dateiendungen, zum Beispiel “.php”, hochgeladen werden können. Damit wäre es möglich, eigene Skripte und damit Kommandos auf dem Server auszuführen und die Flagge zu suchen.
Continue reading

BaltCTF 2013 – Hidden 1

BaltCTF 2013 - Hidden 100 - task description

Diese Challenge (Hidden 1) verlangt, dass wir die Flagge finden. Darüber wie und wo wir suchen sollen, wird jedoch überhaupt nichts verraten. Oft befinden sich “Hidden-Flags” im IRC, können über DNS-Anfragen erlangt werden oder durch spezielle HTTP-Requests. Diese Versuche führten hier jedoch zu keinem Ergebnis.

Also sehen wir uns als nächstes den HTML-Quellcode der Seite etwas genauer an. Aber auch hier ist nichts auffällig oder offensichtlich versteckt worden. Auch der gezielte Aufruf von nicht-existenten Challenge-Nummern bringt uns nicht weiter. Bei jedem Seitenaufruf fällt jedoch das permanent wechselnde BaltCTF-Logo, wie beispielsweise dieses hier auf:

BaltCTF 2013 - Hidden 100 - logo

Vielleicht wurde die Flagge ja in einem der Bilder versteckt? Wir laden also alle Bilder der Webseite herunter und untersuchen diese auf Spuren. Ein Blick in die Seiteninformationen des Browsers hilft, sich einen Überblick über die Dateien zu verschaffen:

BaltCTF 2013 - Hidden 100 - Image download

Neben vielen Bildern, die dem Joomla-Template zuzuordnen sind und den soeben genannten, wechselnden Logos, befindet sich auch das favicon.ico der Webseite:

BaltCTF 2013 - Hidden 100 - favicon.ico

Das Favicon (favorite icon) wird vom Browser als Symbol für die Webseite (meist links) neben der URL eingeblendet. Auch hier könnte also eine Flagge versteckt sein. Wir untersuchen auch diese Datei mit Hilfe von “strings”:

rup0rt@lambda:~/BaltCTF2013$ strings favicon.ico 
JFIF
Exif
2013:05:04 11:01:40
JFIF
 , #&')*)
[...]
~       xSM
.]*Up
hidden:68648a55b906fb2e4af7423024c9e48f

Am Ende der Datei finden wir dabei tatsächlich einen Hinweis auf eine versteckte Flagge!!

Die Lösung lautet somit: “68648a55b906fb2e4af7423024c9e48f“.