Penso che tu stia confondendo due cose:
- Il codice vulnerabile a un attacco di SQL injection.
- La cosa che sta eseguendo un attacco SQL injection.
La pagina di esempio a cui ti colleghi ha il codice Java di tipo # 1 e usa il programma SQLMap (scritto in Python) per il tipo # 2 . Sembra che tu stia chiedendo il tipo # 2, ma lasciali passare uno per uno.
# 1: il codice vulnerabile all'attacco SQL injection
Il codice in # 1 potrebbe essere scritto in qualsiasi lingua - per una vasta gamma di esempi (ma non per Scala) vedi questo sito . Se per qualche ragione desideri scrivere codice vulnerabile in Scala, questo potrebbe essere fatto (anche se non riesco a capire perché vuoi farlo).
Per prima cosa è necessario connettersi a un database. Non sono un programmatore di Scala, ma la mia comprensione è che questo viene solitamente fatto con JDBC e importando alcune librerie Java, quindi questo vi infrange "non importa nessuna regola Java". Questa pagina ti dà una bella passeggiata.
Quindi devi introdurre una vulnerabilità. Questo viene fatto (di solito non intenzionalmente) concatenando dati non fidati (cioè dati dall'utente, come i valori inseriti in un modulo HTML) in un'espressione SQL. Vediamo un caso di uno script di accesso in cui i dati non attendibili sono username
e password
:
//Warning! This is code deliberately made vulnerable to SQL injection.
val sql = "SELECT * FROM users WHERE username = '" + username +
"' AND password = '" + password + "'"
val resultSet = statement.executeQuery(sql)
Questo è il punto in cui può avvenire l'iniezione effettiva - considera cosa succederebbe se la variabile password
avesse il valore ' OR '1' = '1
.
# 2: la cosa che esegue l'attacco SQL injection
Il numero # 2 è (di solito) qualcosa che invia richieste HTTP elaborate con il vettore di attacco (come ' OR '1' = '1
) in esse. Potresti scrivere un programma facendo ciò in qualsiasi lingua, ma potresti anche usare un programma esistente che invia richieste HTTP. Il programma più comune è - sorpresa - un browser web. Il modo più semplice per verificare le ovvie vulnerabilità di SQLi è semplicemente inserire il vettore di attacco in una forma (che è di tipo ' OR '1' = '1
nel campo della password), premere invio e vedere cosa succede.
Se vuoi automatizzarlo, puoi scrivere un programma in Scala. Non ti fornirò alcun codice per questo, ma questa domanda su Stack Overflow dovrebbe ti aiuta ad essere subito operativo con l'invio di richieste HTTP con Scala.