Domanda chiarimenti SQL injection

Stato
Discussione chiusa ad ulteriori risposte.
U

Utente cancellato 271357

qualcuno mi sa dare dei chiarimenti sulla SQL injection? su come funziona e come posso fare un attacco di questo tipo

grazie per l'attenzione
 
L'sql injection e' una vulnerabilita' che sta nelle istruzzioni,
prendiamo che tu strutturi una richiesta al database,
PHP:
Select password from Utenti where email = '[email protected]';
per esempio per confrontare la password prossimamente con quella inserita da te, come tentativo di accesso.
In questo momento la query fa richiesta di ritornare la password come risultato se quell'email esiste, la ritorna come variabile e ti permette di fare il check con quella inserita da te.

Ora, siccome dev'essere dinamica la cosa e il developer non conosce la tua email per scriverla direttamente nel codice te la deve chiedere in un'input
il codice che processa l'input e' il seguente rispetto a quello sopra:

Codice:
<?php
$email= $_POST['email'];
$pass = $_POST['password'];
$ar = mysql_query("select password from Utenti where email='$email'"";
if $pass == $ar->fetch_assoc(){
dologin();
}else{
echo "password errata";
}
?>


come vedi prende l'email come variabile che gli dai tu e non fa nessuna sanitizzazione,
se io scrivessi un'email tipo: gianlucavacc'[email protected] praticamente romperei la query quindi mi ritornerebbe un'errore, la query che si va ad eseguire corrisponderebbe a questa:
select password from Utenti where email='gianlucavacc'[email protected]'

ma leggerebbe in questo modo:
select password from Utenti where email='gianlucavacc'
e poi si romperebbe perche' "[email protected]" non e' un'istruzione continuativa, mentre se scrivi
gianlucavacc' or ' [email protected]
apparirebbe:
select password from Utenti where email=gianlucavacc' or ' [email protected]

che sarebbe un'istruzione valida,
quindi cosa deduciamo? che possiamo 'injectare' ovvero scrivere quello che puo' scrivere il developer ovvero avere accesso al database scrivendo il comando che vogliamo.

ovviamente da come e' scritta la query bisogna adattare il codice alle situazioni, ti consiglio di studiarti le istruzioni e di studiarti come funziona sqlmap e TUTTE le sue funzioni in modo che capisci bene, e' praticamente un libro che puoi usare subito e testare senza problemi con un comando, good luck
 
  • Mi piace
Reazioni: 0xbro
L'attacco SQL permette, tramite una vulnerabilità nel database ...
La vulnerabilità non è nel database ma è nella web application che non sanifica correttamente i caratteri speciali e non utilizza gli statement per eseguire le query. Inoltre come scritto anche sotto al tuo articolo, il mondo dietro le SQLi è molto più ampio e non è necessariamente legato ai form di login per eseguire authentication bypass. Non facciamo disinformazione, grazie
 
  • Love
Reazioni: MyBB Engine
il mondo sqli e' vastissimo, dai filtri, al linguaggio web application, all'utilizzo dei valori usati il tipo di database, i permessi dell'utente che esegue la query, WAF, output, logs, comunque la cosa piu' semplice e' guardarsi sqlmap e leggersi / studiare le funzioni e i bug report su github perche' il creatore e' molto studiato in materia e risponde ai problemi spiegando le cose quindi secondo me molto meglio di un libro
 
  • Mi piace
Reazioni: 0xbro
Una delle migliori risorse per capire cosa è una SQL Injection, capire come exploitarla e quali dati recuperare, su db MySQL, Oracle e tanto altro, la trovate qui


C'è sia la teoria che la pratica, con laboratori appositi. Consiglio a chi vuole qualche approfondimento di farci un salto
 
  • Mi piace
Reazioni: MyBB Engine
Una delle migliori risorse per capire cosa è una SQL Injection, capire come exploitarla e quali dati recuperare, su db MySQL, Oracle e tanto altro, la trovate qui


C'è sia la teoria che la pratica, con laboratori appositi. Consiglio a chi vuole qualche approfondimento di farci un salto
burpsuite e' diventato uno dei miei tool preferiti, sono in panico con l'http request smuggling attualmente
 
Stato
Discussione chiusa ad ulteriori risposte.