material • 21/05/2026

Material introdutório de exploits e SQL Injection

Uma aula sobre SQL Injection e exploiting

por rideckszz

Ffuf

➡️ Fonte principal

SQLinjection e SQLMap

1. Fundamentos de SQL Injection (SQLi)

A Injeção SQL é uma vulnerabilidade de aplicação web crítica que ocorre quando entradas fornecidas por usuários não são devidamente sanitizadas. Isso permite que a aplicação concatene dados arbitrários diretamente em consultas de banco de dados, falhando em distinguir entre os dados inseridos e sintaxe de comandos.

Quando o encapsulamento de uma string é quebrado por caracteres especiais, o banco de dados executa a instrução modificada com os privilégios da aplicação.

1.1. Bypass de Autenticação

Em um cenário clássico de formulário de login, a consulta original no código fonte geralmente possui a seguinte estrutura:

SQL

SELECT * FROM users WHERE username = '$_POST["username"]' AND password = '$_POST["password"]'

Caso uma entrada maliciosa como admin' -- seja inserida no campo de usuário, a instrução resultante enviada ao banco de dados torna-se:

SQL

SELECT * FROM users WHERE username = 'admin' --' AND password = ''

O caractere -- atua como um delimitador de comentário na linguagem SQL. Consequentemente, a verificação da senha é completamente ignorada e anulada, retornando o acesso como o usuário administrador, independentemente da senha informada.

1.2. Categorias de Injeção SQL

A exploração é dividida primariamente pelo método de retorno das informações do banco de dados para o atacante:

1.3. Impactos e Casos de Uso

[!Caution] Nenhuma técnica de prevenção única é infalível. Para a defesa, a implementação mais eficaz é o uso de Consultas Parametrizadas, onde o banco trata a entrada estritamente como dados, nunca como código executável. Além disso, a exploração ativa com ferramentas automatizadas só deve ser feita em ambientes autorizados.

2. Identificação e Exploração Manual

A exploração manual é essencial para validar a vulnerabilidade e entender o comportamento da aplicação antes de utilizar a automação.

2.1. Detecção Básica

A busca por pontos de injeção envolve testar todos os vetores de entrada (parâmetros GET/POST, Cookies, cabeçalhos HTTP):

  1. Inserção de aspas: Adicionar ' ou " e observar se a aplicação retorna um erro HTTP 500 ou stack trace do banco de dados.

  2. Operações lógicas: Inserir ' OR '1'='1' para verificar se ocorre a exibição de dados adicionais não previstos.

  3. Atrasos de tempo:Injetar comandos de sleep para analisar diferenças no tempo de carregamento.

2.2. A Exploração Baseada em UNION

A técnica UNION requer que a consulta injetada tenha exatamente o mesmo número de colunas e tipos de dados compatíveis com a consulta original. O processo de descoberta segue:

Descobrir a quantidade de colunas

Injeta-se a cláusula ORDER BY, incrementando o índice numérico até o banco de dados retornar um erro de ausência de coluna.

Identificar a coluna

Preenchem-se as colunas identificadas para verificar qual delas reflete texto na tela da aplicação.

Mapeamento do Banco

Com a coluna vulnerável identificada, extrai-se a estrutura interna do banco.

[!Important] Após a identificação manual, usamos ferramentas profissionais como o Burp Suite para interceptar requisições ou o SQLMap para automatizar a extração dos dados.

3. SQLMap

O SQLMap é uma ferramenta automatizada de framework aberto que detecta e explora injeções SQL através de força bruta inteligente e inferência avançada.

3.1. Vantagens e Desvantagens da Automação

** Vantagens**Desvantagens
Identifica e explora quase todos os principais SGBDs nativamente (MySQL, PostgreSQL, Oracle, MSSQL, etc).Ferramentas automatizadas geram grandes volumes de tráfego, sendo facilmente detectadas por SOCs
Realiza a exfiltração de dados caractere por caractere, o que seria inviável manualmente.Requisições padronizadas com assinaturas conhecidas são rapidamente mitigadas por WAFs (Web Application Firewalls).
Permite testes simultâneos em parâmetros de URL, formulários POST, Cookies e cabeçalhos HTTP.Pode falhar em rotas de aplicação não padronizadas, exigindo sintonia fina das flags de configuração.

3.2. Casos de Uso

O fluxo básico de trabalho da ferramenta respeita a hierarquia do SGBD: Enumeração de Bancos -> Tabelas -> Colunas -> Dump de Dados.

1. Enumeração Básica -> Método GET

Verifica os bancos de dados disponíveis a partir de um parâmetro de URL.

Bash

sqlmap -u "http://alvo.com/pagina.php?id=1" --dbs --batch

O parâmetro --batch automatiza as escolhas de fluxo da ferramenta, utilizando o comportamento padrão sem exigir interação do operador.

2. Ataque em Formulários de Login -> Método POST

Realiza o parsing da página web, localizando tags HTML <form> e injetando vetores diretamente nos campos de entrada ocultos.

Bash

sqlmap -u "http://alvo.com/login.php" --forms --crawl=1 --dump

A configuração --crawl=1 instrui a de rede interna a buscar alvos adjacentes na mesma página de origem.

3. Injeções Complexas via Arquivo Raw -> Requisição HTTP Bruta

Para alvos onde a injeção ocorre em cabeçalhos (User-Agent ou Cookies) ou em requisições contendo JSON, é possível salvar a requisição interceptada, via Burp Suite, em um arquivo de texto.

Bash

sqlmap -r requisicao_interceptada.txt -p "id_usuario"

O argumento -p força o foco da ferramenta em um único parâmetro, economizando tempo de processamento.

4. Extração de Dados -> Dump

Após mapear a arquitetura, executa-se o download dos dados específicos, visando informações críticas.

Bash

sqlmap -u "http://alvo.com/pagina.php?id=1" -D corporativo -T usuarios -C username,password --dump --start=1 --stop=10

Os controles --start e --stop limitam a extração a um intervalo de linhas, evitando sobrecarga ou demora excessiva em tabelas gigantescas.

5. Evasão de WAF e Ajuste de Agressividade

Quando as requisições padrão são bloqueadas, faz-se necessário ofuscar os comandos e aumentar a intensidade das varreduras.

Bash

sqlmap -u "http://alvo.com/busca.php?q=teste" --tamper=space2comment --random-agent --level=3 --risk=2

6. Modo Wizard

Para operadores iniciantes, a ferramenta disponibiliza uma interface assistida que formula as consultas através de um questionário em linha de comando.

Bash

sqlmap --wizard

4. Principais Flags do SQLMap

Abaixo, encontra-se o detalhamento das flags essenciais para operação:

Alvo e Requisição

Enumeração e Extração

Evasão de Defesas (Avançado)

Mais algumas flags