Hackover CTF 2015 – securelogin

This writeup describes the solution for the securelogin challenge in Hackover CTF 2015 held by Chaos Computer Club Hamburg.

Hackover CTF 2015 - securelogin - task description

We have to get the flag from the website, so lets check it out:

Hackover CTF 2015 - securelogin - website view

Just a simple website. We can login with any data. But when visiting the “secret” tab, this is the result:

Hackover CTF 2015 - securelogin - login view

No access – no flag :-(. Lets check the cookies.

Hackover CTF 2015 - securelogin - cookie data

There is a “data” cookie. It looks like base64 so we’re going to decode it and look at its content:

ruport@zentaur:~$ echo "dXNlcm5hbWU9cnVwMHJ0LWEyZjFmY2U4ZmM5NjAxMDIwYzRhYjA5MzJjYmM1MmJkZjU3YTQzYmE4MzAyNmI4NmZmNjU2YzQzNmZkOWQ4NTk=" | base64 -d
username=rup0rt-a2f1fce8fc9601020c4ab0932cbc52bdf57a43ba83026b86ff656c436fd9d859

The cookie data contains my username and a sha256 hash (which is not the hashed username :D). It must be some message authentication code (MAC). When knowing and controlling a plaintext and looking for a valid MAC, you will always have to think on hash length extension attacks.
Continue reading

Hackover CTF 2015 – messagecenter

This writeup describes the solution for the messagecenter challenge in Hackover CTF 2015 held by Chaos Computer Club Hamburg.

Hackover CTF 2015 - Messagecenter - Task description

The task was … to find the flag …  as usual :D. So lets look at the website.

Hackover CTF 2015 - Messagecenter - Website

So we get a simple website with login fields and some information (demo login data, more username, etc.). When logging in using the “demo” account and “remember me” option we get this view:
Continue reading

Hack.Lu CTF 2014 – ImageUpload

Hack.Lu CTF 2014 - ImageUpload - Task description

Diese Challenge (ImageUpload) erzählt uns von einer Website, auf der man Bilder hochladen kann um dem Scheriff bei der Verbrechenjagd zu unterstützen. Als erstes sehen wir uns diese Webseite etwas genauer an.

Hack.Lu CTF 2014 - ImageUpload - Website

Die Seite ist sehr klein und übersichtlich. Es gibt eine Möglichkeit sich anzumelden, mit der wir – wegen Abfrage von Benutzernamen und Password – zunächst nichts anfangen können. Des Weiteren lassen sich offensichtlich Bilder hochladen. Diese Möglichkeit nutzen wir für ein Testbild.

Hack.Lu CTF 2014 - ImageUpload - Picture upload

Nach dem Hochladen sehen wir das Bild auf der Webseite. Zusätzlich wurden am unteren Ende des Bildes Daten angefügt. Bei diesen Daten handelt es sich vermutlich um Exchangeable Image File Format (EXIF) Daten, die aus dem Bild selbst ausgelesen wurden. Da mein Bild keine Daten enthielt, sind die Felder leer.

Continue reading

CodeGate CTF 2014 – 120

CodeGate CTF 2014 - 120 - Task description

Die Challenge “120” nennt uns ohne weitere Hinweise nur eine Webseite und deren zeigt uns deren PHP-Quellcode. Zu Beginn rufen wir die Webseite direkt auf:

CodeGate CTF 2014 - 120 - Limited tries website

Wir erkennen eine Passwortabfrage sowie einen Zähler, der bei 120 beginnt und mit jedem Webseitenaufruf um Eins herunter zählt. Des Weiteren ist ein Link “Auth” sichtbar, der zu dieser Seite führt:

CodeGate CTF 2014 - 120 - Authentication website

Wir sehen eine weitere Seite mit Passwortabfrage, in der jedoch bereits ein erster Hinweis enthalten ist, nämlich, dass das nur Kleinbuchstaben enthält. Unser Ziel scheint es also zu sein, an das Passwort zu gelangen.

Als Nächstes sehen wir uns den Quellcode der Webseite an um deren Funktionalität zu verinnerlichen. Auszugsweise tut die Webseite folgendes:
Continue reading

CodeGate CTF 2014 – Web Proxy

CodeGate CTF 2014 - Web Proxy - Task description

Die Challenge “Web Proxy” startet mit der Behauptung, dass mit dem Proxy sicheres surfen möglich sei. Dies testen wir direkt einmal, indem wir eine beliebige Webseite – hier f00l.de – mit der beschriebenen URL aufrufen.

CodeGate CTF 2014 - Web Proxy - Website

Der Blick in die Protokolle zeigt, dass die Seite tatsächlich abgefragt wird und die angegebenen HTTP-Header mit denen der Webseite überein stimmen. Als Nächstes sehen wir uns den Quellcode der Proxy-Seite etwas genauer an und finden am Ende folgende Zeilen vor:

CodeGate CTF 2014 - Web Proxy - Source Code
Continue reading

Hack.Lu CTF 2013 – Pay TV

Hack.Lu CTF 2013 - Pay TV - task description

Diese Challenge verlangt von uns, Zugriff auf eine Pay TV Plattform mit Nachrichten über das “Oktoberfest” zu erlangen. Dazu erhalten wir nichts weiter als die Webseite selbst genannt, die wir uns als Erstes ansehen.

Hack.Lu CTF 2013 - Pay TV - Website

Auf der Webseite befindet sich nur ein Bild sowie die Eingabemaske für ein Passwort. Sehen wir uns also als Nächstes des HTML-Quellcode genauer an.

<!DOCTYPE html>
<title>Skynet Pay TV</title>
<link rel="stylesheet" href="/static/style.css">
<div id="container">
    <div id="news">
        <div id="newstext">
        </div>
    </div>
    <img src="/static/noise.gif" id="noise">
    <form action="/gimmetv" method="post">
        <input type="text" id="key" name="key" focus><br />
        <input type="submit" value=" ">
        <div id="error"></div>
    </form>
</div>
<script src="/static/key.js"></script>

In Zeile 10 erkennen wir, dass die Formulardaten an das Ziel “/gimmetv” gesendet werden. Außerdem wird ein in Zeile 16 ein zusätzliches JavaScript eingebunden, dass sich in “/static/key.js” befindet. Auch diese Datei laden wir herunter und betrachten sie.
Continue reading

DEF CON CTF 2013 – rememberme

DEFCON CTF 2013 - rememberme - task description

Diese Challenge (rememberme) nennt wieder nur eine Webseite, die wir für einen ersten Eindruck direkt besuchen.

DEFCON CTF 2013 - rememberme - website

Die Seite selbst verlinkt zwei Dateien und bietet einen Login an, den wir jedoch ohne Zugangsdaten nicht nutzen können. Beim Aufruf der Datei “usernames.txt” kann man folgendes erkennen:

DEFCON CTF 2013 - rememberme - usernames.txt

Neben den Benutzernamen fällt hier jedoch besonders die URL mit dem Parameter “accesscode” auf. Der Hash-Wert dieses Parameters entspricht im vorliegenden Fall, der folgenden Berechnung:
Continue reading

DEF CON CTF 2013 – babysfirst

DEFCON 2013 CTF - babysfirst - task description

Die Challenge (babysfirst) verweist zunächst nur auf eine Webseite, die wir uns direkt näher ansehen.

DEFCON 2013 CTF - babysfirst - website

Einer der ersten SQL-Injection-Versuche mit ‘ or ‘1’=’1 als Benutzername und Passwort liefert direkt, dieses Ergebnis:

DEFCON 2013 CTF - babysfirst - sql injection

Neben diversen Möglichkeiten, kann hier zum Beispiel eine Blind SQL-Injection durchgeführt werden.
Continue reading

Boston Key Party CTF 2013 – nedias pictures :)

