Hilfe zu Hackxor + Cloaknet (Hacking Game)

Liebe Leserin, lieber Leser,

im Rahmen meines Hochschulbesuchs muss ich die Vorlesung "Computer Security" und deren Übungen absolvieren.

In unserer aktuellen Übung müssen wir uns mit Cross-Site-Scripting (XSS), sowie SQL Injections beschäftigen. Praktiziert wird dies am Hacking Game Hackxor.

Dort hänge ich nun im Cloaknet-Level fest, zu dem ich Hilfe bräuchte.

Das Szenario sieht wie folgt aus:
- Es existiert eine Webanwendung mit zwei Seiten: Login und "Interner Bereich"
- Im Internen Bereich ist die Login-History (DB-Tabelle "logs") für einen bestimmten Nutzer sichtbar. Dieser wird nach erfolgreichem Login in ein Cookie (Name: userid) gespeichert.
- Beim Aufruf des Bereiches wird der Cookie ausgelesen und eine SQL-Abfrage gemacht.
- Bei der SQL-Abfrage werden einfache Hochkommas ('), Backslashes (\\), sowie der zuvor zu LowerCase transformierten String auf die Worte SELECT und UNION überprüft und -im letzten Fall- durch einen leeren String ersetzt.

Einzusehen ist der Sourcecode des internen Bereichs (JSP-Code) hier.

Die noch zu erledigenden Aufgabenstellungen lauten:
1) You should be able to infer the number of columns used in the query statement from the output you see on the page. Sometimes, though, not everything is shown, and then it is important to find out the number of columns. How is it done? Provide an example.
2) What are the username and the password of the attacker?

Zu 2) weiß ich aus dem Sourcecode des Logins, dass die Usertabelle "users" heißt.


Lösungsweg:
Mein Gedanke war nun, in Bezug auf Aufgabe 2), die SQL-Anweisungen (SELECT, UNION) durch Kommentare zu unterbrechen, wie hier beschrieben. Leider scheint dies aber nicht zu funktionieren. Bei lokalen Versuchen in einer Datenbank sehe ich, dass MySQL Spaces um den Kommentar einbaut. Des Weiteren vermute ich, dass Leerzeichen nicht als Cookie-Values erlaubt sind.
In Bezug auf Aufgabe 1) bin ich derzeit leider noch ratlos, wie ich an die Spaltenanzahl komme. Vielleicht über die MySQL-spezifische "information_schema"-Datenbank?!?


Sollte sich jemand mit dem o.g. Hacking Game auskennen, würde ich mich sehr über Unterstützung von euch Erfahrenen freuen!

Beste Grüße,
starbug
 
ich finde es gerade bei solchen aufgaben relativ schwer dir einen konkreten hinweis zu geben, ohne gleich die lösung auf dem silbertablett zu liefern ...

nehmen wir den string replace filter mal als beispiel

aus "union" würde er "" machen ... aus "XXXXunionYYYY" würde demnach "XXXXYYYY" machen ... der wink mit dem zaunpfahl sollte folgender sein:
du weißt das der ersetzungsvorgang nur einmal durchläuft ...

UNIunionON ... SEselectLECT

was die spaltenzahl anbelangt ... was geschieht, wenn ein union nicht die richtige anzahl an spalten liefert?

evtl hilft dir das ja schon hinreichend weiter ...
 
Hallo GrafZahl,

vieeeeeelen Dank für deine Antwort!!

Manchmal ist die Lösung soooo nah und wenn man sich zu lange mit diesen Aufgaben beschäftigt und zu komplex denkt, kommt man einfach nicht auf den richtigen Pfad.

Und ja, dein Hinweis hat mir sehr geholfen - insbesondere der mit dem Replace-Beispiel. Und was die Spaltenanzahl angeht: Mir wurde von anderer Seite auch der Tipp gegeben, dass dies per GROUP BY möglich sein soll zu testen.

Letztendlich habe ich jedoch die Aufgabe gelöst bekommen:
- Logtabelle komplett ausgeben lassen
- Usertabelle ausgeben lassen (<- 3 Einträge vorhanden)
- ... und statt einem weiteren SQL, habe ich mich einfach mit den entsprechenden Usern eingeloggt, um den Account des Attackers herauszufinden.

Aber an dieser Stelle noch einmal den größten Dank für deinen Tipp mit dem Replace!! :)

Wünsche dir und allen Lesern ein schönes Wochenende,
starbug
 
Zurück
Oben