1
resposta

[Dúvida] Como realmente funciona o SQL injection?

Eu vi as aulas do SQL injection, algumas coisas bases eu entendi, mas me surgiram algumas outras dúvidas, como. 1- Como realmente funciona o SQL injection? Eu sei que ele funciona pela linguagem SQL, a gente tem que encontrar uma vulnerabilidade que o banco de dados não esteja protegido e quando inserimos a linguagem SQL e os comentários no final que é o "--" ele simplesmente ignora o fato de não ter colocado a senha e entra. Porque ele entra se não colocamos a senha? Foi uma mágica que ocorreu diante dos meus olhos, quando a menina fez no vídeo haha.

Ele é tão simples que é só encontrar a vulnerabilidade que o banco de dados não está protegido e efetuar esse ataque? Eu não entendi muito bem quando usar e onde usar.

Se alguem conseguir me passar um panorama geral, agradeço!

1 resposta

As formas mais comuns de identificar as vulnerabilidades são:

  1. Testes Manuais: Entradas de Usuário: Inserindo dados nas caixas de texto e formulários para ver como o sistema os trata. Tentando inserir caracteres especiais, aspas simples ou duplas para ver se há algum tipo de manipulação inadequada. URLs e Parâmetros: Analisando as URLs para encontrar parâmetros que possam ser manipulados e modificar esses parâmetros para ver se há algum comportamento inesperado.

  2. Ferramentas de Teste Automatizado: SQLMap: É uma ferramenta popular para automatizar testes de SQL injection. Ela pode detectar e explorar vulnerabilidades automaticamente. Burp Suite: Uma suíte de ferramentas para testar a segurança de aplicações web. A funcionalidade de Proxy e Scanner pode ajudar a identificar vulnerabilidades.

  3. Teste de Union: Tentando usar a instruções UNION para combinar resultados de diferentes consultas. Se o sistema for vulnerável, ele pode retornar informações adicionais.

  4. Teste de Boolean: Introduzindo condições booleanas para explorar se o sistema responde de maneira diferente com consultas verdadeiras ou falsas.

Respondendo à sua pergunta sobre por que o SQL injection funciona mesmo sem uma senha:

Quando você fornece ' OR '1'='1' -- como uma entrada no campo de senha, a instrução SQL resultante se torna algo como: SELECT * FROM users WHERE username = 'algumUsuario' AND password = '' OR '1'='1' --'

O ' OR '1'='1' -- faz com que a condição password = '' OR '1'='1' seja sempre verdadeira. Assim, o sistema autentica o usuário sem a necessidade de uma senha válida.

Em vez de verificar sua senha, cria uma pergunta confusa para o banco de dados, algo como "Existe alguém com esse nome de usuário e senha, ou a senha é '1' é igual a '1'?".

É por isso é como se você tivesse dado um "passe mágico" ao sistema.