Iniezione SQL su query (MySQL / PHP) [chiuso]

0

Per prima cosa, scusa se il mio problema è duplice! Questo è un esercizio che non posso risolvere.

È un'autenticazione, semplicemente. Ma il problema è che l'applicazione non controlla sia la password che il nickname. Un codice vale più di mille parole:

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();
   }
  }
}

Per quanto riguarda lo schema del database, tutto quello che so è che ha il campo LOGIN e PASSWORD e la password non è hash.

La mia idea iniziale è di tagliare SELECT e INSERT da aggiungere subito dopo il mio amministratore, perché non vedo come oltrepassare la query come al solito potrebbe essere admin'; #

Ho provato: admin'; INSERT INTO auth (login, password) VALUES ('admin2', 'test');# Ma .... non funziona! Mi potete aiutare ?

Grazie.

    
posta socket 11.01.2015 - 12:13
fonte

1 risposta

2

Puoi usare UNION SELECT per fornire qualsiasi valore come password:

noone' UNION SELECT 'pwd

La query diventerà

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

Assicurati di inviare la stessa password tramite POST

    
risposta data 11.01.2015 - 14:22
fonte

Leggi altre domande sui tag