Che cosa fa contenere un'iniezione SQL come iniezione cieca?

4

In primo luogo, da quanto ho letto finora, l'iniezione SQL cieca basata su booleani è quando non riesci a vedere alcun messaggio di errore e fai affidamento su true o false di risposte alle query per mungere il database. Ad esempio, è possibile creare una query che chiederà al database se il primo carattere del nome dello schema della tabella è una "E" o altro. E puoi continuare a chiedere finché non avrai il nome del database, il nome della tabella e i nomi delle colonne per scaricare le informazioni che desideri.

Capisco che ci sia anche un'iniezione SQL cieca basata sul tempo, ma non ne sono preoccupato.

In secondo luogo, ho visto molti articoli e amp; I video di YouTube dicono che ciò che stanno mostrando è un'iniezione SQL cieca (perché non vengono visualizzati messaggi di errore). Tuttavia, sono ancora in grado di utilizzare UNION SELECT query per estrarre le informazioni dal database. Ad esempio, id=1' UNION SELECT 1,2,3,table_name from information_schema.tables . Questo non conta come un'iniezione SQL basata su UNION? In caso contrario, come si chiama?

Per diritti un'iniezione SQL cieca non ti consente di utilizzare le istruzioni UNION . Ho ragione? C'è qualcosa di sbagliato nella mia comprensione?

    
posta ysj 08.06.2013 - 09:44
fonte

2 risposte

5

La maggior parte di ciò che dici è corretto.

L'istruzione UNION in merito all'iniezione SQL è solo un altro modo per tentare di interrompere / modificare / estrarre i dati. Può essere cieco, parzialmente cieco o non cieco, dipende dal server, dal codice e dalla segnalazione degli errori.

Se l'iniezione non genera alcun dato, ma influenza il comportamento del sito in un modo che è possibile interpretare come se avesse fatto qualcosa di diverso dal normale, è considerato parzialmente cieco.

Se l'iniezione non genera alcun dato e non vi è alcun cambiamento nel comportamento del sito, questo è considerato totalmente cieco.

L'uso di UNION può o non può modificare il risultato, ma non è intrinsecamente legato all'essere ciechi o meno.

    
risposta data 08.06.2013 - 13:41
fonte
2
L'iniezione SQL basata su

UNION SELECT non è considerata cieca, e nemmeno un'iniezione SQL basata su errori. Quindi i video che hai trovato sono effettivamente errati nelle loro descrizioni.

È cieco se non puoi vedere direttamente le righe dall'output del database nella pagina. Con UNION SELECT SQL injection, le parti della pagina conterranno i dati di tabelle e colonne che non erano destinati a essere inclusi dal codificatore originale. E con gli errori si ottiene lo stesso, è solo l'output dei messaggi di errore.

Iniezione SQL cieca significa che nessuna delle righe nel database è comunicata direttamente sulla pagina. Gli esempi in genere includono se trovi un'iniezione SQL all'interno di un'istruzione INSERT o DELETE o all'interno di un'istruzione SELECT che getta immediatamente o altrimenti non restituisce i dati che recupera.

Ad esempio, se disponi di un codice di accesso simile a query("SELECT username FROM users WHERE username='$username' AND password='$password'"); , in cui $username o $password sono iniettabili, le probabilità sono il risultato di questa query non verrà effettivamente pubblicata ovunque. È semplicemente un "controllo", non un recupero. In questo caso, l'unica opzione è usare l'iniezione cieca. In un caso come questo, è possibile utilizzare l'iniezione cieca per leggere i dati da qualsiasi tabella, oppure è possibile utilizzarlo per accedere senza conoscere la password. L'iniezione cieca non è sempre limitata all'estrazione di dati dal database, ma può anche includere azioni che l'autore non intendeva abusando dei risultati delle query SQL.

L'iniezione cieca è divisa in due tipi: cieco booleano e cieco basato sul tempo. A volte il blind cieco è chiamato "parziale cieco" e il tempo è chiamato "full blind", ma trovo che siano poco chiari.

Le iniezioni booleane sono più facili da sfruttare, ma potrebbero non essere trovate in tutti i casi. Tutte le iniezioni SQL cieche (in realtà, tutte le iniezioni SQL dovunque) saranno vulnerabili all'iniezione cieca basata sul tempo, purché l'applicazione di database abbia qualche tipo di funzione o funzione che possa ritardare la risposta per almeno un secondo o due. La maggior parte dei grandi database ha tali funzioni. Lo svantaggio è che potrebbe essere necessario molto tempo per estrarre grandi quantità di dati.

Ti lascerò fare ricerche su come funzionano queste iniezioni cieche, ma la tua descrizione di iniezione booleana cieca è corretta.

    
risposta data 09.06.2013 - 21:43
fonte

Leggi altre domande sui tag