Sql Injection

morgn mal.

kann hier jemand eine SQL INJECTION vorzeign (mit Lösung)

dazu noch erklären warum er was hinschreibt (im Epxloit) ohne das man aber weder den php code noch den sql code kennt.

wie kann man ohne den quellcode zu kennen, die variablennamen, den Tabellennamen usw. wissen oder überhaupt herausbekommen ob sie verwundbar is??

thx im voraus für di mühe wenn sie sich wer antut
 
Original von sym4nt3c

wie kann man ohne den quellcode zu kennen, die variablennamen, den Tabellennamen usw. wissen oder überhaupt herausbekommen ob sie verwundbar is??

thx im voraus für di mühe wenn sie sich wer antut

guten morgen

also meist sind ja die sql injectionen für bekannte codes wie phbb und wie sie alle heisen da ist ja bekanntlich der quelltext einseh bar :)
 
Hi.

kann hier jemand eine SQL INJECTION vorzeign (mit Lösung)

Schau mal hier und hier und hier und vorallem hier. Achja, der wikipedia Artikel zu SQL Injections ist auch sehr interessant dennoch einfach und ausführlich gehandhabt.


wie kann man ohne den quellcode zu kennen, die variablennamen, den Tabellennamen usw. wissen oder überhaupt herausbekommen ob sie verwundbar is??
Such mal hier nach 'blind sql injection'.
 
Original von sym4nt3c
wie kann man ohne den quellcode zu kennen, die variablennamen, den Tabellennamen usw. wissen oder überhaupt herausbekommen ob sie verwundbar is??
Man muss versuchen Fehler zu generieren, die dann lansam aber sicher dir die Fehlenden Daten sagen :D
 
Hi,

Ich bitte einmal darum mir ein Mysterium zu erklären welches nirgends erklärt wird (vll. weils so offensichtlich ist)...

In allen Tutorials die ich bisher gelsen habe wird nie erklärt wie und wo ich zu injecten habe.

Es gibt mehrere Formen okay, eine (die ich als erstes gerne mal durschauen würde) ist, in der Browserzeile einfach was alla "'or''='" einzfügen oder halt andere SQL Befehle.

Aber wie und wo ich es auch ausprobiere es passiert nichts!

Ich habe eine Seite www.ihelpu.eu , gebe besp. meinen usernamen ein und als pass ins pw-Feld "'or''='" oder "+OR+1=1" uvm.

Passieren tut nichts!

Ich beherrsche die Basics von PHP und MySQL ganz gut , verstehe von daher was ich dort mache, aber ich verstehe nicht im geringgsten warum es nirgends klappt.

wenn mir jemand sagen könnte was ich falsch mache oder mir ein beispiel an meiner website geben möchte (dann bitte per PM ;) ) immer her damit, ansonsten werd ich wohl nie dainter kommen...

danke + MfG,

TK
 
Natürlich ist nicht jede Seite damit angreifbar, dass müsste klar sein.
Ich beherrsche die Basics von PHP und MySQL ganz gut , verstehe von daher was ich dort mache, aber ich verstehe nicht im geringgsten

Im einfachsten Fall entstehen angreifbare Queries in etwa so:
Code:
$query = "SELECT * FROM tabelle WHERE user = '$name'";

Durch das ' Was man als Namen eingibt, kann man die Anführungsstriche "überwinden" und weitere Sachen an den Query anhängen. Zum Beispiel führt "OR 1" o.ä. dazu, dass die WHERE-Bedingung immer erfüllt ist und alle Datensätze ausgewählt werden.
Wenn du den hier geposteten Links gelesen hättest, wüsstest du das aber auch, also lies die Antworten dir auch durch und sag dann, was genau du daran nicht verstehst.
 
hmm ich würde dir empfehlen, das dokument zu lesen und es dann auch selbst auszuprobieren. lad dir dazu am beste eine alte version eines populären skriptes runter und such dir einen dazu passenden exploit. Der Einfachheit zu empfehlen ist deluxeBB <= 1.06 [1] mit dem datz passenden SQL Injection Exploit [2]

[1] http://www.deluxebb.com/community/topic.php?tid=26
[2] Link zum Remote SQL Injection Exploit gibts per PN

[edit]
Um eine illegale Benutzung des Exploits zu verhindern ( da das vorher angegeben skript zu neu war ) hab ich mich für etwas älteres entschieden.
 
@Lesco:

Vll. hatte ich mich auch unklar ausgedrückt. Was die SQL Befehle anget habe ich keine Probleme (naja hatte ich auch genau so gesagt). Ich weiss eher nicht WO ich anzusetzen habe!

