Web5: SQL injection - Alcune tecniche per aggirare i meccanismi di filtraggio

Web5: SQL injection - Alcune tecniche per aggirare i meccanismi di filtraggio

1. Troncare il contenuto della query

Nel caso in cui desideri ignorare gli script nella query. Ad esempio, per l'elaborazione seguente, la query richiede la condizione active=1 ma possiamo commentare (--, -- -, -+, #, /*, /**/, // , ;%00…) e ignoralo. Durante l'estrazione, spesso non sappiamo cosa fa il contenuto rimanente della query, quindi l'utilizzo dei commenti in questo caso è molto efficace.

Web5: SQL injection - Alcune tecniche per aggirare i meccanismi di filtraggio

Dopo aver commentato, la nostra query diventa:

Web5: SQL injection - Alcune tecniche per aggirare i meccanismi di filtraggio

2. Ignora il filtraggio delle parole chiave

UN. Commenti in linea

I commenti in linea vengono utilizzati in modo molto efficace per aggirare il filtro degli spazi bianchi. È possibile utilizzare i seguenti caratteri per ignorare il filtro degli spazi bianchi: /**/, %20, %09, %0a, %0b, %0c, %0d, %a0). Per esempio:

Web5: SQL injection - Alcune tecniche per aggirare i meccanismi di filtraggio

Oppure ignora il filtraggio delle parole chiave (disponibile con MySql). Nell'esempio seguente, le parole chiave union e password sono nella lista nera, quindi sono state bloccate. Possiamo aggirarlo:

Web5: SQL injection - Alcune tecniche per aggirare i meccanismi di filtraggio

B. Sostituisci le parole chiave

Quando sfruttiamo l'SQL injection, utilizziamo spesso parole chiave come: union, select, information_schema... In molti casi, i programmatori semplicemente sostituiscono quelle parole chiave:

Web5: SQL injection - Alcune tecniche per aggirare i meccanismi di filtraggio

Possiamo facilmente vedere che manca il codice di elaborazione di cui sopra. Se si tratta semplicemente di una corrispondenza di pattern, il bypass è estremamente semplice. Applichiamo la distinzione tra maiuscole e minuscole, dove le lettere maiuscole e minuscole vengono interpretate in modo diverso.

Ora invece di usare la parola chiave:

select, union…

Noi useremo:

SeLEcT, UniOn…

La base di questo bypass è che i sistemi di gestione dei database non distinguono tra case e parole chiave case.

In alcuni casi, l'applicazione web filtrerà tutte o parte di alcune parole chiave (unione, selezione...). Aggireremo come segue:

id=1+uniunionon+SeLselectecT+1,2,3-- -

Dopo che l'unione e la selezione sono state filtrate dall'applicazione web, ci verrà lasciata la query corretta come segue:

id=1+union+SeLecT+1,2,3-- -

C. Codifica dei caratteri

Possiamo bypassare il blocco WAF (Web Application Firewall) delle parole chiave codificandole. Molte applicazioni WAF decodificheranno la query solo una volta e filtreranno le parole chiave nella lista nera, quindi codificheremo la richiesta due volte in modo che in questo caso possa essere ignorata.

Web5: SQL injection - Alcune tecniche per aggirare i meccanismi di filtraggio

3. Bypass blocca le virgolette singole e doppie

- Diamo un'occhiata a un esempio prima di conoscere nello specifico questo bypass.

Web5: SQL injection - Alcune tecniche per aggirare i meccanismi di filtraggio

