- 6 Giugno 2012
- 26
- 0
- Miglior risposta
- 0
Salve a tutti,
oggi vorrei parlarvi,anche se non so se sia stato già fatto,della tecnica delle Sql injection e delle blind Sql injection.
Allora incominciamo..
1) INTRODUZIONE:
Ogni sito in php visualizza ed elabora dati appoggiandosi su un database, MySQL . Per visualizzare questi dati basta una richiesta GET o POST:
GET :
POST:
La differenza fra GET e POST è che una richiesta di tipo GET viene eseguita sull'URL che segue l'attributo HREF di un marcatore <A> all'interno di una pagina HTML;una richiesta di tipo FORM invece viene eseguita dal Client in risposta ad una form.
2) SQL injection
Siccome questi dati vengono inviati dal browser possiamo manipolarli come vogliamo.Questa tecnica si chiama SQL injection ( iniezione di sql).
Cosa fa questo?
In poche parole modifica la query
in
Questo non seleziona la news numero 13 ma seleziona il primo oggetto della tabella dato che la condizione "or 1 = 1" è sempre vera.
Una pagina di login messa in questo modo
si potrà manipolare in questo modo:
Questo garantisce l'accesso senza credenziali perchè modifica la query in questo modo:
in
3) Blind SQL injection
La tecnica vista in precedenza è limitata.Una tecnica più efficiente è la Blind SQL injection,anche se è più difficile.Già dal nome possiamo capire la difficoltà della tecnica e anche la lunghezza dell'attacco perchè in questo tipo di attacco si procede alla cieca ("blind").
Prendiamo l'esempio di prima: troviamo una vulnerabilità nella pagina news.php ( ovviamente bisogna prima cercare la vulnerabilità dove si trova). Dato che ogni giorno la sicurezza dei siti aumenta sempre più ( o almeno così dovrebbe essere ) risulta difficile trovare ancora una vulnerabilità in una pagina di login ( io l'ho trovata in solo 8 siti web ).Perciò possiamo iniettare del codice nella gestione della pagina vulnerabile,in questo caso quella delle news,per arrivare a quella del login..vediamo come..
Per questo tipo di attacco riceviamo anche un "aiutino" dal database MySQL stesso,proprio per la sua struttura con il suo UNION ALL SELECT,che permette di concatenare delle select su tabelle differenti:
Questo seleziona delle select sia dalla tabella 1 che dalla 2.
Ok.Adesso incominciamo il vero e proprio "attacco alla cieca".
La prima cosa da fare è determinare quanti campi seleziona la select per modificare correttamente la select che inietteremo nella query finale.Per questo si procede alla cieca.
Vediamo come:
Vediamo che ci dà un errore di sintassi..quindi andiamo avanti..
Anche qui errore di sintassi.
Lo stesso come prima..
Idem come prima..
Ora ( è un' ipotesi,non vuol dire che se mettiamo il codice di sopra vedremo sempre i dati ) vedremo i dati,cioè la query è stata eseguita con successo.
Cosa fa questa query? Questo:
Adesso questa era un'ipotesi perchè nella realtà noi non sappiamo come si chiamano le tabelle,a meno che il sito non sia nostro e stiamo testando la sicurezza di esso.Perciò siccome il sito non è nostro dobbiamo vedere come si chiamano le tabelle.Ma non vi preoccupate,perchè ancora una volta ci viene in aiuto il database MySQL con il suo Information Schema che contiene le tabelle con le informazioni sulla struttura degli altri dati presenti negli altri database.Noi dovremo visualizzare il contenuto della tabella
che contiene
cioè la lista delle tabelle presenti nel database..
Per fare ciò useremo questa query:
Ora sapremo come si chiamano le tabelle,compresa quella degli utenti e tutte le altre ;) Ora dobbiamo vedere come si chiamano i dati ed il gioco è fatto ( facile a dirsi ma a farsi per niente proprio )
E lo faremo con la seguente query:
In questo caso ci è venuto in aiuto l'information_schema.columns,cioè la lista dei nomi delle colonne per ogni tabella.
Ovviamente quest'ultimo procedimento va fatto come primo perchè altrimenti non avremo i dati necessari per andare avanti.
Spero di essere stato chiaro..per eventuali problemi o incomprensioni potrete riferirvi direttamente a me..e mi raccomando..cosa importante..
NO LAMERATE :indiavolato: (anche se credo che un lamer non sia capace di capire tutto ciò e quindi farà un papocchio ^^ )
Grazie a tutti
Alla prossima :bye:
Fonte:studio approfondito sul web e sui libri ( della Feltrinelli se non sbaglio) sulle SQL injection e sulle Blind SQL injection. ( non chiedetemi i nomi dei libri perchè non mi ricordo come si chiamano..li ho dati ad un mio amico e non li leggo più da un bel po' xD )
oggi vorrei parlarvi,anche se non so se sia stato già fatto,della tecnica delle Sql injection e delle blind Sql injection.
Allora incominciamo..
1) INTRODUZIONE:
Ogni sito in php visualizza ed elabora dati appoggiandosi su un database, MySQL . Per visualizzare questi dati basta una richiesta GET o POST:
GET :
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
POST:
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
La differenza fra GET e POST è che una richiesta di tipo GET viene eseguita sull'URL che segue l'attributo HREF di un marcatore <A> all'interno di una pagina HTML;una richiesta di tipo FORM invece viene eseguita dal Client in risposta ad una form.
2) SQL injection
Siccome questi dati vengono inviati dal browser possiamo manipolarli come vogliamo.Questa tecnica si chiama SQL injection ( iniezione di sql).
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Cosa fa questo?
In poche parole modifica la query
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Una pagina di login messa in questo modo
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
si potrà manipolare in questo modo:
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Questo garantisce l'accesso senza credenziali perchè modifica la query in questo modo:
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
in
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
3) Blind SQL injection
La tecnica vista in precedenza è limitata.Una tecnica più efficiente è la Blind SQL injection,anche se è più difficile.Già dal nome possiamo capire la difficoltà della tecnica e anche la lunghezza dell'attacco perchè in questo tipo di attacco si procede alla cieca ("blind").
Prendiamo l'esempio di prima: troviamo una vulnerabilità nella pagina news.php ( ovviamente bisogna prima cercare la vulnerabilità dove si trova). Dato che ogni giorno la sicurezza dei siti aumenta sempre più ( o almeno così dovrebbe essere ) risulta difficile trovare ancora una vulnerabilità in una pagina di login ( io l'ho trovata in solo 8 siti web ).Perciò possiamo iniettare del codice nella gestione della pagina vulnerabile,in questo caso quella delle news,per arrivare a quella del login..vediamo come..
Per questo tipo di attacco riceviamo anche un "aiutino" dal database MySQL stesso,proprio per la sua struttura con il suo UNION ALL SELECT,che permette di concatenare delle select su tabelle differenti:
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Ok.Adesso incominciamo il vero e proprio "attacco alla cieca".
La prima cosa da fare è determinare quanti campi seleziona la select per modificare correttamente la select che inietteremo nella query finale.Per questo si procede alla cieca.
Vediamo come:
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Vediamo che ci dà un errore di sintassi..quindi andiamo avanti..
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Cosa fa questa query? Questo:
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Adesso questa era un'ipotesi perchè nella realtà noi non sappiamo come si chiamano le tabelle,a meno che il sito non sia nostro e stiamo testando la sicurezza di esso.Perciò siccome il sito non è nostro dobbiamo vedere come si chiamano le tabelle.Ma non vi preoccupate,perchè ancora una volta ci viene in aiuto il database MySQL con il suo Information Schema che contiene le tabelle con le informazioni sulla struttura degli altri dati presenti negli altri database.Noi dovremo visualizzare il contenuto della tabella
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Per fare ciò useremo questa query:
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
E lo faremo con la seguente query:
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
In questo caso ci è venuto in aiuto l'information_schema.columns,cioè la lista dei nomi delle colonne per ogni tabella.
Ovviamente quest'ultimo procedimento va fatto come primo perchè altrimenti non avremo i dati necessari per andare avanti.
Spero di essere stato chiaro..per eventuali problemi o incomprensioni potrete riferirvi direttamente a me..e mi raccomando..cosa importante..
NO LAMERATE :indiavolato: (anche se credo che un lamer non sia capace di capire tutto ciò e quindi farà un papocchio ^^ )
Grazie a tutti
Alla prossima :bye:
Fonte:studio approfondito sul web e sui libri ( della Feltrinelli se non sbaglio) sulle SQL injection e sulle Blind SQL injection. ( non chiedetemi i nomi dei libri perchè non mi ricordo come si chiamano..li ho dati ad un mio amico e non li leggo più da un bel po' xD )