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.


Differenza tra desktop e server

Differenza tra desktop e server

Desktop e server sono la stessa cosa? Se un normale computer è diverso da un server, qual è questa differenza? Come distinguere desktop e server? Quantrimang.com ha raccolto alcune idee principali per identificare desktop e server.

Come installare OpenSSH su Windows 10

Come installare OpenSSH su Windows 10

Ora puoi utilizzare OpenSSH su Windows 10 per connetterti a server remoti utilizzando SSH senza installare strumenti di terze parti. Questo articolo ti mostrerà come installare il client OpenSSH su Windows 10.

Come verificare che la funzionalità Set sia abilitata nella build di Windows 10 Insider Preview

Come verificare che la funzionalità Set sia abilitata nella build di Windows 10 Insider Preview

Unisciti a LuckyTemplates per scoprire come verificare che la funzione Sets sia abilitata sulla build di Windows 10 Insider Preview in questo articolo!

Istruzioni per il downgrade da Windows 10 Mobile a Windows Phone 8.1

Istruzioni per il downgrade da Windows 10 Mobile a Windows Phone 8.1

Molti fan di Windows Phone hanno aggiornato i loro telefoni a Windows 10 Mobiles. Tuttavia, dopo un periodo di utilizzo, molti utenti hanno scoperto che questa piattaforma presentava ancora molti errori e hanno voluto tornare a Windows Phone 8.1 come prima.

Come impedire a Windows di aggiornare automaticamente le mappe offline

Come impedire a Windows di aggiornare automaticamente le mappe offline

Se non lo sai, l'applicazione di mappatura integrata in Windows è basata su Microsoft Bing Maps e viene utilizzata per fare riferimento rapidamente alle indicazioni stradali per una posizione specifica quando necessario.

Come impedire agli utenti di accedere alle unità per motivi di sicurezza in Windows

Come impedire agli utenti di accedere alle unità per motivi di sicurezza in Windows

Se non desideri che altri utenti accedano ad alcune o a tutte le tue unità, puoi utilizzare gli oggetti Criteri di gruppo per limitare rapidamente l'accesso. Ecco i passaggi per impedire agli utenti di accedere alle unità in Windows.

Configura Always On VPN in Windows 10 utilizzando Microsoft Intune

Configura Always On VPN in Windows 10 utilizzando Microsoft Intune

Always On VPN è progettato per utilizzare piattaforme di gestione dei dispositivi mobili (MDM) come Microsoft Intune. Utilizzando Intune, gli amministratori possono creare e distribuire profili VPN distribuiti su qualsiasi dispositivo Windows 10, ovunque.

Cose da tenere a mente quando si utilizza UEFI anziché BIOS

Cose da tenere a mente quando si utilizza UEFI anziché BIOS

I nuovi computer Windows 8 non utilizzano il BIOS tradizionale ma utilizzano invece il firmware UEFI come i Mac anni fa. Il modo in cui è possibile eseguire attività comuni di sistema è cambiato.

Istruzioni per recuperare la capacità USB persa

Istruzioni per recuperare la capacità USB persa

Recentemente ho riscontrato uno strano problema: la mia unità USB da 4 GB si è improvvisamente trasformata in un'unità USB da 100 MB. Ho perso gran parte del mio spazio di archiviazione. Fortunatamente ho trovato un modo per risolverli, se hai una situazione simile, stai certo che la correzione di questo errore è sorprendentemente semplice.

7 errori da evitare quando si testa la velocità del Wi-Fi

7 errori da evitare quando si testa la velocità del Wi-Fi

Un modo semplice per confermare che c'è un problema è testare la velocità del Wi-Fi. Questo è molto facile da fare. Esistono molti servizi di test della velocità Wi-Fi online eseguiti all'interno del browser.