¿Inicia la inyección de SQL en MD5 con mysqli_real_escape_string ()?

-1

¿Podemos explotar los métodos MD5() y mysqli_real_escape_string() en este caso para realizar la inyección SQL?

Aquí está el fragmento de código:

$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'";

El código completo está disponible aquí .

    
pregunta Innocent 05.07.2016 - 17:22
fuente

2 respuestas

2

No, no creo que el campo pwd no se pueda explotar en este ejemplo. Dado que el PHP se pasa a través de la función MD5() de PHP, la salida será la codificación hexadecimal del hash . Eso significa que la cadena solo contendrá dígitos y las letras a a f . No puedes salir de la cita usando esos caracteres.

Supongamos que en su lugar se ha utilizado MD5($_POST['pwd'], true) , por lo que se ha devuelto el hash binario sin formato. Entonces deberías colarte en un ' para escapar del contexto de la cadena. Suponiendo que los conjuntos de caracteres están configurados correctamente mysqli_real_escape_string() lo bloquearía.

Entonces asumamos que no hubo mysli_real_escape_string() . Entonces, posiblemente podría explotar esto creando una contraseña que, cuando el hash, produce una carga de SQL. Tendría que generar muchos hashes MD5 para producir una carga útil útil por casualidad, pero no es imposible.

Por cierto, ¿has buscado en la variable $email ? Parece que podría ser explotable.

Aviso obligatorio I: Solo porque esto probablemente no sea explotable en la práctica, no se deje engañar al pensar que es seguro concatenar información de usuarios no confiables en consultas SQL. Use declaraciones preparadas.

Aviso obligatorio II: no utilice MD5 para hash de contraseñas.

    
respondido por el Anders 05.07.2016 - 17:45
fuente
0

¿Hay algún saneamiento en la entrada de la dirección de correo electrónico? Si no, puede poner "[email protected] '-" en el campo de correo electrónico (cambie el tipo de atributo del campo de correo electrónico a texto en el inspector si es necesario). Esto anulará la verificación de la contraseña, siempre y cuando se encuentre una coincidencia con el correo electrónico, se volverá verdadera. SHA512 es mejor que MD5.

    
respondido por el Chess Byte 05.07.2016 - 17:34
fuente

Lea otras preguntas en las etiquetas