Questão de Segurança da Informação — Ataques a Aplicações Web (XSS, CSRF, SQL Injection etc.) — VUNESP 2025
Segurança da Informação›Ataques a Aplicações Web (XSS, CSRF, SQL Injection etc.)
Código
vu223066
Banca
VUNESP
Órgão
TJM SP
Ano
2025
Cargo
Ana SIJ ( )
Uma determinada aplicação web possui uma página de login onde o usuário deve preencher um nome de usuário e senha. É sabido que esses usuários e senhas são gerenciados pela própria aplicação, e não por um serviço externo. Um atacante efetuou o seguinte preenchimento, na tentativa de realizar um ataque do tipo SQL Injection.
Usuário: " or " " = " Senha: " or " " = "
As aspas duplas indicadas fazem parte do preenchimento.
O efeito exato dessa tentativa dependerá da construção interna da aplicação web, o que é desconhecido.
No entanto, pela análise do preenchimento, essa tentativa de ataque tem o potencial de
Aexcluir a tabela de usuários do sistema.
Binserir indevidamente um novo usuário na tabela de usuários do sistema, permitindo posterior login com a conta desse novo usuário.
Calterar a senha do usuário administrador da aplicação web.
Dretornar todos os usuários do sistema.
Eexcluir por completo todo o banco de dados da aplicação.
Revelar gabarito e comentário▾
GabaritoD — retornar todos os usuários do sistema.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
SQL Injection: bypass de autenticação
Gabarito: letra D. A tentativa " or " " = " nos campos de usuário e senha é o clássico payload de SQL Injection para contornar a autenticação, fazendo a consulta SELECT retornar registros sem conhecer credenciais válidas — o que, na prática, permite ao atacante visualizar/retornar todos os usuários (e, dependendo da query, efetuar login como o primeiro deles). O efeito exato depende da construção da aplicação, mas o potencial imediato é o retorno indevido de dados da tabela de usuários.
O que é SQL Injection e por que esse payload funciona
SQL Injection (SQLi) é uma vulnerabilidade de segurança web que permite a um invasor interferir nas consultas que uma aplicação faz ao seu banco de dados. Isso ocorre quando os dados fornecidos pelo usuário não são validados, filtrados ou higienizados, e são concatenados diretamente em consultas dinâmicas (não parametrizadas). O atacante, então, consegue manipular as entradas para alterar a estrutura da query original, podendo visualizar dados que não deveria acessar, modificar ou até deletar informações.
O payload " or " " = " explora exatamente essa concatenação. Imagine que a aplicação monte a consulta de login assim:
SELECT * FROM usuarios WHERE usuario = 'CAMPO_USUARIO' AND senha = 'CAMPO_SENHA'
Ao inserir " or " " = " no campo de usuário, a query se torna:
SELECT * FROM usuarios WHERE usuario = '' or '' = '' AND senha = '...'
A condição '' = '' é sempre verdadeira. Dependendo da precedência dos operadores, a cláusula WHERE inteira pode ser satisfeita para qualquer linha, fazendo a consulta retornar todos os usuários da tabela. Se a aplicação, após a consulta, simplesmente verificar se alguma linha foi retornada para conceder acesso, o atacante consegue efetuar login — muitas vezes como o primeiro usuário da tabela, que frequentemente é o administrador.
O que a tentativa NÃO faz diretamente
É crucial entender o escopo do payload. Ele é uma injeção em uma consulta de leitura (SELECT). Ele não contém comandos de modificação de dados ou estrutura, como INSERT, UPDATE, DELETE, DROP ou ALTER. Portanto, o potencial imediato é de leitura/retorno de dados, não de alteração ou exclusão. As alternativas que falam em excluir tabelas, inserir usuários ou alterar senhas descrevem outros tipos de payloads ou consequências que não são o efeito direto e mais provável desta tentativa específica.
A pegadinha da banca
A banca explora a confusão entre o objetivo do ataque (bypass de autenticação) e os efeitos possíveis de um SQL Injection em geral. O candidato pode lembrar que SQLi pode deletar tabelas ou inserir dados, mas deve analisar o payload específico apresentado. O payload " or " " = " é um clássico para contornar a lógica de autenticação, fazendo a consulta retornar dados sem credenciais válidas. O efeito mais direto e provável é o retorno de todos os usuários (ou de um usuário, permitindo login), não a execução de comandos destrutivos.
Alternativa A — ❌ Incorreta
Excluir a tabela de usuários exigiria um payload com o comando DROP TABLE, como '; DROP TABLE usuarios; --. O payload " or " " = " não contém nenhum comando de exclusão de estrutura (DDL). Ele é uma injeção em uma consulta de leitura, sem potencial direto para excluir tabelas.
Alternativa B — ❌ Incorreta
Inserir um novo usuário exigiria um payload com o comando INSERT INTO, como '; INSERT INTO usuarios (usuario, senha) VALUES ('hacker', '123'); --. O payload apresentado não contém nenhum comando de inserção (DML). Ele não tem o potencial de criar um novo registro na tabela.
Alternativa C — ❌ Incorreta
Alterar a senha do administrador exigiria um payload com o comando UPDATE, como '; UPDATE usuarios SET senha = 'nova' WHERE usuario = 'admin'; --. O payload " or " " = " não contém nenhum comando de atualização (DML). Ele não tem o potencial de modificar dados existentes.
Alternativa D — ✅ Correta ⟵ GABARITO
O payload " or " " = " é projetado para tornar a condição WHERE da consulta de login sempre verdadeira ('' = ''). Isso faz com que a consulta SELECT retorne todos os registros da tabela de usuários (ou, dependendo da implementação, o primeiro registro). O efeito potencial é exatamente o retorno indevido de todos os usuários do sistema, permitindo ao atacante visualizar dados sem conhecer credenciais válidas e, em muitos casos, efetuar login como o primeiro usuário retornado.
Alternativa E — ❌ Incorreta
Excluir todo o banco de dados exigiria um payload com comandos destrutivos como DROP DATABASE, DROP TABLE ou DELETE FROM. O payload " or " " = " não contém nenhum comando de exclusão. Ele é uma injeção em uma consulta de leitura, sem potencial direto para excluir o banco de dados.
NÃO CAIA NESSA!
A banca tenta fazer você pensar em todos os efeitos possíveis do SQL Injection (excluir, inserir, alterar), mas a chave é analisar o payload específico. O " or " " = " é o payload clássico de bypass de autenticação, cujo efeito é fazer a consulta retornar dados — não executar comandos destrutivos. Lembre-se: o payload define o efeito.
PEGA ESSA DICA!
Ao analisar um payload de SQL Injection, identifique o comando SQL que ele tenta manipular. Se o payload contém or, --, ' ou ", ele provavelmente tenta alterar a lógica de uma consulta SELECT (bypass). Se contém ;, DROP, INSERT, UPDATE, DELETE, ele tenta executar comandos adicionais. Essa distinção é fundamental para responder questões sobre o efeito do ataque.
Gabarito: letra D — o payload " or " " = " tem o potencial de retornar todos os usuários do sistema.