kostenloser Webspace werbefrei: lima-city


MySql injection möglich?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    strugglez

    strugglez hat kostenlosen Webspace.

    hey leute..

    hab ein script auf meinem server laufen, url sieht so aus:

    blabla.php?a=job&char=4957

    wenn ich da ein ' an die 4957 dranhänge, kommt folgender fehler:


    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in blabla.php on line 189

    bei möglichn sql injectionen soltle ja so ne "fetch_array" blabla kommen, is mein script sicher?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Nee...

    Benutze die Funktion mysql_real_escape_string() für alle Daten, die du ineinem Query packst.
  4. Hmm schwer zu sagen ohne Quellcode ;-) Da ich kein Drop Database anhängen möchte ;-)

    aber kannst ja mal folgendes probieren:

    blabla.php?a=job&char=4957';Update table set spalte='test' where id=1;

    table und spalte natürlich an eine vorhandene table anpassen

    Grüßle


    Beitrag zuletzt geändert: 5.5.2009 12:47:53 von scout
  5. aldistammkunde

    Kostenloser Webspace von aldistammkunde, auf Homepage erstellen warten

    aldistammkunde hat kostenlosen Webspace.

    hi,
    sieht für mich schon ein wenig kritisch aus:

    denn 'not a valid mysql-ressource' bedeutet ja, dass der query nicht ordnungsgemäss ausgeführt werden konnte - und das könnte dann in deinem fall daran liegen, dass per ' ein String im query an einer ungewöhnlichen stelle eingeleitet wird. Und das wiederum heisst, die ' (und eben evtl auch andere mysql-relevante zeichen) kommen unmaskiert in deinen query.


    Aber am einfachsten wäre es für alle, wenn du einfach den quellcode herzeigst?!

    scout schrieb:
    aber kannst ja mal folgendes probieren:

    blabla.php?a=job&char=4957';Update table set spalte='test' where id=1;

    @scout:
    sendet mysql_query() aus php nicht immer nur den ersten query eines strings oder vertue ich mich da jetzt?
  6. Autor dieses Themas

    strugglez

    strugglez hat kostenlosen Webspace.

    $id = $_GET["char"];
    			$resultado = mysql_query("select * from characters AS c INNER JOIN accounts AS a ON a.username = c.accountname WHERE c.id = $id AND a.username = '$user'");
    			$qde_registros = mysql_num_rows($resultado);
    			if ($qde_registros != 0)
    			{
    				$cQuery = mysql_query("select * from characters where id = $id");
    				$char = mysql_fetch_assoc($cQuery);


    hier ein teil des quellcodes^^

    Beitrag zuletzt geändert: 4.5.2009 21:50:04 von strugglez
  7. aldistammkunde

    Kostenloser Webspace von aldistammkunde, auf Homepage erstellen warten

    aldistammkunde hat kostenlosen Webspace.

    strugglez schrieb:
    [...]

    hier ein teil des quellcodes^^


    o_^ okay, in dem fall gilt das, was nikic schrieb (s.o.):

    Von selbst schützt sich bei der direkten Verwendung der PHP-mysql-befehle da kaum was - also: entweder ein bisschen über die oben genannte funktion und den Umgang mit dieser informieren oder - falls möglich - auf erweiterungen wie mysqli zurückgreifen, die dir das abnehmen können....
  8. Autor dieses Themas

    strugglez

    strugglez hat kostenlosen Webspace.

    also die können da injectn?

    soweit ich weiß geht bei dem mysql_query nur ein sql befehl, was können die da groß machn?
    hab da noch absolut kein plan von
  9. Die könnten den Query abschließen, und einen neuen anhänge:
    $user= " '");DROP DATABASE mydatabase"


    Lies dir mal das durch:
    http://www.php.net/manual/de/function.mysql-real-escape-string.php

    mfg,
    Prog
  10. aldistammkunde schrieb:
    scout schrieb:
    aber kannst ja mal folgendes probieren:

    blabla.php?a=job&char=4957';Update table set spalte='test' where id=1;

    @scout:
    sendet mysql_query() aus php nicht immer nur den ersten query eines strings oder vertue ich mich da jetzt?


    Nein, dem ist nicht so.
    MySQL sendet immer alle Abfragen, allerdings in einer Transaktion ;-)
    Wenn es zwei Selects sind kommt natürlich Brühe raus und MySQL muß sich für ein Select entscheiden (weiß jetzt nicht welches)

    Grüßle
  11. Man sollte immer alle eingaben Filtern!

    egal ob Mysql oder nicht mysql.

    Wichtig bei Zahlen: per $_GET und auch $_POST

    intval($_GET//$_POST-Variable...)

    sprich beispiel:

    info.php?id=203

    in der PHP:

    $get_id=intval($_GET["id"]);

    und außgaben sollten immer wegen XSS usw. noch bearbeitet werden (htmlspecialchars).

    Genauso wie man keine Datein direkt über den Querystring (GET/POST) includen soll Beispiel: index.php?include=./include/mysql.php

    das könnte man ggf. für externe scripte nutzen.

    MySql Injections sind zu vermeinden mit addslash oder besser mit mysql_real_escape_string oder für mysqli das selbe mit i ;D
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!