sql injection - test - ¿Inyección SQL? CHAR(45,120,49,45,81,45)
sql injection test (2)
Esto es sólo una prueba de inyección. Si un atacante puede ver xQs en la salida, sabrán que la inyección es posible.
No hay "riesgo" de esta consulta en particular.
Un desarrollador no debe prestar atención a los mecanismos, formatos o significados de inyección, ya que no son de su incumbencia.
Solo hay una causa para todo el número infinito de inyecciones: una consulta con formato incorrecto. Siempre que sus consultas tengan el formato correcto, no serán posibles las inyecciones de SQL. Concéntrese en sus consultas en lugar de métodos de inyección SQL.
Acabo de ver esto en nuestros registros de solicitudes. ¿Qué estaban tratando de lograr?
La cadena de solicitud completa es:
properties?page=2side1111111111111 UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45),CHAR(45,120,57,45,81,45),CHAR(45,120,49,48,45,81,45),CHAR(45,120,49,49,45,81,45),CHAR(45,120,49,50,45,81,45),CHAR(45,120,49,51,45,81,45),CHAR(45,120,49,52,45,81,45),CHAR(45,120,49,53,45,81,45),CHAR(45,120,49,54,45,81,45) -- /*
Editar: Como una búsqueda en Google no devolvió nada útil, quería hacer la pregunta a las personas que encuentran lo mismo.
La función Char()
interpreta cada valor como un entero y devuelve una cadena basada en los caracteres dados por los valores de código de esos enteros. Con Char()
, se omiten los valores NULL. La función se usa en Microsoft SQL Server, Sybase y MySQL, mientras que CHR()
es usado por RDBMSs.
La función Char()
SQL es útil cuando (por ejemplo) addslashes()
para PHP se utiliza como medida de precaución dentro de la consulta SQL. El uso de Char()
elimina la necesidad de comillas dentro de la consulta inyectada.
Un ejemplo de algún código PHP vulnerable a una inyección de SQL usando Char()
se vería similar a lo siguiente:
$uname = addslashes( $_GET[''id''] );
$query = ''SELECT username FROM users WHERE id = '' . $id;
Si addslashes()
se ha utilizado addslashes()
, la secuencia de comandos falla correctamente y desinfecta la entrada ya que no hay comillas al final. Esto podría explotarse utilizando la siguiente cadena de inyección SQL para cargar el /etc/passwd
:
Fuente: http://hakipedia.com/index.php/SQL_Injection#Char.28.29