Red de conocimiento informático - Material del sitio web - Cómo determinar si su base de datos es vulnerable a la inyección SQL

Cómo determinar si su base de datos es vulnerable a la inyección SQL

La inyección SQL generalmente elimina la casilla de verificación delante de "Opciones-Avanzadas-Mostrar mensajes de error HTTP amigables".

A continuación se utiliza http://xxx.xxx.xxx/abc.asp?p=YY como ejemplo para el análisis. "YY" puede ser un número entero o una cadena.

1. Juicio de parámetros enteros

Cuando el parámetro de entrada YY es un número entero, normalmente la declaración SQL original en abc.asp es aproximadamente la siguiente:

seleccione * del nombre de la tabla donde campo = YY, para que pueda utilizar los siguientes pasos para probar la inyección SQL.

(1) http://xxx.xxx.xxx/abc.asp?p=YY, 1=2, abc.asp se ejecuta anormalmente

(2) http: //xxx.xxx.xxx/abc.asp?p=YY' (agregue comillas simples), en este momento abc.asp se ejecuta de manera anormal. La instrucción SQL en ASP se convierte en select * del nombre de la tabla donde campo=YY' y abc.asp se ejecuta de manera anormal;

(3) http://xxx.xxx.xxx/abc.asp?p= YY y 1 = 1, abc.asp se ejecuta normalmente y http://xxx.xxx.xxx/abc.asp?p=YY tiene el mismo resultado de ejecución;

Si se cumplen los tres aspectos, entonces ¡Debe haber una vulnerabilidad de inyección SQL en abc.asp!

2. Juicio del parámetro de cadena

Cuando el parámetro de entrada YY es una cadena, generalmente la declaración SQL original en abc.asp es aproximadamente la siguiente:

select * del nombre de la tabla donde campo = 'YY', por lo que puede utilizar los siguientes pasos para probar si existe inyección SQL.

(1) http://xxx.xxx.xxx/abc.asp?p=YYamp; nb... 39; 1'='2', abc.asp se ejecuta de forma anormal; >

(2) http://xxx.xxx.xxx/abc.asp?p=YYamp;nb...39;1'='1', abc.asp se ejecuta normalmente, igual que http:// xxx .xxx.xxx/abc.asp?p=YY tiene los mismos resultados de ejecución;

(3) http://xxx.xxx.xxx/abc.asp?p=YY' (agregue un solo comillas), en este momento la instrucción SQL en abc.ASP se convierte en select * from table name donde campo=YY', abc.asp se ejecuta de manera anormal

Si se cumplen los tres aspectos, entonces; abc ¡Debe haber una vulnerabilidad de inyección SQL en .asp!

3. Determinar filtrando caracteres

Los programadores ASP preocupados por la seguridad filtrarán caracteres como comillas simples para evitar la inyección de SQL. Esta situación se puede intentar de las siguientes maneras.

(1) Método ASCII: Ingrese la codificación ASCII de algunos o todos los caracteres, como U = CRH (85), a = CRH (97), etc.

(2) Método UNICODE: para lograr la internacionalización en el conjunto de caracteres UNICODE de IIS, podemos ingresar la cadena UNICODE al ingresar la cadena.

Como = 2 b, espacio = 20, etc.;

(1) Método de configuración mixta: no se distingue entre mayúsculas y minúsculas, porque según los programadores y programadores de filtros en ese momento, generalmente filtran todas las cadenas en mayúsculas, Cualquiera de los dos filtra todas las cadenas en minúsculas; las mayúsculas y minúsculas tienden a ignorarse. Por ejemplo, use SelectT en lugar de select, SELECT, etc.