¿Qué es una vulnerabilidad de inyección SQL?
¿Qué es una vulnerabilidad de inyección SQL?
Los ataques de inyección SQL son uno de los ataques basados en web más peligrosos y frecuentes en la actualidad. El llamado ataque de inyección ocurre cuando el atacante inserta un comando SQL en la cadena de consulta solicitada por la página del campo de entrada del formulario web. Si desea implementar un ataque de inyección SQL en un sitio web, primero debe averiguar dónde existe la vulnerabilidad de inyección SQL y también buscar el llamado punto de inyección. Los puntos de inyección SQL suelen existir en páginas de inicio de sesión, páginas de búsqueda o páginas de adición, donde los usuarios pueden buscar o modificar datos.
¿Qué es una vulnerabilidad de inyección SQL?
La forma más común de encontrar puntos de inyección SQL es buscar enlaces a páginas de su sitio web que tengan el formato: /xxx.asp. id=YYY, donde " YY " puede ser un número o una cadena, llamados datos enteros o datos de caracteres respectivamente. En este capítulo, nos centraremos en la inyección SQL de datos enteros.
Los dos métodos siguientes se pueden utilizar para detectar si los enlaces a páginas tienen vulnerabilidades de inyección SQL.
Método de "comillas"
Agregue comillas simples a la dirección del enlace de la página en la barra de direcciones del navegador, como se muestra a continuación: /xxx.asp?id=YYY', y luego acceder a la dirección del enlace, el navegador puede devolver un mensaje de error similar al siguiente: Error "80040e14" del motor de base de datos Microsoft JET, error de sintaxis de cadena en la expresión de consulta "ID=YY".
Como se muestra en la figura, devolver una página con un mensaje de error similar indica que el sitio web puede ser vulnerable a ataques de inyección SQL.
Método "1=1 y 1=2"
El método de las "comillas" es simple y claro, pero los programadores que conocen la inyección SQL filtrarán palabras individuales al escribir programas. comillas. Si prueba utilizando comillas simples, no se puede detectar el punto de inyección. En este punto puedes utilizar el método clásico "1=1 y 1=2" para la detección.
¿Qué pasa si la dirección del enlace de la página normal es /xxx.asp? id=YYY, ingrese las siguientes dos direcciones de enlace en el navegador para ver los resultados de sus valores de retorno.
/xxx.asp? id=YYY y 1=1.
/xxx.asp? id=YYY y 1=2.
Si existe? En el punto de inyección, el navegador mostrará el siguiente contenido:
Visualización normal, el contenido es básicamente el mismo que el contenido que se muestra en la página normal.
Solicita BOF o EOF (cuando el programa no hace ningún juicio), indica que no se encuentra el registro o muestra contenido vacío (cuando el programa agrega un error, restaura el siguiente) , como se muestra en la figura.
Si no existe ningún punto de inyección, es fácil de determinar.
Estos dos enlaces suelen ir acompañados de mensajes de error definidos por el programa o mensajes sobre errores en la conversión de tipos.
Además, los posibles puntos de inyección SQL suelen ocurrir en páginas de inicio de sesión, páginas de búsqueda o páginas de adición donde los usuarios pueden encontrar o modificar datos.