Hack.Lu CTF 2012 – Zombie AV

Hack.Lu CTF 2012 - Zombie AV - task description

Diese Challenge (Zombie AV) liefert uns einige PHP-Dateien und nennt das Ziel, den Inhalt der Datei “config.php” auf einer bestimmten Webseite auszulesen. Ohne die PHP-Quellcodes vorher zu betrachten rufen wir zunächst die Webseite auf um uns einen Überblick über die vor uns liegende Aufgabe zu verschaffen.

Hack.Lu CTF 2012 - Zombie AV - virus upload

Es scheint sich um einen online AntiVirus (AV) Scanner zu handeln, dem Dateien übergeben werden können um auf das Vorhandensein von Viren zu prüfen. Wir testen das System probeweise mit einer beliebigen 32bit Binärdatei mit folgendem Ergebnis:

Hack.Lu CTF 2012 - Zombie AV - virus scan

Dem Anschein nach prüft das System den Beginn (ELF Header) des Binarys auf eine bestimmte (Viren-) Signatur. Welche Opcodes hier genau erwartet werden und was für eine Reaktion bei Fund erfolgt, können wir nur erahnen und müssen uns daher nun den PHP-Quellcodes widmen.

Continue reading

CSAW CTF Qualifiers 2012 –
Web 300

http://128.238.66.217/
“This is a website belonging to a horse-fighting gang. Even with an account, it’s not clear what they’re up to. Your task is to get administrator access and see if you can figure anything out. Your account is csaw_challenger/letmein123.”

Bei der Challenge Web 300 handelt es sich um ein Board, in der diverse Informationen präsentiert werden. Dies umfasst im wesentlichen jeweils eine Seite mit News, bzw. Benutzerinformationen oder jegliche Informationen zu Pferden (Name, Beschreibung etc pp).

CSAW CTF 2012 - Web 300 - website

Die Seiten selbst werden per GET Request weiter verarbeitet. Ausserdem stellt man recht schnell fest, dass ein Session Cookie des aktuell angemeldeten Benutzers gesetzt wird. Somit muss man wohl irgendwie versuchen die Session des Administrators zu übernehmen. Bei näherer Untersuchung fällt auf, dass jegliche Informationen mittels URI (id=XXX) ausgewertet werden. Das lässt vermuten, dass bei dieser Challenge eine SQL Injection Schwachstelle ausgenutzt werden muss. Das wird auf den Seiten “user.php” und “horse.php” überprüft.

http://128.238.66.217/user.php?id=1′ or ‘1’=’1      => keine Schwachstelle
http://128.238.66.217/horse.php?id=1′ or ‘1’=’1    => Schwachstelle !!!

CSAW CTF 2012 - Web 300 - SQL injection error message

Continue reading

CSAW CTF Qualifiers 2012 –
Web 200

Die diesjährige CSAW Web 200 – Challenge führt uns zunächst auf einen Webserver, bei dem das Indexing aktiviert ist. Demnach können wir alle Dateien, die sich im Pfad befinden, sehen und erhalten folgende Ansicht:

CSAW CTF 2012 - Web 200 - directory listing

Im Verzeichnis befinden sich vier PHP-Dateien sowie ein PHP-Quellcode-Datei (.phps). Bevor wir uns mit Quellcodes und ähnlichem befassen, sehen wir erst einmal, mit was für einer Art System bzw. Web-Anwendung wir es hier zu tun haben. Dazu rufe ich kurz die Seiten auf, um einen Überblick über deren Funktion zu bekommen.

CSAW CTF 2012 - Web 200 - login form

CSAW CTF 2012 - Web 200 - registration form

Dem ersten Anschein nach handelt es sich also um ein simples System zum Einloggen, Registrieren und Zurücksetzen von Benutzeraccounts. Das Erstellen eines eigenen Kontos funktioniert und ermöglicht den Login, jedoch ohne weitere Informationen von der Seite zu erhalten.

Continue reading

Defcon 20 CTF Prequals 2012 –
Grab Bag 400

Bei der “Grab Bag 400) – Challenge wird uns ein Webserver genannt und folgende Frage gestellt:

“What is Jeff Moss’ checking account balance?”

Wir sollen demnach den Kontostand von “Jeff Moss”, dem Defcon-Gründer, in Erfahrung bringen. Zuerst besuchen wir also die Webseite und verschaffen uns einen Überblick.

Defcon 20 CTF 2012 - Grab Bag 400 - website

Es handelt sich um die Webseite der “Bank of America”, die uns unter der Domain “boabank.com” vorgestellt wird. Nach einem kurzen Überfliegen der Links (von denen es nicht viele gibt), sticht schon das Suchfeld im rechten Bereich der Webseite ins Auge.

Hier kann man nach BoaBank-Filialen in seiner Nähe durch Eingabe der Postleitzahl suchen. Bereits die Eingabe einer Zeichenkette, die nicht aus Zahlen besteht, führt schon zu der Fehlermeldung:

“ERROR: column … does not exist Position: 55”

Dabei handelt es sich um eine Fehlermeldung des Datenbanksystems PostgreSQL. Dass der Fehler ohne die Eingabe von (einfachen oder doppelten) Anführungszeichen ausgelöst wird, lässt vermuten, dass der Wert der Postleitzahl ebenfalls ohne Anführungszeichen direkt an die Datenbank-Abfrage weitergegeben wird. Eine mögliche Anfrage könnte daher wie folgt aussehen:

SELECT ... FROM ... WHERE zip = $_POST['zip'];

Um diese Vermutung zu überprüfen und beispielsweise alle Filialen beliebiger Postleitzahl auszugeben, trage ich in das Suchfeld “1234 OR 1=1” ein, und erhalte folgendes Ergebnis:
Continue reading

plaidCTF 2012 – Paste

plaidCTF 2012 - Paste - task description

Bei dieser Challenge (Paste) wird uns ein Webserver genannt, der eine Paste-Engine betreibt. Unser Auftrag ist es herauszufinden, welche Daten auf dieser Webseite ausgetauscht wurden. Dafür bekommen wir zusätzlich noch den Quellcode der Paste-Seite zur Verfügung gestellt.

Zunächst rufen wir die Webseite auf um uns einen Überblick zu verschaffen.

plaidCTF 2012 - Paste - website

Es handelt sich um eine Paste-Engine zum Einfügen von Quellcode. Dazu können die Pastes mit Beschreibungen versehen und bestehende Pastes mit weiteren Daten als Followup ergänzt werden. Um nicht per Hand nach möglichen Schwachstellen suchen zu müssen, sehen wir uns direkt die vorhandenen Quellcodes an.
Continue reading