@fetzer: Danke, ich schau mir das gleich mal an, aber ich denke es wird wieder nichts weiter sein als eine Demonstration (dazu an einem falschen Beispiel wollte erstmal sehen wie das Injecten in der Browserzeile geht) wie SQL injections funktionieren, wenn man ein fertiges Exploit nimmt und betrachtet.

Wäre um eine Erklärung an meiner Seite (da tun ma keinem weh außer mir) mal sehr dankbar!

source der sql-abfrage gibs gerne per PM dazu.

MfG,

TK

PS: Link zum Exploit hätte ich dann gerne mal :)
 
das betrachten des exploits bringt dir sehr viel. daraus bekommst dann auch, was du in die browserzeile eintippen müsstest. das exploit ist nur dazu da, um das ganze zu automatisieren und es zu vereinfachen. mehr macht ein sql injection exploit nicht....

PS: PN is raus

Edit:

Der Source einer mysql Abfrage bringt nichts. Wie Lesco oben geschrieben hat: wenn du eine variable in der abfrage hast, die nicht kontrolliert wird, dann ist ein Angriff möglich. Es kommt also nicht nur auf die Abfrage drauf an, sondern auch, was im code passiert...
 
Hi,


Danke ersteinmal für den Link.

Das ich Sachen wie '%20OR%201=1 einzugeben habe ist klar, nur ich meine warum funktioniert es nie und vorallem warum funktioniert es nicht auf meiner homepage, ich mache keine " vor jedes ' bisher.


Also wer sich gern emal an meiner seite versuchen möchte möge dieses doch tun und mir mitteilen wie er es gemacht hat bitte...

Thx,


MfG,

Tk
 
eventl. hast du magic_quotes auf on, d.h. es werden die üblichen zeichen (",',...) automatisch escaped. so kann dann natrülich kein angriff geschehen:

Code:
mysql_query("SELECT nick FROM users WHERE pass='$_GET['pass']'");

Angriff mittels

Code:
site.php?pass='%20OR%201=1%20#

dann sähe das ganze so aus:

Code:
mysql_query("SELECT nick FROM users WHERE pass='' OR 1=1 #'");

und das ganze noch mit magic_quotes auf on:

Code:
mysql_query("SELECT nick FROM users WHERE pass='\' OR 1=1 #'");

Ich hoffe du hast verstanden, was ich mein....
 
Moin,

Das magic_quotes an ist kann natürlich sein, müsste dann Standard für jeden 1und1 gehosteten Webserver sein weil ich nichts eingestellt/umgestellt habe diesbezüglich.

Das hieße ich könnte mir nochmal n Apache aufn Localhost aufsetzen und es da versuchen he...

Kannst du mir vl. noch sagen weshalb es manchmal verschiedenen Ansätze bezüglich des Browserinjectens gibt ich meine damit manche beginnen mit einem " ' ", manche mit " ") " immer mal anders...


MfG,

TK

EDIT:

1.Rechtsschreibfehler

2.Gibt es eine Möglichkeit/einen Befehl um einen SQL Befehl abzubrechen aber so das man dahinter gleich ein komplettes neues Statement schreiben kann?

Ich stelle mir vor:

sqlfehler: SELECT userdaten FROM userdatenbank WHERE userid=0000

Browserzeile:www.seite.de/verzeichniss.php?userid=0000

durch eine Eingabe von "--" wird in diesem Fall die nicht sichtbare Passwortabfrage umgangen und der SQL Befehl beendet.

Die Frage die sich mir jetzt stellt ist: wie kaann ich den Befehl komplett abbrechen damit ich eine beliebige eigene SELECT Anfrage einschleusen kann?


MfG,

Tko?
 
bei mysql garnicht, da mysql keine 2 befehle über ein mysql_query verarbeiten kann. bin mir nicht sicher, wie der begriff dafür heisst.

es gibt datenbanken die können das, aber wie gesagt: mysql kann das nicht.
einen befehl einfach abbrechen geht meines wissens nicht. du kannst ihn nur verändern.
 
Hi,

danke zuersteinmal für deine Antwort.

Wenn es nicht möglich ist einen komplett neuen STring zu starten, wie sieht es dann mit Befehlen alla UNION aus, könnte ich nach einer WHERE Klausel noch ein Union einfügen und somit noch eine 2 Tabelle ansteuern?

Oder muss man sich stellen suchen wo man noch ganz am Anfnag in den Befehl einwirken kann?!

MfG,

Tko?
 
nein musst du nicht. ich kenn mich jedoch leider mit union nicht so gut aus, dass ich sagen könnte, wie es richtig funktioniert. Laut der mysql doku ( *klick* ) sollte es schon möglich sein, nach dem WHERE bzw ganz am ende des strings einen neuen Select befehl zu starten. Am besten du liesst dir die doku mal durch und probierst es selbst aus....
 
Zurück
Oben