injection SQL-Challange

hallo

ich weiss nicht ob solche Fragen erlaubt sind, wenn nicht dann bitte mein Beitrag löschen

in einem Chalange sollten wir auf dieser seite :

http://www.snocs.org/Admin/login.php

den passwort von benutzer mit dem ID=3 finden.(ich vermute mal dass das ein Admin ist).

mein frage ist: reicht der ID um sich als Admin einzulogen oder braucht man unbedingt den Username??

Danke schon mal für Eure Antwort.
 
Original von SUID:root
Kein Problem. Kannst gern fragen.

;)


ich dachte da fehlt was in dem Challange.
mit dem ID konnte ich nichts anfangen. im gegenteil von einem Username, dann wäre es ein bisschen einfacher. :rolleyes:

ich hab vermutet dass, der befehl so ausssieht:

Code:
$sql = " SELECT * FROM users WHERE login = '$user' AND password ='$password'";

dass heisst dass, ich eine Username brauche.ich hab mit 'or''=' versucht, aber war leider nicht erfolgreich, vielleicht weil die fonction addslashes() avtiviert ist.

da bin ich stehengeblieben X(

jede Hilfe ist willkommen =)

danke SUID:root & ivegotmail für die Antwort.
 
Original von M-H
ich hab vermutet dass, der befehl so ausssieht:

Code:
$sql = " SELECT * FROM users WHERE login = '$user' AND password ='$password'";
nicht ganz. wie der befehl aussieht, kannst du dir ansehen wenn du mal ein fehlerhaftes sql injection machst.

Original von M-H
...vielleicht weil die fonction addslashes() avtiviert ist.
addslashes ist nicht aktivert, sonst würde sql injection nicht funktionieren.

du findest übrigens auch im quelltext bestimmte dinge die dir weiterhelfen.

desweiteren empfehle ich dir mal diese seite: http://www.unixwiz.net/techtips/sql-injection.html
dort sind einige praktische beispiel zu sql injection. und dort ist auch ein ansatz dabei wie man das passwort rausbekommen kann.
auf die gleiche weise kann man auch den usernamen rausfinden. d.h. man muss es nicht unbedingt über die ID machen.
wenn man bisschen praktisch denkt dann bekommt man den usernamen leicht raus (wenn man nicht drauf kommt, dann halt mit hilfe von sql injection).
 
Original von ivegotmail
Original von M-H
mein frage ist: reicht der ID um sich als Admin einzulogen oder braucht man unbedingt den Username??
ID reicht.

kannst du mir das mal genauer erklären? wenn das möglich ist, ansonsten ignoriert den beitrag bitte.
was mich aber damit vewirrt ist:

SELECT * FROM {xxx}1_membres WHERE pseuudooo=...

er fragt ja nicht nach id ab...
 
Hmm kommentare nimmt der Dösbaddel nicht an :D

Und bei der Query

SELECT * FROM xx1_membres WHERE pseuudooo=''; UPDATE xxx_membres SET pseuudooo='3'

gibt er einen Fehler zurück ... naja mal morgen gucken ;)
 
vom prinzip iss das auch ned wichtig....
es reicht scho den user zu überwinden (siehe link2)

von da an wird des pw validiert....und des muss umgangen werden....nur wie in die teilmenge von feld eins kommen?

irgendwas muss i übersehen.... )=
 
ein valider username ist "admin1", aber weiter komm ich auch ned; alle sql-befehle zum setzen eines anderen passworts für den user "admin1" werden nicht angenommen?!

cYa
 
Original von Sharkspear
was mich aber damit vewirrt ist:

SELECT * FROM {xxx}1_membres WHERE pseuudooo=...

er fragt ja nicht nach id ab...
man kann die WHERE klausel aber durch sql injection so erweitern, dass neben dem namen auch die id abgefragt wird (und zwar so dass diese dann ausschlaggebend ist).
man muss dazu aber noch den spaltenname für die IDs rausfinden. wo und wie man den rausfindet, weiß ich jetzt auch nicht (wenns jemand weiß kann er sich mal melden). hatte den ID spaltennamen zufällig woanders auf der seite gefunden.
 
