SQL Injection é você inserir um texto num campo comum que faça com que o servidor envie o comando que você quiser para o Banco de Dados.
Por exemplo, colocar
oi'; DROP TABLE users; --
Lá no servidor provavelmente tem algo assim (que gera o comando que deve ser enviado para o banco):
sql = "INSERT INTO mensagens VALUES msg='" + valor_do_campo + "'";
Se eu enviar o que eu coloquei no primeiro código, o banco vai receber isso:
INSERT INTO mensagens VALUES msg='oi'; DROP TABLE users; --'
O "--" avisa que tudo depois dele deve ser ignorado pelo banco.
Nesse caso, o usuário está fazendo com que o banco insira "oi" na tabela mensagens e depois delete a tabela "users", perdendo os dados dela. Eu posso substituir esse "DROP TABLE users" pelo que eu quiser, fazendo o que eu quiser com os dados. Eu só preciso ter noção de como são os nomes das tabelas no banco.