: - )
L'SQL Injection è una tecnica di exploiting della applicazione web, che sfrutta
i dati inviati da un client ad un Database SQL ( DS ), senza controlli sui
caratteri potenzialmente dannosi.
Infatti una moltitudine di applicazioni web, utilizzano delle particolari variabili,
che possono essere impostate da un utente per comunicare con il server; purtroppo
un utente malintenzionato, può impostare tali variabili in modo da eseguire codice
arbitrario sulla macchina remota o per accedere ad un'area protetta da password,
per esempio.
Molte applicazioni web, sfruttano il parametro SELECT; tale comando è utilizzato per
prendere i dati da una query, per poi compararli con quelli contenuti nella lista di
un database.
Ad esempio, il codice seguente, appartiene ad uno script di login, che prende lo
username e la password da una query e li confronta con quelli contenuti in una lista
( lo script preso in considerazione è fornito da freephp.html.it ) :
$login = $_GET["nlogin"];
$password = $_GET["ppass"];
$string = mysql_query("SELECT * FROM ulist WHERE login='".$login."' AND
password='".$password."'");
if (mysql_num_rows($string) == 0)
$in = 0;
else
$in = 1;
Questo è un classico esempio di script, vulnerabile a caratteri potenzialmente
pericolosi, dato che sono assenti controlli su di esse; quindi, per superare il
controllo dello script, possiamo inserire nei campi dello username ( $login ) e
della password ( $password ), il codice " OR "=" :
$string = mysql_query("SELECT * FROM ulist WHERE login=" OR "=" AND
password=" OR "="");
Come è possibile vedere, queste due condizioni sono sempre vere, quindi lo script
restituirà necessariamente un valore uguale ad 1 ( $in = 1 ).