Inyección de SQL - MSSQL

2

Estoy aprendiendo sobre la inyección de SQL y tengo el siguiente código de backend,

Set rs = server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM Registration WHERE name='"&name&"'"
rs.Open SQL,Conn,0,1
if not rs.EOF then
    message = "Your ID is """ & rs("iD") & """."
else
    message = "id does not exist."
end if

He podido inyectar esto para sacar un iD, pero me pregunto si sería posible ir más lejos y obtener más información. Según mi código, no creo que sea posible ya que mi código solo devuelve el campo de base de datos de iD.

¿Tengo razón?

    
pregunta d123 02.04.2013 - 21:28
fuente

3 respuestas

3

Para aprovechar esta vulnerabilidad, uno no necesita una salida directa. También hay una técnica llamada ciega basada en booleanos donde el comportamiento de diferentes expresiones booleanas se usa para extrapolar los datos de:

foo' AND pass LIKE 'a%

Si se devuelve el mensaje de éxito, pass comienza con a , de lo contrario no lo hace. Si repites eso con todos los caracteres posibles recursivamente en cada prefijo exitoso, obtendrás la cadena completa.

Puede hacer lo mismo para obtener información sobre el esquema de la base de datos:

foo' AND EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'abc%') AND '1'='1

Con el conocimiento del esquema de la base de datos, se puede leer cualquier información.

Como ya mencionó Rook, SQLmap es una herramienta bastante útil para automatizar la explotación de dichas vulnerabilidades de inyección SQL.

    
respondido por el Gumbo 03.04.2013 - 07:28
fuente
2

Podrías crear un alias de un registro para dar un retorno a cualquier columna usando un As en la selección. También existe el problema de que podría enviar cualquier alteración arbitraria a la base de datos y suponer que el "nombre" proviene de una entrada de usuario no validada.

    
respondido por el AJ Henderson 02.04.2013 - 21:37
fuente
2

SQLMap es una gran herramienta que automatiza la explotación de fallas como esta. SQLMap puede volcar una base de datos completa, incluso si es una inyección ciega de SQL. También puede abrir un shell dependiendo de la configuración de la base de datos.

    
respondido por el rook 02.04.2013 - 23:38
fuente

Lea otras preguntas en las etiquetas