Nuestro propio laboratorio de SQL Injection

  • 4 Respuestas
  • 6146 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado user_en1gm4

  • *
  • Underc0der
  • Mensajes: 53
  • Actividad:
    0%
  • Reputación 2
  • 01 01
    • Ver Perfil
    • Email

Nuestro propio laboratorio de SQL Injection

  • en: Octubre 19, 2017, 03:56:48 am
Hola [email protected]! llevaba tiempo sin pasarme por aqui pero pues ya era hora de volver, esta vez les traigo un laboratorio que me arme para poder enseñar como se hace una injection sql manualmente, espero les guste.

Pueden montarlo en su propia maquina con un servidor local como xamp o wamp que ya tiene todo listo o a su propio servidor en internet, primero vamos a crear una base de datos MySql en nuestro servidor y crearemos una tabla llamada Clientes, el script quedaria algo asi:

CREATE TABLE `NOMBRE_BD`.`Clientes` ( `id` INT(2) NOT NULL AUTO_INCREMENT , `user` VARCHAR(30) NOT NULL , `password` VARCHAR(30) NOT NULL , `correo` VARCHAR(40) NOT NULL , `saldo` INT(3) NOT NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB;

y se veria algo asi:


llenan la tabla con algunos datos.

Aca les dejo los archivos necesarios para subir al servidor:
You are not allowed to view links. Register or Login

Despues de descargarlos abrimos los tres archivos .php que se descargaron el archivo index.php, registro.php,sqli.php y llenan los datos como USUARIO_BD, CONTRASEÑA_BD Y NOMBRE_BD, depende tengan configurada su base de datos, al terminar esto solo queda subir todos los archivos a una carpeta del servidor y listo!


Abrimos a nuestro navegador y nos dirimos a donde tengamos los archivos por ejemplo:

You are not allowed to view links. Register or Login

Nos saldra un login, primero nos registramos y luego iniciamos sesion son los anteriores datos, y listo estaremos adentro
, ahora si a jugar:



INYECCION:


PRIMERO SE MIRA SI ES VULNERABLE

You are not allowed to view links. Register or Login'


SE BUSCA EL NUMERO DE COLUMNAS DE LA TABLA

You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login


SE MIRAN QUE CAMPOS CORRESPONDEN A QUE COLUMNA

You are not allowed to view links. Register or Login


SE REVISA QUE VERSION DE BASE DE DATOS UTILIZA

You are not allowed to view links. Register or Login

SE PUEDE VER EL TIPO DE CODIFICACION UTILIZA

You are not allowed to view links. Register or Login

SE PUEDE OBTENER EL USUARIO CON EL QUE SE ESTA TRABJANDO LA BD

You are not allowed to view links. Register or Login

LISTA EL NUMERO DE TABLAS DE LA BD

You are not allowed to view links. Register or Login

"convertir el nombre de la tabla en hexadecimal" Clientes: 436c69656e746573

VAMOS A IMPRIMIR EL NOMBRE DE LAS COLUMNAS DE LA TABLA DE LA BASE DE DATOS

You are not allowed to view links. Register or Login

Y LISTO AHORA SI PODEMOS OBTENER LOS DATOS

You are not allowed to view links. Register or Login

TODO ESTO LO PODEMOS HACER GRACIAS A QUE NO VALIDAMOS EL ID QUE NOS LLEGA POR LE METODO GET, CON UNA FUNCION QUE NOS LIMPIE ESTA VARIBALE LO PODEMOS ARREGLAR, SOLO DEBEMOS HACER ESTO EN LA LINEA 31 DE EL ARCHIVO SQLI.PHP TENEMOS QUE:

   $id =  $_GET["id"];

y a lo ultimo hay una funcionar que se llama limpiarString(), lo que tenemos que hacer es hacer que el id que obtenemos por get se limpie asi:

   $id =  limpiarString($_GET["id"]);

y listo, esta es una forma muy basica para detenerlo, php ya tiene unas funciones como htmlentities o htmlspecialchars, ustedes deciden.

LISTO AMIGOS SU PROPIO LABORATORIO DE SQL INJECTION, ESPERO QUE LES SIRVA,UN SALUDO!

« Última modificación: Octubre 20, 2017, 11:42:20 pm por user_en1gm4 »

Desconectado und3rc0de

  • *
  • Underc0der
  • Mensajes: 5
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

Re:Nuestro propio laboratorio de SQL Injection

  • en: Octubre 20, 2017, 07:50:41 pm
Voy a probarlo se ve interesante muchas gracias

Desconectado elshotta

  • *
  • Underc0der
  • Mensajes: 114
  • Actividad:
    10%
  • Reputación 0
    • Ver Perfil

Re:Nuestro propio laboratorio de SQL Injection

  • en: Febrero 01, 2018, 10:44:55 pm
gracias, pero esta algo desactualizado debido a que las funciones mysql_connect, mysql_select_db, y mysql_fetch_array ya no se usan en las versiones php 7
a ver si alguien lo puede actualizar ( ya intente actualizarlo con POO pero no soy bueno programando :S)
saludos

Desconectado 1Byte

  • *
  • Underc0der
  • Mensajes: 25
  • Actividad:
    0%
  • Reputación 0
  • Siempre aprendiendo...
    • Ver Perfil

Re:Nuestro propio laboratorio de SQL Injection

  • en: Febrero 07, 2018, 11:23:35 am
You are not allowed to view links. Register or Login
gracias, pero esta algo desactualizado debido a que las funciones mysql_connect, mysql_select_db, y mysql_fetch_array ya no se usan en las versiones php 7
a ver si alguien lo puede actualizar ( ya intente actualizarlo con POO pero no soy bueno programando :S)
saludos

Te refieres usando PDO "SOLO" para conectarte a la db ? porque segun tengo entendido PDO con el bindparam debería ayudar a protegerte de estos casos ...

Desconectado elshotta

  • *
  • Underc0der
  • Mensajes: 114
  • Actividad:
    10%
  • Reputación 0
    • Ver Perfil

Re:Nuestro propio laboratorio de SQL Injection

  • en: Febrero 15, 2018, 07:23:36 pm
listo, ya le saque un tiempo a editar estos archivos (aunque como les dije se muy poco de php), pero ya estan funcionales
a continuación les comparto el codigo:
INDEX.php
Código: You are not allowed to view links. Register or Login
<?php


error_reporting
(E_ALL^E_NOTICE);
if(isset(
$_POST["enviar"])){

   
$usuario $_POST["usuario"];
   
$clave $_POST["clave"];

   
$con mysqli_connect("localhost","root","","sql"); /*<---- sql es el nombre de la base de datos, ustedes lo cambian según el nombre que le dieron a la base de datos  */
   
$select "SELECT * FROM Clientes WHERE user= '$usuario' AND password = '$clave'";
   
$query mysqli_query($con,$select);
   if (
$columna mysqli_fetch_array($query)){
  

   
header("location: sqli.php?id=".$columna[0]);
}
  
  else{

  
   echo 
'<script>alert("Usuario o contraseña incorrecta")</script>';

  }
  
}

?>
REGISTRO.PHP
Código: You are not allowed to view links. Register or Login
<?php

if(isset($_POST["enviar"])){

   
$usuario $_POST["usuario"];
   
$clave $_POST["clave"];
   
$correo $_POST["correo"];
   
$saldo $_POST["saldo"];


  
$con mysqli_connect("localhost","root","","sql");
   
  
$select "INSERT INTO Clientes VALUES ('','$usuario','$clave','$correo','$saldo')";
   
mysqli_query($con,$select);
   
  
    echo 
'<script>alert("Usuario registrado correctamente")</script>';
  





}
?>
SQLI.php
Código: You are not allowed to view links. Register or Login
<?php
  
if(isset($_GET["id"])){
   
$id =  $_GET["id"];
   
  
$con mysqli_connect("localhost","root","","sql");
   
$select "SELECT * FROM Clientes WHERE id=".$id;
   
$query mysqli_query($con,$select);
   
$columna mysqli_fetch_array($query);
   echo 
"<center><h2> <font color = 'blue'> [email protected] </font> </h2></center>";
   echo 
"<font color = '#ffffff'> Hola: </font><font color = 'green'> ".$columna[1]."</font> <br>";
   echo 
"<font color = '#ffffff'> Su saldo es de: </font> <font color = 'green'> ".$columna[4]."</font> <br>";
  }
  else{
   
header("location: sqli.html");
  }
  
  
mysqli_close($con);




  function 
limpiarString($texto)
{
      
$textoLimpio preg_replace('([^0-9])'''$texto);                
      return 
$textoLimpio;
}
 
?>

saludos, espero que les sirva :)

 

Cheat-Sheet: SQL INJECTION - Hoja Guía para que no se me olvide

Iniciado por Denisse

Respuestas: 0
Vistas: 615
Último mensaje Marzo 20, 2020, 02:52:00 am
por Denisse
[Video- español] Curso de SQL INJECTION (SQLI) - Básico a Avanzado

Iniciado por Franciscodc

Respuestas: 1
Vistas: 7706
Último mensaje Agosto 29, 2018, 02:50:31 am
por Lmntr1x
[VIDEOTUTORIAL] Técnicas Anti-hacker en; PHP - XSS - CSRF - SQL INJECTION - Etc.

Iniciado por akame_night_raid

Respuestas: 0
Vistas: 3309
Último mensaje Abril 20, 2016, 02:07:50 pm
por akame_night_raid
Flask + Jinaj2 Server-Side Template Injection

Iniciado por Dedalo

Respuestas: 2
Vistas: 4280
Último mensaje Julio 11, 2018, 01:29:28 am
por Dedalo
Google Dorks SQL Injection & XSS Payload

Iniciado por Drok3r

Respuestas: 0
Vistas: 4273
Último mensaje Febrero 15, 2018, 09:05:05 pm
por Drok3r