Olá, sou um cracker nesta posição. Vou falar sobre a ocorrência de vulnerabilidade de bypass, que é uma das vulnerabilidades usadas por todos que hackeiam pelo menos uma vez na vida, e como ela pode ser evitada.
Em primeiro lugar, a vulnerabilidade bypass consiste em configurar consultas de banco de dados em linguagem php em um ambiente inseguro. Portanto, é uma espécie de vulnerabilidade de "injeção de SQL" .
Agora eu quero que você olhe para a variável chamada $check nesta foto. Como nenhuma filtragem é aplicada nesta consulta, ela não filtra as variáveis, não importa o que esteja escrito nela.
Por esse motivo, posso executar uma consulta mysql nele.
Como visto na tabela mysql acima, nosso nome de usuário e senha são normalmente admin. Agora vamos fazer login com essas informações.
Eu tive que colocar duas fotos porque a página foi atualizada, eu poderia usar jquery(ajax) , mas não há necessidade disso, mas como você pode ver, está logado. Atualmente, o único membro no banco de dados é admin, mas como posso escrever comandos sql nesta consulta $check , nome de usuário e senha posso fazer com que o valor da e user_pass seja qualquer coisa. Como faz? exatamente assim
PHP:
'=' 'or'
Agora, este artigo evolui para um significado que pode ser qualquer coisa na linguagem sql. Vamos tentar isso agora.
Como você pode ver, nossa tentativa foi bem-sucedida, embora não haja nenhum membro '=' 'ou' no banco de dados . Então, como podemos evitar isso? Para evitar isso, podemos usar uma consulta com ponto de interrogação em vez de uma consulta direta porque esses tipos de consultas filtram comandos sql e muito mais.
Versão editada do nosso código:
Sim, como você notou, usamos a função prepare arrow( ok) em vez da função query arrow(ok) anterior porque as consultas com pontos de interrogação só estão disponíveis no método prepare , infelizmente não no método query. Também adicionamos uma função arrow(ok) chamada execute à linha inferior e, com a ajuda dessa função, ?à instrução $db->prepare(...) ? Descartamos os valores em seus lugares. Podemos pensar nos pontos de interrogação como
pronomes em turco. Agora vamos tentar nosso teste de segurança anterior novamente.
Como você pode ver, nosso usuário registrado ainda está trabalhando, vamos ver qual é a situação.
Sim, como você pode ver na foto, obtemos o resultado de que você acabou de efetuar login com sucesso, mas agora obtemos a saída de que houve um erro durante o login. Conseguimos fechar a lacuna.
Cheguei ao fim desta posição. Nesta posição , aprendemos por que ocorre o gap de bypass e como fechá-lo.
Obrigado por ler