SQLi v1

¿Qué es?
La inyección SQL o SQLi es una vulnerabilidad de seguridad que permite a un atacante interferir con las consultas que una aplicación realiza sobre su base dB. Mediante la manipulación de entradas no sanitizadas, un atacante puede leer, modificar o eliminar datos sensibles.
La vulnerabilidad ocurre cuando una aplicación utiliza entradas proporcionadas por el usuario (como parámetros URLs, formularios o cabeceras) para construir consultas SQL de forma dinámica sin aplicar una validación adecuada o sin utilizar consultas parametrizadas.
En este lab nos encontramos con la tienda de siempre.

La parte vulnerable la encontraremos desde el login.php. Si introducimos una comilla simple en el campo de el usuario veremos lo siguiente.

Resolveremos el laboratorio con la siguiente query, de la siguiente manera.

De esta forma obtendermos la flag de este laboratorio.

Ya tendríamos resuelto el laboratorio.
Para mitigarlo podremos separar la lógica de la consulta que se hace a la dB, haciendo que la entrada de el usuario se trate como un valor literal y no como código. Comparto correción en el archivo en cuanto a la conexión con la base de datos.
Vulnerable
consulta = f»SELECT * FROM usuarios WHERE username = ‘{username}’ AND password = ‘{password}'»
Mitigado
consulta = «SELECT * FROM usuarios WHERE username = %s AND password = %s» cursor.execute(consulta, (username, password))
Salud ^^