Boston Key Party CTF 2013 - Nedias Pictures ;) - task description

Die Challenge (nedias pictures) beschreibt eine Person namens “Nedia”, die sich gern Bilder ansieht und Flaggen gern in Cookies versteckt ;-). Alles deutet also hier bereits auf ein Cross Site Scripting hin. Wir besuchen zunächst die genannte Webseite für Uploads.

Boston Key Party CTF 2013 - Nedias Pictures ;) - Image upload

Wir finden ein simples Upload-Formular vor, das uns das Hochladen von Bildern gestattet und nach Absenden beispielsweise folgendes meldet.

Boston Key Party CTF 2013 - Nedias Pictures ;) - Image recognized

Dabei wird uns das hochgeladene Bild immer zu “nediapicture.gif” umbenannt und auf der Webseite angezeigt. Ein Blick in den Quellcode der Seite zeigt dabei:

Boston Key Party CTF 2013 - Nedias Pictures ;) - Website source code
Continue reading

EBCTF Teaser 2013 – WEB200

EBCTF Teaser 2013 - WEB200 - task description

Diese Challenge (WEB200 – “Wooden Shoes”) war umfangreicher als zuerst erwartet. Alles beginnt mit einer kurzen Beschreibung und der Benennung einer Webseite.

EBCTF Teaser 2013 - WEB200 - Wooden Shoes website

Wir finden eine Webseite vor, auf der Schuhe gesucht und bestellt werden können. Dem ersten Eindruck nach werden wir eine SQL-Injection oder ähnliches durchführen müssen. Beim Versuch, Sonderzeichen in das Suchfeld einzufügen, erhalten wir jedoch, diese Ausgabe:

EBCTF Teaser 2013 - WEB200 - sql injection error

So kommen wir also nicht weiter.
Continue reading