Wednesday, February 2, 2011

DVWA: SQL Injection Medium

Questo post fa parte della serie DVWA.
Livello easy: http://danielebellavista.blogspot.com/2011/01/dvwa-sql-injection-easy.html

Anche nel livello Medium è possibile scegliere fra Blind (senza print dell'errore mysql) e non Blind.

Il livello medium è un classico esempio di misure di sicurezza giuste applicate in contesti sbagliati.

Vediamo l'applicazione con non-blind (a scopo didattico, così si possono apprendere certe vulnerabilità che emergono da certi contesti).

Se proviamo inserendo il classico carattere ', otteniamo un errore:
[...] the right syntax to use near '\'' at line 1

Notiamo che è comparsa una slash che genera il carattere di escape \'. In questo modo l'attacco del livello easy (1' OR '1' = '1) perde di efficacia, poichè una volta aggiunte le slash si ottiene 1\' OR \'1\' = \'1Allora perché otteniamo comunque l'errore?

Provando con dei caratteri alfabetici si ottiene il seguente errore:

Unknown column 'a' in 'where clause'

perchè?
Perchè ID è un numero e in SQL, un campo numerico può essere comparato ad un valore senza l'ausilio degli apici. Ragionando su questa strada, l'errore è dovuto proprio a questo! Infatti la query risultate inserendo 1' OR '1' = '1 sarà:

SELECT * FROM tabella WHERE ID = 1\' OR \'1\' = \'1;

Che chiaramente produce un errore. Quindi il valore da inserire è 
1 OR 1 , ottenendo:

SELECT * FROM tabella WHERE ID = 1 OR 1;

No comments: