Gabarito disponível
Suponha que um procedimento de autenticação, em SQL, utilize a seguinte consulta e verifique se alguma linha foi retornada:
SELECT * FROM colaboradores
WHERE nomeusuario = 'joao' and (SENHA = 'senhajoao');
A consulta em SQL acima foi manipulada por um atacante e resultou o seguinte comando:
SELECT * FROM colaboradores
WHERE nomeusuario = 'joao' and (SENHA = 'senhajoao' or '1' = '1');
Assim, de que tipo de ataque se trata?
SELECT * FROM colaboradores
WHERE nomeusuario = 'joao' and (SENHA = 'senhajoao');
A consulta em SQL acima foi manipulada por um atacante e resultou o seguinte comando:
SELECT * FROM colaboradores
WHERE nomeusuario = 'joao' and (SENHA = 'senhajoao' or '1' = '1');
Assim, de que tipo de ataque se trata?
Resolução comentada
A inclusão de or '1'='1' na consulta caracteriza injeção de SQL.
O atacante inseriu na entrada a condição or '1'='1', sempre verdadeira, o que altera a lógica da consulta e contorna a autenticação. Isso é SQL Injection.
Análise das alternativas
A) Spoofing é falsificação de identidade, por exemplo de IP. B) Man-in-the-middle é interceptação da comunicação. D) Pass-the-Hash reutiliza hashes de senha. E) DoS busca indisponibilizar o serviço.
Referência: OWASP, SQL Injection.
Resolução comentada do VaiConcursos.