In questo scenario, nel database è presente una tabella denominata Users. Il compito successivo è conoscere il nome della colonna nella tabella per ottenere le sue informazioni. Come nella query precedente, utilizziamo la condizione: table_name='users'. Ma se sia le virgolette singole (') che le virgolette doppie (") sono bloccate da WAF, non possiamo più utilizzare 'utenti' o "utenti". Quindi, come risolvere questo problema? Il sistema di database integrato ci fornisce una funzione che risolve molto bene questo problema, che è la funzione CHAR() (per Oracle è CHR()). Ad esempio, nella query precedente la ignoreremo:

Web5: SQL injection - Alcune tecniche per aggirare i meccanismi di filtraggioWeb5: SQL injection - Alcune tecniche per aggirare i meccanismi di filtraggio

I programmatori PHP hanno molta familiarità con la funzione addlashes(). La funzione addlashes() ha l'effetto di aggiungere prima di caratteri speciali come virgolette singole ('), virgolette doppie ("), barra rovesciata (\), carattere NUL (byte nullo) "\" per aiutare il sistema di gestione del database. Esiste nessuna difficoltà e confusione durante la gestione di stringhe contenenti questi caratteri? Pertanto, quando vogliamo inserire nella query secondo lo script: name='someName' o '1'='1'-- I risultati non sono più quelli che ci aspettavamo.

Tuttavia, esiste una tecnica per ignorare la funzione addlashes() per inserire caratteri di virgolette singole ('). Questa tecnica è pubblica da molto tempo e l'implementazione di questa tecnica è piuttosto difficile perché è legata allo stile di codifica applicato al sito web.

4. Ignorare l'errore "mix illegale di regole di confronto per l'operazione UNION"

In alcuni sistemi gestionali (comunemente presenti in MySql), quando database e tabelle sono stati impostati in collation, quando si utilizza la parola chiave UNION, verrà segnalato l'errore "illegal mix of collation for operazione UNION". L'impostazione delle regole di confronto può essere dovuta all'intenzione del progettista del database o all'impostazione predefinita di MySql. In caso di utilizzo dell'unione, dobbiamo garantire che la condizione di selezione del valore in ciascun campo debba avere il tipo di codice corrispondente definito. A mio parere, questo errore è abbastanza comune, soprattutto per i CMS che eseguono Apache MySql. Le persone possono saperne di più su: http://bugs.mysql.com/bug.php?id=57926.
In questo caso possiamo utilizzare metodi per convertire nel tipo di codifica appropriato.

Ad esempio nel seguente caso:

Web5: SQL injection - Alcune tecniche per aggirare i meccanismi di filtraggio

Nella query precedente, se la colonna1 ha le regole di confronto impostate su Unicode-UTF8 o _latin1, ad esempio, ciò che viene selezionato da colonna2 dovrà essere convertito nel codice corrispondente. Possiamo forzare lo stile come segue:

Web5: SQL injection - Alcune tecniche per aggirare i meccanismi di filtraggio

Vediamo uno svantaggio in questo metodo di bypass: dobbiamo sapere che il codice raccolto è _latin1. Un modo migliore per aggirarlo, secondo me, è utilizzare le funzioni di codifica e decodifica esadecimale e non esadecimale.

Web5: SQL injection - Alcune tecniche per aggirare i meccanismi di filtraggio

Esistono molte altre funzioni che possono essere utilizzate al posto di hex e unhex.


5 modi più semplici per inserire la chiave di Windows 10

5 modi più semplici per inserire la chiave di Windows 10

Quando la vecchia chiave Windows 10 è scaduta, è necessario inserire una nuova chiave per sostituirla. Scopri i 5 metodi più semplici per cambiare la chiave di attivazione di Windows 10.

Come creare un nuovo Utente su Windows 10 utilizzando Gestione Computer e Pannello di Controllo

Come creare un nuovo Utente su Windows 10 utilizzando Gestione Computer e Pannello di Controllo

Scopri come creare un nuovo utente su Windows 10 senza utilizzare un account Microsoft. Attraverso Gestione Computer e Pannello di Controllo, è possibile proteggere i dati e gestire gli accessi in modo efficace.

Come modificare le impostazioni regionali su Windows 10

Come modificare le impostazioni regionali su Windows 10

Scopri come modificare le impostazioni regionali su Windows 10 per personalizzare l

Come scrivere il simbolo del copyright © (simbolo del copyright) su un computer

Come scrivere il simbolo del copyright © (simbolo del copyright) su un computer

Il simbolo del copyright (©) è un carattere speciale comunemente utilizzato da fotografi e creatori di contenuti. Scopri come inserirlo su Windows e Mac con metodi aggiornati.

Come risolvere lerrore Il nome del PC non è valido su Windows 11

Come risolvere lerrore Il nome del PC non è valido su Windows 11

Scopri come correggere l

Come eliminare le cartelle Rullino fotografico e Immagini salvate in Windows 10

Come eliminare le cartelle Rullino fotografico e Immagini salvate in Windows 10

Scopri come spostare, nascondere o eliminare le cartelle Rullino fotografico e Immagini salvate in Windows 10 in modo efficace. Segui i nostri passaggi e suggerimenti per semplificare la tua esperienza.

Come trovare la posizione dei file scaricati sul Chromebook

Come trovare la posizione dei file scaricati sul Chromebook

Scopri come localizzare facilmente i file scaricati su Chromebook utilizzando diversi metodi efficaci.

Come visualizzare ed eliminare la cronologia delle attività su Windows 10

Come visualizzare ed eliminare la cronologia delle attività su Windows 10

Fai riferimento a come visualizzare ed eliminare la cronologia delle attività su Windows 10 nell

Istruzioni per lutilizzo dellindirizzo IP 192.168.2.2

Istruzioni per lutilizzo dellindirizzo IP 192.168.2.2

Scopri come utilizzare l

Come modificare le impostazioni degli effetti visivi in ​​Windows 10

Come modificare le impostazioni degli effetti visivi in ​​Windows 10

Scopri come modificare le impostazioni degli effetti visivi in Windows 10 per migliorare le prestazioni del PC. Questo articolo guida ti mostrerà tutti i passaggi necessari.