¿Cómo utilizar/explotar la inyección SQL? Todo el cubo familiar está aquí ~

La inyección SQL es una de las vulnerabilidades de clasificación más alta en las 10 clasificaciones de vulnerabilidades principales publicadas por OWASP . Un atacante puede aprovechar las vulnerabilidades de inyección SQL para realizar operaciones no autorizadas y agregar datos maliciosos a la base de datos de la víctima.

Los atacantes pueden eludir la autenticación, acceder a datos confidenciales e incluso alterar los datos del sitio web a través de vulnerabilidades de inyección SQL . Por ejemplo, un pirata informático utilizó un ataque de inyección SQL para alterar los registros de pedidos de un sitio web de comercio electrónico, lo que provocó que los clientes recibieran productos que no deberían haber recibido.

1. ¿Qué es la inyección SQL?

La inyección SQL es un ataque que explota vulnerabilidades en aplicaciones web que no filtran o verifican adecuadamente la entrada del usuario para enviar declaraciones SQL maliciosas a la base de datos backend de la aplicación, evitando así la autenticación, accediendo a datos confidenciales, manipulando datos y otros fines maliciosos.
Los ataques de inyección SQL se pueden implementar a través de varios medios, que incluyen, entre otros, el envío de declaraciones SQL maliciosas a la aplicación mediante el envío de formularios, parámetros de URL, cookies, encabezados HTTP, etc. de la aplicación web.

Demostremos:
Hay un formulario de inicio de sesión que contiene dos campos: nombre de usuario y contraseña . Se utiliza para verificar si la contraseña del usuario es correcta.

SELECT * FROM users WHERE admin = 'admin' AND userpwd = 'pwd123'

Si este sql se transmite al backend y se agrega una declaración sql como 'OR 1=1 - , ¡entonces la composición general será así!

SELECT * FROM users WHERE admin= '' OR 1=1 -- ' AND userpwd= 'pwd123'

Entre ellos, – representa el símbolo de comentario SQL, que puede comentar la parte restante de la declaración. Por lo tanto, en este ejemplo, la declaración de consulta en realidad solo consulta registros de usuario con nombres de usuario vacíos o 1=1, e ignora la parte de verificación de contraseña, para que el atacante pueda omitir con éxito la autenticación e iniciar sesión en el sistema como administrador.

Nota : Este es un ejemplo simple de inyección SQL. Solo se usa para ilustrar los principios y daños de la inyección SQL. No lo use para ataques reales.

2. Tipos de inyección SQL

(1) Inyección SQL basada en caracteres : el atacante inyecta caracteres maliciosos en el cuadro de entrada, lo que hace que la aplicación genere declaraciones SQL maliciosas para obtener información confidencial.

SELECT * FROM users WHERE username = 'admin' OR '1'='1';

(2) Inyección de SQL numérico : el atacante inyecta números maliciosos en el cuadro de entrada, lo que hace que la aplicación genere declaraciones SQL maliciosas para obtener información confidencial.

SELECT * FROM products WHERE product_id = 1 OR 1=1;

(3) Inyección de SQL incorrecta : los atacantes provocan errores en las aplicaciones al enviar declaraciones SQL maliciosas construidas intencionalmente para obtener información confidencial.

SELECT * FROM users WHERE username = 'admin' AND 1=1';

(4) Inyección SQL de consulta de unión : el atacante utiliza el operador UNION en la declaración SQL maliciosa para conectar una consulta con otra consulta para obtener datos.

SELECT * FROM users WHERE username = 'admin' UNION SELECT cc_number, cc_expiry_date FROM credit_cards;

(5) Inyección SQL booleana ciega : el atacante obtiene información confidencial construyendo una declaración SQL maliciosa para que solo devuelva un valor booleano (Verdadero o Falso).

SELECT * FROM users WHERE username = 'admin' AND substring((SELECT @@version), 1, 1) = '5';

(6) Inyección SQL ciega en el tiempo : el atacante obtiene información confidencial construyendo declaraciones SQL maliciosas para que se retrasen durante la ejecución.

SELECT * FROM users WHERE username = 'admin' AND if(SLEEP(5), 1, 0);

(7) Inyección de SQL apilado : el atacante ejecuta múltiples consultas en la base de datos utilizando múltiples declaraciones de consulta en declaraciones SQL maliciosas para obtener información confidencial.

SELECT * FROM users WHERE username = 'admin'; INSERT INTO users (username, password) VALUES ('hacker', 'password');

(8) Inyección SQL de informe de errores : los atacantes obtienen información confidencial mediante la construcción de declaraciones SQL maliciosas para provocar errores durante la ejecución.

SELECT * FROM users WHERE username = 'admin' AND extractvalue(1, concat(0x5c, (SELECT @@version)));

Tenga en cuenta que estos ejemplos solo se utilizan para demostrar diferentes tipos de inyección SQL y las aplicaciones reales deben modificarse y personalizarse según circunstancias específicas. Al mismo tiempo, estos códigos son sólo para demostración y no deben usarse para ataques o pruebas ilegales.

3. Métodos de omisión comunes para la inyección SQL

Los atacantes de inyección SQL probarán varios métodos para eludir la protección de seguridad de las aplicaciones. A continuación se muestran algunos métodos comunes de elusión de la inyección SQL :

1. Utilice espacios y caracteres de comentarios para omitir, como agregar espacios entre palabras clave y parámetros, usar símbolos de comentarios, etc.; 2.
Utilice codificación de caracteres para omitir, como usar codificación Unicode, codificación HTML, etc.;
3. Utilice caracteres especiales caracteres para omitir, como el uso de combinaciones de caracteres especiales, codificación de URL, etc.;
4. Uso de omisión de inyección ciega, como inyección ciega basada en lógica booleana, retardo de tiempo, etc.;
5. Uso de omisión de inyección SQL avanzada, como el uso inyección de declaraciones múltiples, inyección secundaria, inyección de pila y otras tecnologías

Tenga en cuenta que el siguiente contenido implica derechos de autor y derechos de propiedad intelectual. Indique la fuente y la información del autor al citar el contenido del artículo para cumplir con las regulaciones legales pertinentes.

Este artículo está destinado únicamente a fines de aprendizaje y comunicación y no puede utilizarse con fines comerciales. Los puntos de vista, opiniones y sugerencias del artículo son únicamente del autor y no representan la posición de este sitio. El autor y este sitio no son responsables de las consecuencias que surjan del uso de las tecnologías, métodos, procesos y herramientas mencionados en este artículo. Antes de utilizar estas tecnologías, métodos, procesos y herramientas, comprenda sus responsabilidades y riesgos legales y tome las medidas de seguridad adecuadas.

Supongo que te gusta

Origin blog.csdn.net/qq309000281/article/details/130295602
Recomendado
Clasificación