SQL Injection - MSSQL

2

Sto imparando sull'iniezione SQL e ho il seguente codice back-end,

Set rs = server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM Registration WHERE name='"&name&"'"
rs.Open SQL,Conn,0,1
if not rs.EOF then
    message = "Your ID is """ & rs("iD") & """."
else
    message = "id does not exist."
end if

Sono stato in grado di iniettare questo per estrarre un iD, ma mi chiedo se sarebbe possibile andare oltre e ottenere maggiori informazioni? In base al mio codice, non penso sia possibile poiché il mio codice restituisce solo il campo DB iD.

Ho ragione?

    
posta d123 02.04.2013 - 21:28
fonte

3 risposte

3

Per sfruttare questa vulnerabilità, non è necessario un output diretto. C'è anche una tecnica chiamata cieca basata su booleani in cui il comportamento di diverse espressioni booleane viene utilizzato per estrapolare i dati da:

foo' AND pass LIKE 'a%

Se viene restituito il messaggio di successo, pass inizia con a , altrimenti non lo fa. Se lo ripeti con tutti i possibili caratteri in modo ricorsivo su ogni prefisso riuscito, otterrai l'intera stringa.

Puoi fare lo stesso per ottenere informazioni sullo schema del database:

foo' AND EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'abc%') AND '1'='1

Conoscendo lo schema del database, si possono leggere tutti i dati.

Come Rook ha già menzionato, SQLmap è uno strumento piuttosto utile per automatizzare lo sfruttamento di tali vulnerabilità di injection SQL.

    
risposta data 03.04.2013 - 07:28
fonte
2

È possibile creare un alias di un record per restituire una singola colonna utilizzando un As nella selezione. C'è anche il problema che potresti inviare qualsiasi alterazione arbitraria al DB, supponendo che "nome" provenga da un input utente non convalidato.

    
risposta data 02.04.2013 - 21:37
fonte
2

SQLMap è un ottimo strumento che automatizza lo sfruttamento di difetti come questo. SQLMap può eseguire il dump di un intero database, anche se è SQL injection cieca. Può anche inserire una shell in base alla configurazione del database.

    
risposta data 02.04.2013 - 23:38
fonte

Leggi altre domande sui tag