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

    Sto cercando di eseguire un'iniezione SQL su un sito Web fittizio creato sul mio localhost per un progetto di test di sicurezza.SQL injection non funziona correttamente

    ho cercato di inserire la stringa " OR "=' nel campo username e password in modo da dovrebbe bypassare e visualizzazione accesso corretti - Ma invece si visualizza login fallito

    Qualsiasi aiuto per capire il motivo per cui SQL injection non è lavorando

    <?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

    Probabilmente un numero di virgolette – user1909426

    risposta

    12

    la stringa di iniezione deve essere simile a questo:
    nome utente e password:

    ' or '1' = '1 
    

    Nome utente (spesso) o la password: (dipende da quale uno venire prima nella query)
    # commenti resto della query.

    ' or '1'='1' # 
    

    Per ulteriori informazioni su SQL injection, è possibile controllare questo perfetto url:
    The SQL Injection Knowledge Base

    Inoltre è possibile scaricare il mio slide fatte (file in formato power point ms (ppsx)) su SQL-pratico iniezione:
    SQL-injection in action

    +1

    ... C'è quello giusto. '#' È importante. Altrimenti l'iniezione dovrebbe essere nel campo 'password'. –

    2

    Prova iniettando questo: ' or '1' = '1' --

    '1' = '1' è sempre true e -- dice tutto dopo che lo -- è un commento e non verrà controllato.

    +3

    Ho scoperto che in alcune implementazioni di db (in particolare mysql) è necessario avere uno spazio prima del - altrimenti non viene contato come commento. – Steve

    +0

    Grazie, non lo sapevo. Ho appena modificato la mia risposta! :) – P1nGu1n

    Problemi correlati