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
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