L'iniezione SQL non restituisce risultati previsti

5

Ho creato un sito di test per conoscere SQLi e quindi proteggerlo. Potrei essere frainteso su come dovrebbe comportarsi, ma al momento non sto ottenendo i risultati che mi aspetto.

La pagina:

<!DOCTYPE html>
<html><body>

<h1>SQL Injection Test Site</h1>
<h2>Login Form</h2>

<form action="" method="post">
Username: <input type="text" name="username">
Password: <input type="text" name="password">
<input type="submit"></form>

<?php
$db = mysql_connect(***, ***, ***); 
if(!$db){ 
    die('Could not connect: ' . mysql_error()); 
}else{
    mysql_select_db(***);  
}

if(isset($_POST["username"]) && isset($_POST["password"])){
    $username = $_POST["username"];
    $password = $_POST["password"];
    $result = mysql_query("SELECT * FROM customer_data 
                            WHERE username = '$username' 
                               AND password = '$password'");
    $result = mysql_fetch_assoc($result);
    //we would now process the login if details matched
    echo "Logged in: " . $result['username'];
    var_dump($result);
}
?>

</body></html>

La tabella nel database:

L'input:

username: admin
password: ' OR '1'='1

La mia aspettativa è che troverà l'utente amministratore e quindi accetterà l'input dal campo password come '1' = '1 dovrebbe valutare su true. In realtà restituisce il risultato per la prima voce nella tabella, nome utente JBloggs. Questo è il bit che non capisco.

Qualcuno può segnalare un errore nel codice o nella logica che sta causando questo comportamento?

    
posta Scott Helme 21.07.2013 - 14:08
fonte

1 risposta

2

Non ci sono errori nel codice. Stai utilizzando la condizione OR . Per la prima riga con i dati dell'utente JBloggs, il nome utente non è admin ma 1 = 1 è vero per il primo record. Dal momento che le due condizioni hanno un OR tra di esse, ogni singola condizione vera renderà vera tutta la dichiarazione, ecco perché ottieni il record della prima riga.

    
risposta data 21.07.2013 - 14:24
fonte

Leggi altre domande sui tag