Ignorar autenticação usando injeção de SQL na página de login
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.
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.
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.
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva