hackweb
appunti di hacking e tecnologia
IT EN
menù principale
menù utente
non sei loggato

SQL injection: da UNION al blind time-based

20 febbraio 2026 · 1 min di lettura · #web #sql-injection #database

La causa è sempre la stessa: dati dell'utente trattati come codice. "SELECT * FROM users WHERE id='".$id."'" con $id = 1' OR '1'='1 cambia la condizione.

UNION: leggere altre tabelle

Se la query restituisce output, UNION SELECT aggancia una seconda select. Serve lo stesso numero di colonne e tipi compatibili:

' UNION SELECT username, password, NULL FROM users -- -

Trovi il numero di colonne con ORDER BY n finché non erra.

Blind: quando non vedi nulla

Se l'output non c'è ma la risposta cambia (pagina diversa) è booleano: ' AND SUBSTRING(password,1,1)='a. Se nemmeno quello, il time-based misura il ritardo:

' AND IF(SUBSTRING(user(),1,1)='r', SLEEP(5), 0) -- -

Difesa

Query parametrizzate (prepared statement) sempre: i dati non toccano mai il parser SQL. Le whitelist per identificatori (nomi colonna/tabella) che non possono essere parametrizzati. Mai fidarsi dell'escaping manuale.


« torna alla home

ultimi post
 
il tuo indirizzo IP:
216.73.216.108
visitatore #1
MOTD:
Ogni astrazione perde da qualche parte.
Qui guardiamo dove.
argomenti