Bräuchte Hilfe bei Blind SQL Injection

Ich bräuchte ein bisschen Hilfe bei einer Blind SQL Injection. Nein nichts illegales, sondern für eine Übung an der Uni.

Ich habe folgende Aufgabe zu lösen:
A friend of yours has asked you to perform a security audit on the members administration of her golf club. She asks you to test if there are any security issues concerning the MySQL database implementation. She gives you a short introduction to the system, but leaves you to find out other information you need for your test:

  1. First step: Try to login without having any user data. Note that the pin is numerical!
  2. Second step: Find out which of the members has the highest balance on his/her account. You will not be able to see the balance on the website, you must find it out by passing an appropriate SQL query to the server.
  3. Third step: There is a members database which consists of two tables "regular" and "vip". Find out the "memberno" of the member who had the highest balance in step two. Every member's "name" has a suffix "(reg)" or "(VIP)" - this way you will recognize which table you are operating on. Again, you will not be able to see the "memberno" on the website but you must try to find it by using an appropriate SQL query.

Be aware that SQL injection can be a cumbersome task and it may take a while until you find the right query. Therefore it is advisable to start the assignment early and come back to it after a while when you seem to be stuck. You might want to read a bit into the syntax of SQL and search for information on SQL injection. In this assignment you will exercise what is called a "Blind SQL injection" which means you will not get any error messages from the server if the query you passed is wrong or doesn't yield any results. Note that in this exercise no output can mean you are on a good way.
Aufgabe 1 habe ich bereits gelöst, aber mit 2 und 3 komme ich zur Zeit nicht weiter. Wer will kann sein Können auf dieser Seite testen. Wenn es jemand schafft wäre ich für ein paar Tipps dankbar.

edit: Ok, Aufgabe 2 habe ich nun auch teilweise. Mit accountno=1 OR accountno IS NOT NULL order by balance bekomme ich die User aufsteigend nach balance sortiert. Nun hab ich mal den mit der größten balance, aber weiß jemand wie ich den konkreten Wert finde?

edit2: So, die balance habe ich nun auch. Mit and balance > blub bin ich dem Wert immer näher gekommen, bis ich schlussendlich den Wert hatte. Fehlt also nur noch Aufgabe 3 :)

edit3: Aufgabe 3 ist nun auch erledigt. Ging ähnlich wie Aufgabe 2.
 
Zuletzt bearbeitet:
Hi,
ich probier mich gerade am Login allerdings bin ich etwas verwundert, da ja z.B. ein ' schonmal nichts anrichtet und auch sonst hab ich keine Fehlermeldung zu stande gebracht. Wie soll ich dann was injecten? :confused:
Sowas wie ' OR 'x'='x funktioniert auch nicht... :(
Was studierst du denn und an welcher Art Uni? Ich studiere Informatik und hab noch nie so coole, praktische Übungsaufgaben gesehen :(
[Edit]
Oder kann es sein, dass das nach Ablauf der Frist nicht mehr klappt?

[Nochmal Edit]
Darf man sich auch den Code angucken?

[Und noch ein Edit ;)]
Ok hab das hier bei google gefunden: http://pastebin.com/m5049808e
Da war ich ja auf dem richtigen Weg, hab nur zu früh aufgehört...
Wäre nett wenn du die anderen Fragen die ich hier angehäuft hab noch beantworten könntest :)
Warum wird z.B. kein Fehler ausgegeben wenn man quatsch eingibt?
 
Zuletzt bearbeitet:
Sorry ich mach mal ein neues Posting...
Ist das nicht etwas gekünstelt, dass bei dem anhängen von OR 1=1 auf einmal etwas ausgegeben wird?
Wäre nett wenn du vielleicht noch die Lösung zu allen Aufgaben erklären könntest =)
Danke!
 
nein, das ist gar nicht gekünstelt,
wenn ich an nen query der so aussieht:

Code:
select name from table where user_id = 1

abnsetze und der eingabewert $id wird ersetzt mit

Code:
1 OR 1=1

dann hab ich eben die abfrage, gebt mir alles wo der user id 1 hat oder eben alles das wo 1=1 ist :D
damit trifft der filter immer zu und alles wird ausgeben!
 
Ja das ist schon klar aber wenn ich nur id=1 angebe wird ja auch nichts ausgegeben also woher kommt überhaupt die Ausgabe und warum ist sie auf 4 Ergebnisse beschränkt? :confused:
Mh es mag daran liegen, dass die ids nicht bei 1 anfangen ^^
 
achso meintest du das ;)
ja klar, daher gesehen ist das natürlich arg konstruiert, aber viele leute - vorallem unerfahrene - schreiben gern genau sone sicherheitslücke in ihre programme rein :)
 
Hi,
...
Was studierst du denn und an welcher Art Uni? Ich studiere Informatik und hab noch nie so coole, praktische Übungsaufgaben gesehen :(
...

Hab mal nen WhoIs gemacht: Technische Universitat Wien
Was er studiert, das kann aber nur er sagen :)

Ist übrigens ein wirklich interessantes Thema... Macht Spaß sowas "rumzuraten" :D
 
Hi

Sorry, dass ich so spät antworte. Hab ne Weile nicht mehr reingeschaut.

z.B. ein ' schonmal nichts anrichtet und auch sonst hab ich keine Fehlermeldung zu stande gebracht. Wie soll ich dann was injecten? :confused:
Deshalb heißt es ja Blind Injection.

Was studierst du denn und an welcher Art Uni? Ich studiere Informatik und hab noch nie so coole, praktische Übungsaufgaben gesehen :(
Software and Information Engineering an der TU Wien.

Ist das nicht etwas gekünstelt, dass bei dem anhängen von OR 1=1 auf einmal etwas ausgegeben wird?
Jo, ist gekünstelt. Aber es ist ja auch schließlich eine Übungsaufgabe die zu Lernzwecken dient und die muss nicht immer zu 100% Real World Bedingungen entsprechen.
 
Zurück
Oben