Avvio dell'iniezione SQL in MD5 con mysqli_real_escape_string ()?

-1

Possiamo sfruttare i metodi MD5() e mysqli_real_escape_string() in questo caso per eseguire l'iniezione SQL?

Ecco lo snippet di codice:

$pwd = mysqli_real_escape_string($conn,MD5($_POST['pwd']));
$login = "select fnm,lnm,email,addr,age,dob from register where email='$email' and pwd='$pwd' and status='a'";

Il codice completo è disponibile qui .

    
posta Innocent 05.07.2016 - 17:22
fonte

2 risposte

2

No, non penso che il campo pwd non sia sfruttabile in questo esempio. Poiché il PHP è passato attraverso la funzione MD5() di PHP, l'output sarà la codifica esadecimale dell'hash . Ciò significa che la stringa conterrà solo cifre e le lettere a in f . Non puoi uscire dalla citazione usando quei caratteri.

Supponiamo che sia stato utilizzato MD5($_POST['pwd'], true) , in modo che l'hash binario non elaborato fosse stato restituito. Quindi dovresti inserire un ' per uscire dal contesto della stringa. Supponendo che i set di caratteri siano configurati correttamente mysqli_real_escape_string() bloccherebbe quello.

Quindi supponiamo che non ci fosse mysli_real_escape_string() . Quindi è possibile sfruttarlo creando una password che, quando viene sottoposta a hash, genera un payload SQL. Dovresti generare molti hash MD5 per produrre un utile utile per caso, ma non è impossibile.

A proposito, hai esaminato la variabile $email ? Sembra che potrebbe essere sfruttabile.

Avviso obbligatorio I: Solo perché probabilmente questo non è sfruttabile nella pratica, non lasciatevi ingannare dal pensare che sia sicuro concatenare l'input dell'utente non affidabile nelle query SQL. Utilizza le istruzioni preparate.

Avviso obbligatorio II: non utilizzare MD5 per le password hash.

    
risposta data 05.07.2016 - 17:45
fonte
0

C'è qualche sanificazione nell'input dell'indirizzo e-mail? In caso contrario, è possibile inserire "[email protected]" - "nel campo della posta elettronica (modificare il tipo di attributo del campo di posta elettronica in testo nell'ispettore se necessario). Questo commenterà il controllo della password in modo tale che finché viene trovata una corrispondenza con l'e-mail essa restituirà true. SHA512 è migliore di MD5.

    
risposta data 05.07.2016 - 17:34
fonte

Leggi altre domande sui tag