
Oggi parliamo di una tecnica usata dagli Hacker e purtroppo anche da “pirati” la SQL INJECTION, altro non è che un’iniezione di codice in un database MySQL, tramite un attacco di questo tipo, ovvero con stringhe ben congeniate è facilissimo avere l’accesso non autorizzato con pieni poteri Admin su un’applicazione web.

Prendiamo ad esempio una qualsiasi pagina di login, se nel campo “userid” si immette il valore Admin e nel campo “password“ il valore passprova, la nostra query SQL sarà:
SELECT * tabella_utenti
WHERE userid = 'Admin'
AND password = 'passprova'
Questo codice è esatto ma non offre la sicurezza necessaria, proviamo a inserire una stringa ben strutturata, stiamo attenti alla posizione degl’apici, ad esempio nel campo “password” andiamo ad inserire:
1' or '1' = '1
la query risultante è la seguente:
SELECT * FROM tabella_utenti
WHERE userid = 'Admin'
AND password = '1' OR '1' = '1'
E’ facile notare cosa è successo, la query SQL grazie all’operatore OR imporrà ‘1′ = ‘1′, dato che l’uguaglianza si è verificata ecco che abbiamo l’accesso al pannello amministrativo dell’applicazione web senza conoscere userid e password.














Ho fatto un piccolo esame all’uni su questi argomenti. Sono davvero interessanti.
Un’alternativa potrebbe essere:
userid = Admin’; –
e lasciamo vuoto il campo password. I due — trasformano in commento la riga della password. Come sempre, se il sistema è ben progettato (usando l’escaping dei caratteri) queste tecniche non funzionano!
Ciao
Esatto Paso, ciò non toglie che se la pagina di login non è buggata, posso andare a pescare i dati in un altra pagina, infatti il prossimo articolo sarà sulla BLIND SQL INJECTION
Oppure altra possibile SQL: 1′ or ‘TRUE-
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘Admin” AND password=”1′ OR ‘1′ = ‘1” AND authorized=’0” at line 1You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘Admin” AND password=”1′ OR ‘1′ = ‘1” AND authorized=’1” at line 1
questo è l’errore che mi da se provo ad attacare il server …
ehm… nicola guarda bene gli apici…
ciao io nn ho capito bene come si fa ad acedere come admin in una pagina web facendo come dici tu
Ecco io invece non ho capito un’acca di tutto -.-
cose da scienziato per me
@stefano e no1globe: è semplice questa stringa scritta senza apici finali 1′ or ‘1′ = ‘1 quando il database la controlla diventa ‘1′ or ‘1′ = ‘1′.
Questo che vuol dire?
Che la password dovrebbe essere ‘1′ or(oppure) ‘1′ = ‘1′ dato che ‘1′ uguale a ‘1′ è sempre vero ci fa accedere anche se non abbiamo inserito la pass giusta…
ciao scusa l’ignoranza ma potrei avere un esempio dettagliato di come fare?
@stefano: -.- O.o ho inserito un immagine di un form login spero che non sia la prima volta che lo vedi se no non ci capiamo proprio.
Esempio dettagliato… l’ho scritto: inserire nei campi del form login la stringa. eheh
mi dispiace l’ignoranza ma nn capisco a me da sempre che nn sono iscritto
@stefano: vuol dire che quella pagina di codice è scritta bene
!
di myspace invece che mi dite a proposito di SQL INJECTION???
c’è ancora qualcuno? avrei bisogno di una spiegazione sui primi messaggi …grazie…
l’unica cosa che non capisco è… da un sito qualsiasi.. dove lo trovo il login per l’amministrazione? basta mettere “login.php” alla fine dell’indirizzo? o basta entrare da un qualsiasi login?
@Rick: non è detto che sia sempre visibile, se conosci un cms pubblico di solito uno conosce già la path a cui arrivare altrimenti devi scannare il sito, in tutta la sua struttura e rivarne la pagina di login dell’admin.
p.s sto studiando propio ora di database mysql..per ora sono lontano dalla sicurezza xo è sempre utile leggerne qualcosa;
http://lineguides.netsons.org/wordpress/?cat=52
io nn ho ancora capito quando in sistema nn è protetto
Io pure conosco questa tecnica, grandissimo il nostro professore di sicurezza dati.
ma un cosa mi sfugge, provando, ancora c’è qualche sitarello che si fa fregare dall’injection, ma non è che poi il server tiene traccia degli ip dai queli viene effetuato l’attacco e che poi ti beccano?
Solo vaneggiamente, però boh…
@Manu: è possibile quello che dici tu!
Attento
Conoscete un libro che tratta questi argomenti??
io non capisco dove si devono inserire…XD nel form di autenticazione no? pero possono funzionare anche aggiungendolo all’URL…..
Volendo c’è un libro degli hacker dove ti spiega alcune cosette
l’indirizzo è: http://www.mediafire.com/?zpwdzxyyeix
Ho provato con le tre tecniche, ma l’unico risultato è stato che il sito mi ha detto che ho sbagliato pass
ciao a tutti, io tasto il sito mettendo degli apici all’interno delle text, molte volte il db access mi da un messaggio di errore, allora capisco che il db è debole.
ma la cosa che non mi convince è
se 1′or’1′=’1 come risultato da sempre true, perchè non si riesce ad entrare in tutti i pannelli di amministrazione?
ciao da gianni
p.s. che poi quest’idea di entrare nel P.A. è un pò vecchiotta, in realtà sarebbe bello arrivare al sito vero e proprio, nell’ftp
ciao…volevo sapere se oltre l’SQL injection sapevate altri modi per entrare con password e username di altri.(il sito e’ abbastanza protetto)…grazie
@gianni: dunque, questo mio post è solo un infarinatura per capire come agisce una sql… in rete puoi trovare tantissimi manuali per approfondire l’argomento. L’SQL in tutte le sue forme è una grossa vulnerabilità tutt’altro che obsoleta.
ciao a tutti raga, io vorrei provare a entrare su questo server http://wt.yt2sf.com/ per poter comprare cose gratis (il sito è di un server shard cinese di un gioco online [Metin2]) se qualcuno è in grado di aiutarmi o se sapete dirmi come poterlo utilizzare fatemi sapere mi sareste davvero d’aiuto^^