A injeção de SQL é uma técnica usada para explorar dados do usuário por meio de entradas de páginas da web, injetando comandos SQL como instruções. Basicamente, essas instruções podem ser usadas para manipular o servidor da web do aplicativo por usuários mal-intencionados.

  • A injeção de SQL é uma técnica de injeção de código que pode destruir seu banco de dados.
  • A injeção de SQL é uma das técnicas mais comuns de hacking na web.
  • A injeção de SQL é a colocação de código malicioso em instruções SQL, por meio de entrada de página da web.

Pré-requisitos: Comandos SQL básicos .

Verificando o formulário para injeção de SQL:

A maneira mais simples é colocar “'” (sem aspas) no campo de nome de usuário ou senha. Se o servidor retornar qualquer tipo de erro de SQL na resposta, o site provavelmente está vulnerável ao ataque de injeção de SQL.
 

verificando injeção de SQL

ISENÇÃO DE RESPONSABILIDADE: Atacar alvos sem consentimento mútuo prévio é ilegal. Este artigo é para fins de conhecimento.
 

Ignorando autenticação:

1. Depois de confirmarmos que o site é vulnerável à injeção de SQL, a próxima etapa é digitar a carga útil apropriada (entrada) no campo de senha para obter acesso à conta. 

2. Digite o comando mencionado abaixo no campo vulnerável e isso resultará em um Bypass de autenticação bem-sucedido.

Select id from users where username=’username’ and password=’password’ or 1=1--+

No comando acima:

  • Uma vez que 1 = 1 é sempre verdadeiro, e combinamos 1 = 1 com um operador OR, agora não temos que saber nome de usuário ou senha, seja qual for o nome de usuário, senha, nosso 1 = 1 sempre será verdadeiro, dando-nos acesso para nossa conta.
  • 'ou 1 = 1 - + (no campo de senha)' antes que o operador OR seja usado para encerrar as aspas simples da senha (ou seja, selecione o id de usuários em que nome de usuário = 'nome de usuário' e senha = 'senha')
  • Para que depois de inserir 'antes do operador OR, nosso comando SQL se torna: Selecione id de usuários onde nome de usuário =' nome de usuário 'e senha =' 'ou 1 = 1– +
  • - + é usado para ignorar o resto do comando. Seu principal uso é ignorar o 'após a senha e se não usarmos isso, obteremos o seguinte erro.
  • Vamos tentar o payload em nosso portal de login (sem escrever - + no final do payload)

Ou seja, se não usarmos - +, então nosso comando sql será: Selecione id de usuários onde nome de usuário = 'nome de usuário' e senha = '' ou 1 = 1 ' 
Por que isso' no final de 1? 

São as senhas que fecham aspas simples. Lembre-se de que já fornecemos aspas simples de fechamento de nossa senha. Mas o comando websites SQL apenas coloca 'no final da nossa senha. (ou seja, tudo o que escrevermos no campo de senha, será armazenado dentro do '' da senha. Suponha que nossa senha seja olá. O comando SQL correspondente a isso será: Selecione o id de usuários onde nome de usuário = 'nome de usuário' e senha = 'olá '. Aqui, não adicionamos as aspas, mas o comando SQL adicionou aspas em nosso campo de entrada). Como o comando SQL coloca 'no final de nosso 1 = 1, nossa missão falha. Portanto, para ignorar a aspa simples de fechamento da senha, usamos - +.

Executando a injeção:

Basta inserir o comando no campo senha ou vulnerável e clicar em login para que a autenticação seja ignorada.

executar o ataque de injeção SQLAutenticação ignorada

Como podemos ver, finalmente quebramos o portal de login e logamos com sucesso.

Nota: Às vezes, alguns sites bloqueiam - +, em tais casos, use #. Ambos fazem o mesmo trabalho.