Passo a Passo SQL Injection
O que é SQL Injection?
SQL Injection (Injeção de SQL) é uma das falhas mais conhecidas e exploradas na segurança de aplicações web. Ela permite que um invasor interfira nas queries SQL executadas pelo sistema, podendo:
- 
Obter informações confidenciais (usuários, senhas, emails, etc.); 
- 
Modificar, excluir ou inserir dados; 
- 
BURLAR autenticação (login); 
- 
Obter acesso total ao banco de dados; 
- 
Em alguns casos, até executar comandos no sistema operacional. 
⚠️ Importante: SQL Injection não depende da linguagem (PHP, Python, JavaScript, etc.) nem da versão do banco.
A falha está na falta de validação e tratamento dos dados de entrada pelo desenvolvedor.
Como acontece a SQL Injection?
Comunicação entre cliente, back-end e banco de dados:
- 
O usuário interage com a aplicação (por exemplo, preenchendo um formulário de login). 
- 
O back-end (código da aplicação) pega esses dados e monta uma query SQL. 
- 
A query é enviada ao banco de dados, que processa e responde. 
- 
Se não houver validação, o invasor pode injetar comandos SQL no meio dessa quer 


Exemplo de Funcionamento
Cenário:
- 
Backend em Python (mas poderia ser PHP, JS, Java etc.) 
- 
Banco de dados MySQL 
- 
Tabela de login: users
- 
Campos: usernameepassword
Código (com falha):
| # Atenção: esse código tem falha proposital para estudo query = f"SELECT * FROM users WHERE username='{username}' AND password='{password}';" | 
Se o usuário digitar:
- 
username: admin' --
- 
password: qualquercoisa
A query gerada será:
| SELECT * FROM users WHERE username='admin' --' AND password='qualquercoisa'; | 
O -- comenta o resto da query. O banco ignora a checagem da senha. Resultado: login sem senha.
Vamos imaginar um exemplo parecido:
- 
O site tem um campo de login com username e password 
- 
O usuário digita: - 
Username: daniel
- 
Password: admin
 
- 
- 
O back-end, por exemplo em Python, vai montar uma query assim: 
Se houver uma falha de validação, o invasor pode injetar algo assim:
- 
Username: admin' --
- 
Password: (qualquer coisa) 
O back-end vai interpretar:
O que acontece?
O comentário -- ignora o restante da query, burlando a senha.
Tipos de SQL Injection
Existem vários métodos e técnicas que um atacante pode usar. Vamos conhecer os principais:
SQL Injection Clássica / Injeção Direta
| ' OR 1=1 -- | 
Query resultante:
| SELECT * FROM users WHERE username='' OR 1=1 --' AND password=''; | 
1=1é sempre verdadeiro → retorna todos os usuários.
Injeta diretamente na cláusula WHERE, alterando a lógica da query:
Boolean-Based Blind SQL Injection (Cega baseada em resposta)
O atacante não vê os dados diretamente, mas percebe mudanças no comportamento da aplicação (página muda ou não).
Teste:
| ' AND 1=1 -- | 
Se a resposta for diferente de:

