By-passare un login che si appoggia su un database SQL
Questa guida è a solo scopo informativo non mi assumo le responsabilità di ciò che ne farete.
Molte persone fino ad oggi si sono chieste come eseguire un login senza avere le credenziali per l'accesso(cioè né utente né password).Oggi vi spiegherò come fanno gli hacker a farlo.
Per iniziare vi dico che queste persone usano una tecnica dell'hacking, chiamata SQL injection, che mira a colpire le applicazioni web che si appoggiano su un database di tipo SQL. Questo exploit sfrutta l'inefficienza dei controlli sui dati ricevuti in input ed inserisce codice maligno all'interno di una query SQL. Le conseguenze prodotte sono imprevedibili per il programmatore: l'Sql Injection permette al malintezionato di autenticarsi con ampi privilegi in aree protette del sito (ovviamente, anche senza essere in possesso delle credenziali d'accesso) e di visualizzare e/o alterare dati sensibili.
Applicazione pratica
Per un esempio pratico ricorreremo ad uno script in PHP (fate riferimento alla documentazione ufficiale di PHP) che si appoggia ad un database MySQL. La tecnica che è alla base dell'Sql Injection è comunque identica anche per altri tipi di namedatabase o di linguaggio (come l'ASP). Lo script utilizzato come esempio si occupa di autenticare un utente ed è diviso in due file: il primo è form.html (un semplice form per il login in html), il secondo login.php (che controllerà i dati e stabilirà, se consentito, il login. É in PHP). L'utente visualizza form.html e compila i dati, che verranno automaticamente inviati a login.php, che li memorizza sottoforma di variabile globale $_POST.form.html
<form action='login.php' method='post'>Username: <input type='text' name='user'>Password: <input type='password' name='pwd'>
2 commenti :
Interessante... Ma funziona solo in alcuni casi... Tipo quando un sito non è ben protetto!
Sbagliato. Dal momento che in una query SQL immetti un OR dividi la condizione, perciò potrei mettere qualsiasi valore nel primo campo perché la condizione dopo l'OR è sempre verificata, bypassando la prima in ogni caso.
Le condizioni sono sempre verificate assieme quando c'è un AND, è logica.
http://www.digitanto.it/FotoArticoli/Appunti18/Ap18_0003.jpg
Posta un commento