2010-10-20 16 views
7

Mirando a través de algunos registros de Apache, me he encontrado con el siguiente patrón varias veces (URL decodificada):¿Cuál es el significado SQL de 0x5E5B7D7E?

GET /foo.php?id=1 and union select 0x5E5B7D7E,0x5E5B7D7E,0x5E5B7D7E,... -- 

Es evidente que esto es un intento de inyección SQL. Pero, ¿por qué la constante que se muestra arriba? No veo cómo podría ser particularmente significativo, aunque parece aparecer con bastante frecuencia.

Por lo que vale, la constante anterior se asigna a los siguientes caracteres ASCII: "^[}~" o "~}[^" si invierte el orden de bytes. El valor en decimal es 1,583,054,206, en octal es 013626676576. El código no parece asignarse a una secuencia útil de instrucciones x86.

Una búsqueda en Google del número revela simplemente los restos de intentos de utilizar el mismo ataque de inyección SQL en otros sitios: no hay información sobre el ataque en sí.

¿Alguien tiene alguna idea?

+0

mi suposición es que dado que las palabras clave sql parecen ser parte de una declaración más grande porque la secuencia comienza con un "y", los números después de las palabras clave no son necesariamente parte de la declaración sql que intentan inyectar . tal vez están tratando de inyectar SQL y no SQL al mismo tiempo? – akonsu

+0

Sí, me di cuenta de que "y la unión" es una construcción un tanto extraña, pero mi verdadera tranquilidad es: ¿por qué ESE número? Parece ser un elemento común en los ataques de inyección SQL. – tylerl

+0

Puede estar intentando explotar un software específico. ¿Qué tipo de software está ejecutando su sitio? – mellowsoon

Respuesta

8

Este valor es un identificador único. Si el valor "^[}~" aparece en la página, entonces el robot sabe que usted es vulnerable a la inyección sql, donde aparece como si el valor "0x5E5B7D7" no fuera interpretado por su servidor sql. Esta prueba de inyección sql probablemente comience con solo un 0x5E5B7D7E y luego continúa con un número predefinido de ellos. Esto se debe a que con una unión, seleccione la unión debe devolver el mismo número de columnas que la selección a la que se está añadiendo, y el bot debe forzar en bruto este valor.

Tenga en cuenta que esta prueba no funcionará con inyección ciega sql porque el valor "^[}~" no estará visible. Un blind sql injection test para mysql estaría inyectando una llamada a sleep(30) o BENCHMARK(5000000,md5(1337)). Esto ocasionará que la página tarde unos segundos en cargarse, lo que significa que se está ejecutando este código sql.

Cuestiones relacionadas