Ankündigung

Einklappen
Keine Ankündigung bisher.

Mysql Angriff

Einklappen

Neue Werbung 2019

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

  • Mysql Angriff

    Hallo ich möchte gerne bei mir testen wie das mit solchen angriffen funktioniert allerdings bekomme ich es nicht mal selber hin das diese funktionieren....

    also sie funktionieren nur in wheres oder? also in einem insert oder update dort in eine variable diesen angriff schreiben bringt nix oder? es muss also immer so sein zb WHERE id = '$_get..id'

    ich habe quasi sowas:

    Code:
      $menuabfrage = "SELECT * FROM pion_menulinks WHERE menu_id = '$menue'
    schaffe es aber nicht dort nen angriff rein zu machen kommt immer nur sql fehler,,, $menue ist einfach ein get wert


    mfg

  • #2
    Probiers mal so:

    Code:
    $sql = "DELETE FROM table WHERE id = '".$_GET["id"]."'";
    Wenn du die Seite dann mit

    seite.php?id=2'%20OR%20'1'='1

    aufrufst, is deine Tabelle leer...

    Kommentar


    • #3
      nene ich will es aber bei der probieren:

      x'; DROP TABLE pion_infos; --
      aber hm... macht nix

      also kommt nur mysql fehler... stimmt das nun dass bei inserts keine mysql angriffe machen kann bzw bei updates?

      Kommentar


      • #4
        Zitat von Dominik Beitrag anzeigen
        also kommt nur mysql fehler... stimmt das nun dass bei inserts keine mysql angriffe machen kann bzw bei updates?
        Nein, das stimmt nicht. "Angriffe" sind überall möglich...
        [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

        Kommentar


        • #5
          naja hab deins davor gelesen also mysql query kann nur einen befehlt ausführen????

          wie könnte man noch angreifen?


          naja ich mein sowas
          Code:
                  $aendern = "UPDATE pion_menulinks Set linkname = '$linkname', linkziel = '$linkziel', linklist_id = '$linkliste' , linktyp = '$A' , pos = '$posit' WHERE id = '$id'";
                  $update = mysql_query($aendern);
          wenn ich nun für $linkname nem mysql befehl rein schreibe kann das funktionieren oder nur wenn ich es bei $id mache?

          bei einer update kommt das:
          Anfrage: UPDATE gebiete Set Nahrung = (Nahrung - 0), Forschungszentrum_arbeiter = (Forschungszentrum_arbeiter + 0\' DROP TABLE pion_infos --) WHERE x = '28' and y = '17' Antwort: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\' DROP TABLE pion_infos --) WHERE x = '28' and y = '17'' at line 1 Fehlercode: 1064

          Kommentar


          • #6
            Na also: Dein Query schlägt jetzt fehlt weil der Benutzer eine Eingabe gemacht hat die du nicht erwartet hast bzw. für die du dich nicht abgesichert hast.

            Ich weiß nicht auf was genau du raus willst. Mit mysql_real_escape_string() würdest du in diesem Fall eben sicherstellen, dass ein Eingabe-String eben auch nur ein Eingabe-String ist und nicht plötzlich Teil des "eigentlichen" Querys wird.
            [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

            Kommentar


            • #7
              was ich möchte? mich selbst infizieren....



              $aendern = "UPDATE pion_menulinks Set linkname = '$linkname', linkziel = '$linkziel', linklist_id = '$linkliste' , linktyp = '$A' , pos = '$posit' WHERE id = '$id'";
              $update = mysql_query($aendern);
              die variablen sind get variablen... nunr will ich eben per get die db löschen,..... dass muss doch gehen wenn man es nicht absichert...

              Kommentar


              • #8
                Zitat von Dominik Beitrag anzeigen
                $aendern = "UPDATE pion_menulinks Set linkname = '$linkname', linkziel = '$linkziel', linklist_id = '$linkliste' , linktyp = '$A' , pos = '$posit' WHERE id = '$id'";
                $update = mysql_query($aendern);
                die variablen sind get variablen... nunr will ich eben per get die db löschen,..... dass muss doch gehen wenn man es nicht absichert...
                In diesem Beispiel sehe ich jetzt so keine Möglichkeit da ein DROP TABLE (ich schätze das meinst du mit "db löschen") einzuschmuggeln.
                Wie kommst du drauf, dass es "gehen muss"?

                (Nur weil ein DROP TABLE in diesem Fall nicht geht, ist es trotzdem nicht sicher...)
                [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

                Kommentar


                • #9
                  naja auch bei der Abfrage könnte man durch ändern von $id die komplette tabelle mit den selben daten füllen und somit wohl unbrauchbar machen, aber löschen wird so nicht funktionieren

                  Kommentar


                  • #10
                    WHERE id = '$id'";


                    warum kann ich da kein droptable oder sonst einen befehlt intigiren?

                    beim update kann man also keinen intigrieren , aber wie könnte man anders schaden?


                    mfg

                    Kommentar


                    • #11
                      Das kannst du nicht weil mysql_query aus Sicherheitsgründen nur ein Query ausführt, da bringt dir kein Semikolon was...

                      Wie man anders schaden kann habe ich in meinem letzten Post geschildert...

                      Kommentar


                      • #12
                        versteh nicht was du mit füllen meinst?

                        naja gut wenn man den id ändern kann dann ist klar dann kann man jede id hin schreiben

                        also wäre das unter mir wenn die where nicht wäre sicher???

                        ich kann in update und insert statements keine mysqlangriffe vornehmen, sondern nur mit where hinten dran

                        aber in dem fall geht es wegen den mysqlquery sowie so nicht? man braucht doch immer mysqlquery

                        Kommentar


                        • #13
                          Es gibt noch UNION und subqueries und Kommentare.
                          Nein, INSERT und DELETE sind nicht automatisch sicher.

                          Kommentar


                          • #14
                            genaues beispiel wie man das oben nun schaden kann habt ihr keins??

                            also ich habe diese funktion
                            PHP-Code:
                            function sichern($string)
                                {
                                      if (!
                            is_numeric($string)) {
                                        
                                        
                            $string trim($string);
                                       
                                        if (
                            get_magic_quotes_gpc()) 
                                            
                            $string stripslashes($string);

                                        
                            $string "'" mysql_real_escape_string($string) . "'";
                                    } else {
                                        
                            intval($string);
                                   }

                                   return 
                            $string;
                                } 
                            heist das ich soll die auf jeden string anwenden bei einem insert zb auf jede var???

                            oman das lahmt doch dann^^


                            mfg

                            Kommentar


                            • #15
                              Der Datentyp soll nicht über die Eingabe bestimmt werden, sondern den bestimmst du und gibst in dann deiner Prüffunktion mit:
                              PHP-Code:
                              function sichern($string$typ){
                                  
                              $string trim($string);
                                  if (
                              get_magic_quotes_gpc()) {
                                       
                              $string stripslashes($string);
                                  }
                                  switch (
                              $typ){
                                      case 
                              'int':
                                          return 
                              intval($string);
                                      case 
                              'float':
                                          return 
                              floatval($string);
                                      default:
                                          return 
                              "'" mysql_real_escape_string($string) . "'";
                                  }

                              Gruss
                              L

                              Kommentar

                              Lädt...
                              X