Mysql Case Sensitive Problems
Last updated
Last updated
Ao efetuar comparações no mysql normalmente utilizamos:
Bom, o mysql fez o que pedimos, porém observe esse outro comportamento:
Preste atenção no "HK" em maiúsculo, o mysql retornou o resultado mesmo assim
Agora vamos observar isso em uma aplicação de teste (vou utilizar o mysqli, porém o mesmo comportamento se aplica na utilização do PDO, pois o erro está no mysql e não nos meios de consulta que utilizamos para se comunicar com o banco de dados):
A aplicação simplesmente verifica se o usuário passado é igual a "ghosthk", se for ele vai exibir "WELCOME ADMIN" caso não ele exibe "YOU NOT IS ADMIN". O que vai acontecer é que irei passar "gHostHK" como usuário e ele irá retornar "WELCOME ADMIN":
Agora vamos ver isso em um ambiente mais próximo da realidade (utilizarei uma fortress do HTB):
A aplicação irá verificar se o usuário solicitado para criar é o igual a "elonmusk", se for igual ele dará erro, se for diferente ele irá criar o usuário, ou seja, podemos criar um usuário "eloNMusk"
Se o usuário for igual "elonmusk" ele nos deixa acessar a feature de download. Porém repare na comparação, essa condição retornará resultado se criamos um usuário chamado "eloNMusk".
Criei e entrei com o usuário:
Agora vamos acessar a rota "download":
Pronto, conseguimos bypassar a verificação!
E como podemos corrigir? Simples, basta efetuar a query utilizando BINARY, como no exemplo a seguir:
Existem outras formas também, siga o link para exemplos:
Obrigado por ler até aqui!