SQL Injection verstehen und abschalten

Duergy

Mitglied
Seid gegrüßt,

ein bekannter hatte die Tage ein Problem mit einem "Hacker". Nun ich könnte die Query die er für die SQL-Injection genutzt hat jetzt einfach safe und gut ist, aber da ich das ganze script durchgehen will und wissen will was der böse Bube da ünerhaupt gemacht hat wäre es nett wenn mir jemand zwei Fragen beantworten kann

1. Wie kann ich diese Query Entschlüsseln:
Code:
union+all+select+0x31303235343830303536%2C0x31303235343830303536%2C0x31303235343830303536%2C0x31303235343830303536%2C0x31303235343830303536%2C0x31303235343830303536%2C0x31303235343830303536%2C0x31303235343830303536%2C0x31303235343830303536%2C0x31303235343830303536%2C0x31303235343830303536%2C0x31303235343830303536%2C0x31303235343830303536%2C0x31303235343830303536%2C0x31303235343830303536%2C0x31303235343830303536%2C0x31303235343830303536%2C0x31303235343830303536%2C0x31303235343830303536%2C0x31303235343830303536%2C0x31303235343830303536--

Also was ich bis jetzt Herausgefunden habe ist man soll "%2C" durch "," ersetzen
Code:
union+all+select+0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536--

Okay schlauer bin ich nun auch nicht ^^ Ich hoffe ihr könnt mir da helfen.

2. Wo werden seine gewünschten Infos angezeigt?
Also was auch immer die Query oben macht ich kann noch nicht nachvollziehen wo seine gewünschten Infos angezeigt werden.
Er hat seine Query einfach an einen Aufruf angehängt der Ähnlich
Code:
index.php?page=startseite+#hier_dann_seine_query#

Danke für eure Hilfe
 
Also erstens, die URL ist urlencodet (deshalb werden Kommas als %2C dargestellt und Leerzeichen als +).
Die einzelnen glieder sind vermutlich hexadezimal kodierte Strings (dafür spricht zumindest das 0x davor), dekodiert kommen allerdings auch nur andere Integers raus: der erste ist zB string(10) "1025480056".
Die beiden Bindestriche am ende "--" sind nur dafür da, um das ende eines queries festzulegen. In allen mir bekannten php-mysql-erweiterungen wird allerdings generell nur ein Query pro aufruf ausgeführt, sodass diese Bindestriche meistens sinnlos sind (ignoriert werden)

Zu dem Query selbst: http://dev.mysql.com/doc/refman/5.1/de/union.html
Theoretisch müssen in dem UNION teil genau die gleichen feldtypen wie in er richtigen Tabelle auftauchen, damit überhaupt was passiert. Ich weiß jetzt nicht wie deine Tabelle aussieht bzw in wiefern du eingaben escapest.

Generelle informationen und wie du das ganze verhindern kannst findest du hier>: http://php-de.github.io/jumpto/sql-injection/
 
Das kommt drauf an wie die Applikation (der PHP-Code) dahinter aussieht. Bei meinem Code wäre es vermutlich sinnlos. Bei fehlerhaften Abwehrmechanismen lässt sich damit der KOMPLETTE TABELLENINHALT auslesen!
 
Hi Duergy

0x31303235343830303536 ist die "Signatur" von Havij, einem SQL-Injection Tool. Diese werden einfach verwendet um die Anzahl der Spalten mit deiner bestehenden Query zu matchen, da sonst union nicht klappt. Hier etwas merkwürdig, dass offenbar gar keine Spalte für irgendwas verwendet wird. Normalerweise ersetzt du dann einfach eine der Spalten mit einer nützlichen Ausgabe.

Viele Grüsse
Cromon
 
Zurück