#1 15. März 2007 Moin! Hab also jetzt den Get parameter bearbeitet. Allerdings ist das Query so aufgebaut: PHP: $sql = "SELECT * FROM table WHERE ID = '" . $_GET [ 'id' ]. "'" . Jetzt will ich aber in der URL etwas wie folgendes angeben: ...id=123';UPDATE+table+SET+value=key. Leider geht das nicht, da mein ' im GET Parameter immer escaped wird. Somit ist mein gesamter UPDATE Teil noch mit in den '...' und es wird nicht als extra SQL Befehl gewertet, sondern zählt zum WHERE ID = "...". Hoffe ihr habt mein Problem verstanden und könnt mir helfen ;-) Jeder fängt mal klein an.. Ist auch eher Spielkram, aber was solls. Ich muss ja was zum Lernen haben =) + Multi-Zitat Zitieren
#2 15. März 2007 AW: Problem bei SQL injection Das liegt an den Magic Quotes von PHP. PHP: get_magic_quotes_runtime - Manual PHP: get_magic_quotes_gpc - Manual stripslashes() um die zu entfernen. + Multi-Zitat Zitieren
#3 15. März 2007 AW: Problem bei SQL injection Ich versteh grade nicht, wie ich das anstellen solllte. Was SQL Injection ist weißt du sicherlich? Ich will damit ja eine fremde Seite manipulieren, indem ich an die ID einfach ein weiteres Query anhänge. Das muss ich ja so machen, weil ich keinen Zugriff auf die Dateien habe und das ganze nur über solche Lücken laufen kann. Wenn ich die Datei einfach editieren könnte hätt ich da ja das Query eingefügt. + Multi-Zitat Zitieren
#4 15. März 2007 AW: Problem bei SQL injection Schreib mal bitte den gesamten Codeblock, eine Zeile allein reicht möglicherweise zum Verstehen nicht aus Hab zwar länger nix mehr damit gemacht, informier mich gerade nochmal was für Möglichkeiten es gibt aber hast du nicht hier schon nen Fehler drin? id=123';UPDATE+table+SET+value=key sollte doch id=123';'UPDATE+table+SET+value=key sein oder? (wenn du eine Anweisung mit ' beendest musste die neue auch mit ' starten damit sie der "ursprüngliche" Code beenden kann ) + Multi-Zitat Zitieren
#5 15. März 2007 AW: Problem bei SQL injection ein \ wird ebenso mit einem \ escaped ;-) Von daher also sinnlos. Orig. Code: PHP: $abfrage = mysql_query ( "select * from dieb_user_" . $digit . " WHERE `id` = '" . $_GET [ 'id' ]. "'" ); Orig. Link: Code: file.php?id=123'+union+update+dieb_user_1+set+geld=999,+bekid=333+where+id=123 anstatt dieb_user_1 müsste da dieb_user_$digit stehen, standardgemäß ist $digit aber eigentlich immer 1. + Multi-Zitat Zitieren
#6 15. März 2007 AW: Problem bei SQL injection Mir ist durchaus klar, was du vorhast. Ich habe dir versucht zu erklaeren, woran dein Vorhaben scheitert. + Multi-Zitat Zitieren
#7 15. März 2007 AW: Problem bei SQL injection Okey. Hab ich irgendwie nicht so ganz verstanden Naja, gibt's irgendwelche sinnvollen Lösungsansätze? + Multi-Zitat Zitieren
#8 15. März 2007 AW: Problem bei SQL injection Es gibt keinen Loesungsansatz fuer dein Problem... + Multi-Zitat Zitieren
#9 15. März 2007 AW: Problem bei SQL injection Mit url codierten und/oder hex codierten Zeichen könnte man sowas umgehen. Heißt also Queries komplett codieren. Zusätzlich mal alle Kommentarstrings der MySQL Versionen durchtesten, ob du mit einem SQL - Kommentar den Query manipulieren kannst und/oder feststellen kannst ob die spezielle MySQL Version Fehler aufweist. Vielleicht zusätzlich versuchen die php version zu fingerprinten und dann mal hier NVD - Home schauen ob es Exploits für die Serverumgebung gibt. Zusätzlich besteht noch das Problem, dass ich nicht glaube, dass der Webserver so eingestellt ist, multiple Befehle mit einem Query auszuführen. + Multi-Zitat Zitieren