2017-03-15 3 views
0

Ich versuche, eine SQL-Injection-Angriff auf meine eigene Datenbank durch Einfügen von SQL-Code in die Eingabebereiche zu simulieren.MySql Abfrage nicht ausgeführt, wenn es einen Kommentar gibt

My SQL-Code ist:

SELECT * FROM Users 
WHERE username = '...' 
AND password = '...'; 

wo ... der Eingang ist.

Ich versuche, die folgende Eingabe zu verwenden, um jeden Benutzer auszuwählen und zu begrenzen, dass die Ausgabe auf 1

Hier ist der Benutzername Eingabe:

' OR ''=' 

Dies sollte alle Benutzernamen bekommen.

Und hier ist der Passworteingabe:

' OR ''='' LIMIT 1; -- 

Dies sollte alle Passwörter bekommen zuerst, dann nur 1 Zeile, um die Ausgabe zu begrenzen, und kommentieren Sie dann die endgültige ';

der Code so ausgeführt sollte aussehen wie:

SELECT * FROM Users 
WHERE username = '' OR ''='' 
AND password = '' OR ''='' LIMIT 1; -- '; 

Dies funktioniert aus irgendeinem Grund nicht. Ich benutze SequelPro und es sagt mir, dass es 2 Abfragen ausführt und nichts ausgibt. Die zweite Abfrage ist -- ';

Allerdings, wenn ich diesen letzten Teil entfernen und nur bis zum ersten Semikolon laufen, funktioniert es und ruft einen einzelnen Benutzer aus der Datenbank ab.

Was ist los?

+1

Ich denke, der Fehler ist klar. Sie versuchen, zwei Abfragen auszuführen, aber die API lässt nur 1 zu. Sie müssen das mittlere Semikolon entfernen. –

+0

lesen Sie über PHP mysql API und mehrere Anweisungen. Es ist nicht erlaubt – Jens

+0

Ohh ich sehe, danke. Ich war jedoch verwirrt, weil das zweite Semikolon nur ein Kommentar ist. Ich habe nicht bemerkt, dass das als eine andere Aussage zählt? – user2397282

Antwort

0

Ihre Abfrage ist in Ordnung, und das Problem, das Sie haben, ist von SequelPro, der Parser scheint ein stumpfer zu sein, einen Kommentar für eine andere Abfrage nehmend.

Um diese Verwirrung zu vermeiden, nehmen Sie besser das nachlaufende Semikolon aus dem gefälschten Eingang

Verwandte Themen