Keiner hat sich bis jetzt eingeloggen ??das beweist dass,dieser Level ein bisschen schwieriger als ich dachte.
also ich habe usernamen und password-hash, allerdings weiß noch nicht welches hash verfahren dahinter steckt.

dann lies dir den artikel nochmal durch und überlege, ob da nicht doch ein ansatz dabei ist, mit dem du das pw bzw. den hash (nach und nach ;)) rausbekommst.
 
Hmm, wie will ich das PW rausfinden (den PW-Hash)?

Ich mein Username kann man noch raten, dass dann ein Teil der Query lautet WHERE username_field = 'admin1' ...

Aber bei Passwörtern ?

Man kann die ja schlecht ausgeben ...

Naja mal mit ner Subquery probieren das PW zu ändern :D

EDIT: bääääh

SELECT * FROM sql1_membres WHERE pseuudooo='0' (UPDATE sql1_membres SET passwortfeldr = 'hallo' WHERE pseuudooo = 'admin1') AND pseuudooo != '123'

geht auch nich ^^
 
Original von ivegotmail
also ich habe usernamen und password-hash, allerdings weiß noch nicht welches hash verfahren dahinter steckt.
Ich habe eben auch mal etwas rumprobiert und bin ebenfalls bis zum (15-stelligen) Pwd-Hash gekommen. Aber keine Ahnung, wie's weitergeht.
@Johnny
Passwörter kann man auch erraten, so ähnlich wie die ID.
SELECT * FROM sql1_membres WHERE pseuudooo = 'admin3' AND id_membre = '3'
Wenn die Bedingung wahr ist, wird das eingegebene Passwort mit dem aus der DB abgeglichen ("Mot de passe incorrect"), ansonsten nicht ("Login incorrect"). Auf ähnlichem Weg kann man auch den Pwd-Hash ermitteln.

WebSpider
 
Hat denn inzwischen noch jemand außer ivegotmail, WebSpider und ich den Passwort-Hash raus und vielleicht eine Idee, um welche Verschlüsselung es sich da handelt? Bzw. ob man damit sonst noch irgendwas anstellen muss?

Vielleicht könnte man ja mal ein kleines Brainstorming veranstalten.
Es kann auf jeden Fall kein Verfahren sein, was immer gleich lange Hashes produziert, denn der Hash von Admin3 und Admin1 ist nicht gleich lang. (Admin3 ist 15stelling und Admin1 16stellig)

Angenommen bei dem Wert in der DB handelt es sich nicht um einen Hash / das verschlüsselte Passwort, sondern die Abfrage verlangt die Eingabe eines solchen, der erst noch aus dem Wert in der DB gebildet werden muss, hat MD5, Crypt und Rot13 ebenso nicht funktioniert, wie das Passwort rückwärts einzugeben oder die enthaltenen Zahlen durch die entspr. Buchstaben im Alphabet zu ersetzen und umgekehrt.

Vielleicht hat ja wer eine zündende Idee. :)
 
Wichtiger ist doch viel eher erstmal eines:

Wie kommt man wirklich an id_membres heran, wenn das SQL Statement ein DataSet über * hinweg geht?

Also Antworten: Wie in irgendwelchen Foren gelesen kenn ich schon... (-:
 
Brauchst du nicht / geht nicht.
Der Weg den WebSpider am Ende seines Postings erleutert hat reicht.
 
Kann man das nicht so machen?

Als Injection einfach ein OR Passwort=irgendwas oder eben $_POST['passwortfeld']? Ich denke, dass das so funktionieren muss.
 
Ich hab mal eine Frage... wo muss ich denn die Injection machen? Muss ich den SQL-Code in das Passwortfeld schreiben (entsprechend maskiert natürlich), oder wie soll das gehen?
Nur mal ganz theoretisch, nicht unbedingt auf dieses CrackMe bezogen.
 
Zurück
Oben