Documentos de Académico
Documentos de Profesional
Documentos de Cultura
- Para esta práctica estaremos usando la plataforma dvwa dentro del apartado de SQL
Injection.
➔ Usuario: admin
➔ Contraseña: password
pág. 1
Teoría
La inyección SQL, o SQLi, es un tipo de ataque a una aplicación web que permite a un
atacante insertar sentencias SQL maliciosas en la aplicación web, obteniendo
potencialmente acceso a datos sensibles en la base de datos o destruyendo estos datos.
pág. 2
valores no nulos Char: se utiliza para insertar caracteres de control en cadenas de
caracteres.
Fácil… colocando caracteres no permitidos, por ejemplo, una comilla, un numero negativo, etc.
Colocare una ‘ y veremos cómo se comporta la web
SQL Injection
Columnas.
Ahora tendremos que averiguar el numero de columnas exactas que tiene la base de
datos. Para ello haremos usos de ORDER BY que nos permitirá ordenarlas. En este
ejercicio no hay 100 columnas por lo tanto el valor debe aumentar o disminuir
‘ORDER BY 100-- -
Etiquetas.
Ahora tendremos que “seleccionar esas columnas” a estas las llamaremos etiquetas para
ello usaremos UNION SELECT. En este caso no hay 10 columnas.
Una vez encontrado el número exacto el error desaparecerá y se hará una consulta que
devolverá las etiquetas.
pág. 3
Ahora debemos escribir SQL en lugar del numero de la etiqueta. Por ejemplo sacaremos
la versión de MYSQl
Con esta sentencia podremos extraer las bases de datos que existen. Usaremos
group_concat para que nos de todas y ahorrarnos varias consultas.
Extraer Tablas.
Con esta sentencia podremos extraer las tablas de la base de datos en uso, esto es
debido a la función database() y accediendo a la tabla tables de information_schema. Si
queremos ver las tablas de otra base de datos solo tendremos que cambiar database()
por el nombre de otra base de datos.
pág. 4
Extraer Columnas.
Con esta sentencia podremos extraer las columnas de la base de datos en uso a través
de information_schema.columns
Extraer Datos.
Ejercicios
1. ¿Cuántas columnas tiene la base de datos?
2. ¿Cómo se llama la base de datos utilizada?
3. ¿Qué usuario está ejecutando dicha base de datos?
4. ¿Qué bases de datos existen?
5. ¿Qué tablas tiene la base de datos en uso?
6. ¿Qué columnas tiene la base de datos en uso?
7. ¿Cuál es la contraseña y hash del administrador?
pág. 5