php
  • mysql
  • sql
  • sql-injection
  • 2013-01-06 25 views 8 likes 
    8

    Próbuję wykonać zastrzyk SQL na fałszywej stronie utworzonej na moim lokalnym serwerze dla projektu testowania bezpieczeństwa.SQL injection nie działa poprawnie

    Próbowałem wprowadzić ciąg " OR "=' w polu Nazwa użytkownika i hasło tak powinno go ominąć i wyświetlacz Logowanie Prawidłowe - Ale zamiast tego wyświetla logowanie powiodło

    Wszelkie pomóc zrozumieć dlaczego SQL injection nie jest pracy

    <?php 
        mysql_connect('localhost', 'root', ''); 
        mysql_select_db('test'); 
    
        if(isset($_POST['username'])&&isset($_POST['password'])){ 
         $username =$_POST['username']; 
         $password = $_POST['password']; 
         echo $username; 
         echo $password; 
    
         if(!empty($username)&&!empty($password)){ 
          $query ="SELECT id FROM users WHERE username = '$username' AND password = '$password'"; 
          $query_run = mysql_query($query); 
    
          if(mysql_num_rows($query_run)>=1){ 
           echo 'Login Correct'; 
          }else{ 
           echo 'Login Failed'; 
          } 
         } 
        } 
    ?> 
    <form action="test.php" method="POST"> 
        Username: <input type="text" name="username"> 
        Password: <input type="text" name="password"> 
        <input type="submit" value="Submit"> 
    </form> 
    
    +0

    Prawdopodobnie magiczny cytat z numeru – user1909426

    Odpowiedz

    12

    ciąg wtrysku powinno być tak:
    Nazwa użytkownika i hasło:

    ' or '1' = '1 
    

    Nazwa użytkownika (częściej) lub hasło: (To zależy od tego, który z nich na pierwszym miejscu w zapytaniu)
    # komentarze resztę zapytania.

    ' or '1'='1' # 
    

    Więcej informacji na temat SQL injection, można sprawdzić to idealne URL:
    The SQL Injection Knowledge Base

    Ponadto można pobrać mój wykonane slajdy (ms plik punktu zasilania (ppsx)) o praktycznym SQL- wtrysku:
    SQL-injection in action

    +1

    ... Jest odpowiedni. "#" Jest ważne. W przeciwnym razie zastrzyk musiałby znajdować się w polu 'password'. –

    2

    Spróbuj wstrzykując w ten sposób: ' or '1' = '1' --

    '1' = '1' jest zawsze prawdziwe i -- mówi wszystko po -- jest komentarzem i nie będzie zaznaczone.

    +3

    Zauważyłem, że w niektórych implementacjach db (w szczególności mysql) musisz mieć spację przed - w przeciwnym razie nie jest to traktowane jako komentarz. – Steve

    +0

    Dzięki, nie wiedziałem tego. Właśnie zredagowałem moją odpowiedź! :) – P1nGu1n

    Powiązane problemy