sta sfruttando la funzione IsNumeric () in VB.Net tramite l'iniezione SQL possibile?

5

Supponiamo che questa sia l'unica attenuazione usata su un server:

Dim IDPerson
IDPerson = Request.Querystring("id")
If IsNumeric(IDPerson) = True Then
IDPerson = IDPerson
Else
IDPerson = 0
End If

IDPerson viene quindi utilizzato per scrivere la query. "Id" è la variabile GET.

So che IsNumeric accetterà esadecimale come numerico.

Potrebbe essere costruita un'intera query in esadecimale e passare la funzione IsNumeric?

    
posta k to the z 29.05.2013 - 23:46
fonte

1 risposta

1

Dirò che dipende da cosa farai in seguito con la variabile ID. Se il codice in seguito converte l'esadecimale in una stringa e quindi genera query con esso, la risposta diventa "sì"

Esempio:

Costruisco un sito di e-commerce che guarda la cronologia degli acquisti in base all'ID del cliente ... Essendo un noob, mi è venuta un'idea intelligente di usare il tuo indirizzo e-mail per generare il tuo ID semplicemente convertendolo in esadecimale.

  • la mia email = [email protected]
  • il mio ID sarebbe quindi = 637573746f6d6572406578616d706c652e636f6d

Sembra un ID "abbastanza sicuro" e univoco, quindi mi sento davvero bene su quello che ho fatto.

Ora l'iniezione:

Qualcuno capisce che l'ID utente è semplicemente l'equivalente esadecimale dell'indirizzo email e suppone che io possa convertirlo di nuovo in testo e usare quel risultato in una query

link

  • ID iniettato = 31272064726f70207461626c652075736572733b202d2d

  • ASCII equivalente = 1' drop table users; --

Se io, lo sviluppatore, controlli per assicurarmi che l'ID sia numerico ... quindi esadecimale per l'ID ... quindi usalo in una query .... Ho appena autorizzato un'iniezione SQL

References:

Ecco una domanda simile riguardante le iniezioni SQL utilizzando solo caratteri alfanumerici: link

Ecco un'altra discussione che discute di sql injection tramite hex: link

... Ovviamente la soluzione giusta è usare meccanismi di prevenzione "reali" come le query parametrizzate, ma questa è certamente una domanda interessante.

    
risposta data 31.05.2013 - 02:57
fonte

Leggi altre domande sui tag