¿Cuáles son las razones por las que este código de inyección SQL no funcionaría? [duplicar]

0

En la clase de Software Assurance me preguntaron por qué la siguiente consulta permite la inyección de SQL, lo que permitirá iniciar sesión en la versión de phpBB no segura pero no permitirá ninguna modificación de la base de datos.

Preparamos nuestras máquinas virtuales con PHP con citas mágicas deshabilitadas para permitir este tipo de abuso. De lo contrario, esto no funcionaría. También tenemos una versión muy antigua de phpBB de 2005.

SELECT user_id, username, user_password, user_active, user_level,
user_login_tries, user_last_login_try
FROM USERS_TABLE
WHERE username = ’$username’ AND user_password = ’md5($password)’;

Podemos iniciar sesión en el sitio phpBB usando este comando en el campo de nombre de usuario login.php: admin'# o admin';-- .

Pero cuando intento insertar una cuenta adicional en la base de datos siguiendo el código, no puedo agregar ni modificar ninguna información en la base de datos:

admin';INSERT INTO users_table(user_id,username,user_password)     
VALUES('100','user',.md5('pass'))#

Ahora, ¿por qué NO puedo agregar / actualizar / eliminar cuentas? Tengo una breve idea de por qué, pero no estoy 100% seguro. No estoy preguntando cómo hacerlo funcionar, sino por qué esto no funcionaría.

    
pregunta HelpNeeder 18.09.2013 - 03:15
fuente

1 respuesta

3

¿Es este MySQL específico? Como otros han señalado en los comentarios, la extensión estándar de MySQL en PHP no admite consultas apiladas. Las consultas apiladas le permiten usar punto y coma (';') para separar las sentencias de SQL en una sola consulta. Este tipo de funcionalidad solo se admite en mysqli y PDO extensiones de PHP.

De la Documentación PHP :

  

mysql_query () envía una consulta única ( no se admiten varias consultas ) a la base de datos activa actualmente en el servidor que está asociado con el identificador de enlace especificado.)

La documentación indica explícitamente que no se admiten varias consultas, por lo que afortunadamente (¿desafortunadamente?) solo se puede ejecutar una declaración a la vez.

También eche un vistazo a esta pregunta , ya que parece ser similar al tuyo.

    
respondido por el I'm A Person 18.09.2013 - 04:32
fuente

Lea otras preguntas en las etiquetas