Attualmente sto studiando SQLi da un libro che non citerò per evitare problemi di copyright. Il libro contiene molti esempi di stringhe / codice da MSSQL, MySQL, Oracle ecc.
Attualmente sono perplesso su quale sarebbe la sintassi equivalente in PHP / MySQL per questo esempio, dato solo in asp (assumendo un DB di MSSQL). Questa è una stringa di iniezione utilizzata nella barra degli indirizzi del browser, utilizzando ORDER BY
per enumerare il numero di colonne in una tabella, ripetendo con ORDER BY 1
, ORDER BY 2
ecc. Fino a produrre un errore:
hxxp://someserver.com/products.asp?id=12+order+by+1
Quindi, la sintassi equivalente in PHP / MySQL dovrebbe essere qualcosa del tipo:
hxxp://someserver.com/products.php?id=12 order by 1
Penso che lo spazio bianco sia OK qui? O forse:
hxxp://someserver.com/products.php?id=12%20order%20by%201
Ho scritto un'applicazione per XAMPP per testare, ma non riesco a produrre un errore, quindi sto verificando che sto usando la sintassi corretta.
Per essere chiari, per il presente post, sto solo chiedendo la sintassi.
Modifica: ho pensato che ero molto chiaro che stavo solo chiedendo degli spazi bianchi in un URL ... Ho generato l'errore che stavo cercando.
Ho trovato un'istanza in cui uno spazio vs %20
fa non produce gli stessi risultati - come l'ultimo carattere in un URL.
Questo (notare lo spazio singolo dopo i due trattini):
/victim/products.php?val=100' ORDER BY 4 --
produce questo:
Database access failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1.
Mentre questo:
/victim/products.php?val=100' ORDER BY 4 --%20
produce:
Database access failed: Unknown column '4' in 'order clause'.
Interessante ...
So che la stessa build di XAMPP non ha problemi con uno spazio dopo 2 trattini alla fine di un'iniezione quando si trova in un campo di accesso usando il metodo POST ...