Ciao a tutti, in questo tutorial vorrei spiegare un attacco molto utilizzato e che colpisce principalmente i forum malorganizzati, ovvero la SQL injection.
Intanto, una breve (brevissima) spiegazione di cos'è un database SQL: è semplicemente un file che contiene (in maniera crittata o no) alcune informazioni, come il costro id e la vostra password di quando vi loggate, ad esempio, all'interno di un forum...
vi siete mai chiesti come funziona il procedimento che avviene dopo che inserite user e password e premete invio?
ve lo spiego, visto che sulla base di questo funzionamento si basa la SQL injection... praticamente viene effettuata una chiamata (denominata "query"), ovvero il codice PHP accede al database SQL e cerca se ci sono un user e un id uguali a quelli che avete inserito... se li trova allora il login è OK, altrimenti vi darà qualche errore...
allora, vediamo bene com'è questa query:
- Codice:
-
SELECT * FROM database
WHERE userid = 'darkjoker'
AND password = 'we, mica te la dico...'
avete visto che cerca di trovare un userid uguale a darkjoker e una password uguale a ******** (non sono ancora rincoglionito... non ve la dico ancora...)... ma se invece della password usassimo qualche tecnicuzza che ci farebbe accedere???
analizziamo tutto:
l'username è compreso tra apici (' e ') e la password pure...
vediamo ora come aggirare questa "protezione"...
se noi avessimo questa situazione...?
- Codice:
-
SELECT * FROM database
WHERE userid = 'darkjoker'
AND password = 'capperi' OR '1' = '1'
ci siamo aiutati dei doppi apici nei quali è inclusa la password e abbiamo inserito, come valore:
- Codice:
-
capperi' OR '1' = '1
vediamo che la password puo essere capperi (non è quella, per fortuna...) OR (che per chi non lo sapesse significa universalmente oppure) '1' = '1', quindi per essere accettata la password deve essere capperi oppure uno deve essere uguale a uno...
una delle due condizioni si realizza... indovinate quale...?
mettete la password come 1' OR '1' = '1 o come quella riportata sopra, o comunque una doppia condizione di cui almeno una deve essere vera... semplice, no?
avete visto che è molto semplice entrare al posto di un altro utente... e se quell'utente si chiamasse Admin...? avrete capito che l'admin poco accorto se lo ritroverebbe... proprio lì....
vi ricordo che queste tecniche non sono molto legali... se trovate un forum con questo bug avvisate subito l'Admin..non siate lamer...