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.