La pregunta específica es la inyección de SQL con Y 1 = 1 y no O 1 = 1 . Hay una diferencia grande en lo que el OP está preguntando. Si yo fuera su profesor y usted me proporcionara la respuesta de JonathanMueller, obtendría una mala nota, ya que no comprende la pregunta.
AND 1 = 1 se usa usualmente en inyecciones SQL ciegas . Esto es cuando tienes que determinar entre un estado verdadero o falso a partir del resultado de la aplicación para establecer cuál es el resultado real. No se muestran los datos en el resultado, lo único que se devuelve es un estado de cambio.
Si intenta explotar una inyección de Blind SQL con OR 1 = 1 , fallará porque el uso principal de OR 1 = 1 es crear una declaración siempre verdadera para obtener la mayor cantidad de datos de la base de datos o forzar una declaración verdadera en el caso de que se explote un script de inicio de sesión.
Un ejemplo de exploit de SQL ciego:
Usamos nuestro ejemplo: enlace
Vamos a probarlo:
enlace y 1 = 1 < --- esto siempre es cierto y el
la página se carga normalmente, está bien.
enlace y 1 = 2 < --- esto es falso, así que si alguno
Falta texto, imagen o algún contenido en la página devuelta, entonces ese sitio es
vulnerable a la inyección de sql ciego.
Otro ejemplo en el que intentas descubrir la versión de MySQL:
enlace y subcadena (@@ versión, 1,1) = 4
Esto debería devolver TRUE si la versión de MySQL es 4. Reemplaza 4 por 5,
y si la consulta devuelve VERDADERO, la versión es 5.
Ejemplos tomados de: enlace