2600 SkimonHertz

Blind Injection sql e vulnerabilità, Hacking del Web

« Older   Newer »
  Share  
Cr3m3s1's
view post Posted on 6/12/2011, 15:39     +1   +1   -1




MS Access SQL Injection Cheat Sheet viene utilizzato per testare la vulnerabilità delle sql injection. Nel caso blind sql injection la storia cambia e in peggio. L'assenza dell'operatore LIMIT determina l'impossibilità di effettuare il “dump” tramite la blind injection. Se il dump e la query si trovano in tabelle diverse la faccenda si complica ulteriormente. L'operatore TOP e la funzione LAST ci semplificano un po' le cose. Con TOP si possono selezionare il numero di tuple alla quale torni la query. Last seleziona l'ultima tupla di un' espressione.Attraverso TOP e LAST possiamo selezionare tutte le tuple di una query.
Ma in pratica?
Prendo un esempio dal sito itsc:
Supponiamo di dover testare un'applicazione (con DBMS MS Access) dove il parametro id e' di tipo numerico e vulnerabile a blind sql injection. Ora supponiamo che in qualche modo siete venuti a conoscenza dell'esistenza della tabella users e sapete anche dell'esistenza dei campi username e password. L'intenzione è riuscire ad effettuare il dump di questi due campi. Per il nostro scopo utilizzeremo anche la funzione MID che ci permette di ottenere delle sottostringhe, e la funzione IIF che non e' altro che il costrutto 'if'.
Andiamo dritti al sodo e supponiamo di voler ottenere il valore della tupla numero 10 del campo username. Cominciamo con l'identificare il primo carattere ovvero cominciamo a selezioniare (tramite la subquery) i primi 10 record attraverso l'operatore TOP, in seguito attraverso la funzione LAST() selezioniamo l'ultimo record. Infine attraverso la funzione MID() andiamo a selezionare il primo carattere e a fare inferenza su quest'ultimo (nell'esempio ci chiediamo se e' uguale ad 'a'). Se e' uguale alla lettera 'a' facciamo ritornare il numero 0 (otterremo dunque un codice di risposta uguale a 200), nel caso in cui l'esito fosse negativo, facciamo ritornare una stringa, la quale generera' un errore (dato che il parametro id e' di tipo numerico) facendo ritornare un codice di risposta uguale a 500. Iterando il meccanismo sugli indici dell'operatore TOP (per cui selezionando di volta in volta un numero maggiore di tuple) e della funzione MID() (in particolare sul secondo parametro il quale identifica la posizione da cui cominciare ad ottenere la sotto-stringa) otterremo tutti i valori del campo username.

In sostanza, la particolarità di questa funzione è l'utilizzo di una SUBQUERY al posto di una normale QUERY. La seconda possibiltà è limitata dalla mancanza della funzione LIMIT.
Cr3m3s1's


Edited by SkimonHertz - 6/12/2011, 20:56
 
Top
0 replies since 6/12/2011, 15:39   136 views
  Share