UNIDAD 2: TAREA 2 – INYECCION SQL
La inyección SQL hace referencia a usar las técnicas de SQL para obtener información sobre la estructura de una base de datos.
Para esto, se va a utilizar una máquina virtual del cual servirá para poder efectuar las sentencias SQL y así poder realizar la práctica.
Se descargó la máquina virtual y se configuro la manera de acceder a ella mediante una IP.
La configuración que se hace en la máquina virtual es únicamente la opción de red de la misma, se ubicó la opción de Adaptador 1 à Conectado a: Adaptador Puente ==> Se selecciona el de Wifi (en mi caso).
Luego de ello, se inicia la máquina virtual, en donde al momento de ya culmine la inicialización, mostrara en la ventana lo siguiente:
Dicha dirección ip que se muestra, se la utiliza en un navegador quedando de la siguiente manera (http://direccionIP/login.php):
Para acceder se debe logear, para ello, el usuario es admin y la contraseña password.
Se abre la siguiente ventana, en donde nos da la bienvenida, para la práctica, se ubicara la seguridad en LOW en el apartado de DVWA Security.
Después de aquello, nos ubicaremos en el apartado de SQL Injection, mostrándonos una ventana como esta:
Se empieza con los comandos necesarios, como ejemplo:
o Ingresamos “1” en el textbox y se clic en el botón, en donde mostrara como resultado el registro cuyo campo id tenga dicho valor.
o El PHP coge dicho valor y ejecuta lo siguiente: $getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'";
o Se ingresa en la caja de texto lo siguiente: %' or '0'='0 y se da clic en el botón.
o En este escenario, estamos diciendo que la sentencia, todos los registros son falsos y que todos los registros son ciertas.
- %' ==> Probablemente no será igual a cualquier cosa, y será falsa. - '0'='0' à Es igual a verdad, porque siempre será igual a 0 0.
Inyección SQL para conocer la versión de la base de datos.
o Se escribe la siguiente sentencia SQL para poder obtener la información de la versión: %' or 0=0 union select null, version()#.
o A continuación se muestra en donde se indica la versión de la base de datos.
Mostrar el usuario de la base de datos.
o Para poder mostrar el usuario de la base de datos, se escribe la siguiente sentencia: %' or 0=0 union select null, user() #
o A continuación, se muestra el usuario:
Mostrar el nombre de la base de datos.
o Ingresar la siguiente sentencia para poder obtener dicha información: %' or 0=0 union select null, database() #
o A continuación se muestra el nombre de la base de datos al momento de ejecutar la sentencia.
Mostrar todas las tablas de Information_schema.
o Se escribe la siguiente sentencia para mostrar todas las tablas de la base de datos: %' and 1=0 union select null, table_name from information_schema.tables #.
o A continuación se muestra el resultado de haber ejecutado la sentencia.
Mostrar todos los usuarios de las tablas de la Information_schema.
o Mediante la siguiente sentencia se muestran los usuarios de las tablas: %' and 1=0 union select null, table_name from information_schema.tables where table_name like 'user%'#.
o A continuación se muestra el resultado de haber ejecutado dicha sentencia.
Mostrar todos los campos de la tabla usuario.
o Mediante la siguiente sentencia, se obtiene información sobre los campos de la tabla usuario de la base de datos: %' and 1=0 union select null, concat(table_name,0x0a,column_name) from information_schema.columns where table_name = 'users' #.
o A continuación se muestra el resultado de ejecutar dicha sentencia.
Mostrar el contenido de todas las columnas de la tabla usuario.
o Mediante el siguiente comando, se mostrara el contenido de las columnas, es decir los registros de la tabla usuario: %' and 1=0 union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from users #
o A continuación se presenta el resultado de ejecutar dicha sentencia.
Y así es como se puede conocer la estructura de una base de datos, mediante inyección SQL con las sentencias indicadas y así es como se da por terminada la práctica.