SQL-Injections zum Test ausführen,aber wie?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Original geschrieben von TobiaZ
    Laut der Prüfung wird ein String erwartet, der eine Zahl enthält.
    PHP-Code:
    preg_match("#[0-9]#",$cat)) 
    hmmm stimmt, z.b. Kategorie 0815
    4cms.de

    Kommentar


    • #17
      Original geschrieben von litterauspirna
      Ich habe grad ein Brett vorm Kopf mit dem überschreiben,steinigt mich!

      Wo müsste ich da richtiger Weise die Prüfung auf get_magic_quotes_gpc machen und das stripslashes richtig einsetzen so das das dann nicht mehr überschrieben wird?
      Statt
      Code:
      $poster = stripslashes($_POST['poster']);
      machst du
      Code:
      $_POST['poster'] = stripslashes($_POST['poster']);

      Kommentar


      • #18
        Oder ersetzte gleich die ganze Liste
        PHP-Code:
        $poster stripslashes($_POST['poster']);
        $titel stripslashes($_POST['titel']);
        $email stripslashes($_POST['email']);
        $text stripslashes($_POST['text']);
        $cat stripslashes($_POST['cat']);
        $url stripslashes($_POST['url']);
        $allowkom stripslashes($_POST['allowkom']); 
        durch nur diese eine Zeile
        PHP-Code:
        $_POST array_map('stripslashes'$_POST); 
        4cms.de

        Kommentar


        • #19
          Guten Morgen!

          Ich habe ein Kategorie Post mal so geändert.

          PHP-Code:
          if(isset($_POST['send']))
          {
              
          $link "<a href=\"newscat_post.php\">Zurück</a>";
              if(
          get_magic_quotes_gpc())
              {
                  
          $_POST['ncat'] = stripslashes($_POST['ncat']);
                  
          $_POST['stat'] = stripslashes($_POST['stat']);
              }
              if(empty(
          $_POST['ncat']) && !preg_match("#^([0-9a-zäöü _-]+)$#i",$_POST['ncat']))
              {
                  echo 
          msgBoxAdmin("Der Catname fehlt oder hat verbotene Zeichen nur Zeichen a-z A-Z 0-9 _- und Leerzeichen erlaubt<br>!".$link);
                  exit();
              }
              else
              {
                  
          $sqlbefehl ="
                              Insert Into 
          $tab_ncats
                                  (
                                      ncat,
                                      nstatus
                                  )
                          VALUES    
                                  (
                                      '"
          .mysql_real_escape_string($_POST['ncat'])."',
                                      '"
          .mysql_real_escape_string((int)$_POST['stat'])."'
                                  )
                              "
          ;
                  
          $result mysql_query($sqlbefehl)or die(mysql_error());
                  
          header("Location: newscat_post.php");
              }

          Kann ich das so lassen?

          mfg der litter
          Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
          http://www.lit-web.de

          Kommentar


          • #20
            Nö, die Reihenfolge deiner Abarbeitung von Eingabe ist immer noch verkehrt. Warum zuerst

            PHP-Code:
                if(get_magic_quotes_gpc())
                {
                    
            $_POST['ncat'] = stripslashes($_POST['ncat']);
                    
            $_POST['stat'] = stripslashes($_POST['stat']);
                } 
            dann
            PHP-Code:
                if(empty($_POST['ncat']) ... 
            besser umgekehrt, denn sonst bekommst du eventuell Notice vom Parser.

            Und was soll denn das hier:

            mysql_real_escape_string((int)$_POST['stat'])

            Eine Zahl kann ja unmöglich Zeichen enthalten, also warum mysql_real_escape_string anwenden? Wenn du aber Ganzzahl haben willst, dann besser inval nehmen.

            BTW.: Warum denn dei Zahlen in ' bei deiner INSERT einpacken?

            Kommentar


            • #21
              Da ich das error_reporting(E_ALL) eingeschalten habe kann ich sagen ich bekomme keine Notice Meldung und auch keine sonstige Fehlermeldung. Ich habe das error_reporting in meiner config.inc.php die ich immer einbinde!

              Wie meinst du das mit umgekehrt? Also auf das stripslashes und empty bezogen?

              mfg der litter
              Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
              http://www.lit-web.de

              Kommentar


              • #22
                Original geschrieben von litterauspirna

                Wie meinst du das mit umgekehrt? Also auf das stripslashes und empty bezogen?
                Ja, zuerst auf empty prüfen, dann ggf. das andere.

                Kommentar


                • #23
                  Sozusagen muss ich erst die if Abfrage ausführen wo das empty enthalten ist und nach der Feldvalidierung dann erst die if anweisung wo ich auf magic_quotes prüfe und gegebenfalls das stripslashes ausgeführt wird!

                  So müsste ja dann die Abrabeitungsreihenfolge richtig ausgeführt?

                  Aslo so hier?

                  PHP-Code:
                  if(isset($_POST['send']))
                  {
                      
                  $link "<a href=\"newscat_post.php\">Zurück</a>";
                      if(empty(
                  $_POST['ncat']) && !preg_match("#^([0-9a-zäöü _-]+)$#i",$_POST['ncat']))
                      {
                          echo 
                  msgBoxAdmin("Der Catname fehlt oder hat verbotene Zeichen nur Zeichen a-z A-Z 0-9 _- und Leerzeichen erlaubt<br>!".$link);
                          exit();
                      }
                      if(
                  get_magic_quotes_gpc())
                      {
                          
                  $_POST['ncat'] = stripslashes($_POST['ncat']);
                      }
                      else
                      {
                          
                  $sqlbefehl ="
                                      Insert Into 
                  $tab_ncats
                                          (
                                              ncat,
                                              nstatus
                                          )
                                  VALUES    
                                          (
                                              '"
                  .mysql_real_escape_string($_POST['ncat'])."',
                                              '"
                  .(int)$_POST['stat']."'
                                          )
                                      "
                  ;
                          
                  $result mysql_query($sqlbefehl)or die(mysql_error());
                          
                  header("Location: newscat_post.php");
                      }

                  Da ich einen int Wert mit schicke kann ich mir auf diesen ja die Prüfung sparen oder?
                  Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                  http://www.lit-web.de

                  Kommentar


                  • #24
                    So wie die Reihenfolge jetzt ist wirst du imho bei aktivierten Magic Quotes Probleme bekommen. Denn wenn Magic Quotes zuschlägt dann schlägt deine Prüfung (preg_match) sicherlich fehl
                    Ich würde das eher so probieren
                    PHP-Code:
                    if(isset($_POST['send']) && !empty($_POST['ncat']))
                    {
                        if(
                    get_magic_quotes_gpc())
                        {
                            
                    $_POST['ncat'] = stripslashes($_POST['ncat']);
                        }
                        
                    $link "<a href=\"newscat_post.php\">Zurück</a>";
                        if(!
                    preg_match("#^([0-9a-zäöü _-]+)$#i",$_POST['ncat']))
                        {
                            echo 
                    msgBoxAdmin("Der Catname fehlt oder hat verbotene Zeichen nur Zeichen a-z A-Z 0-9 _- und Leerzeichen erlaubt<br>!".$link);
                            exit();
                        } 
                    Gruss

                    tobi
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar

                    Lädt...
                    X