NoSQL Injection
Autor: NGIRIMANA Schadrac Plataforma: PicoCTF Categoria: Web Exploitation Dificuldade: Média
Desafio
Este desafio explora uma vulnerabilidade de NoSQL Injection para obter acesso ao sistema sem credenciais válidas. O objetivo principal é encontrar a flag utilizando NoSQL Injection.
Solução
1. Análise inicial
Ao acessar o site, foi identificado um formulário de login que solicita email e senha.
No console do navegador, é exibida uma mensagem indicando que, após um login bem-sucedido, um token será armazenado no localStorage
.

2. Explorando a vulnerabilidade de NoSQL Injection
Objetivo:
Efetuar o login sem fornecer credenciais válidas, explorando uma vulnerabilidade de NoSQL Injection.
Exemplos de NoSQL Injection:
Utilizando
$ne
(not equal):Email:
Senha:
Esse payload ignora qualquer validação ao verificar que o valor não é nulo.
Usando
$gt
(maior que):Email:
Senha:
Permite valores que sejam "maiores" do que uma string vazia, efetivamente ignorando verificações.
Forçando condições verdadeiras com
$or
:Email:
Senha:
Esse payload verifica múltiplas condições, aceitando o login se uma delas for verdadeira.
No desafio foi utilizado:
No campo email:
E no campo senha:
Essa abordagem foi bem-sucedida e confirmou a vulnerabilidade do sistema.
3. Recuperando o token
Após o login bem-sucedido, um token é armazenado no localStorage
. Para acessá-lo:
Abra o console do navegador.
Navegue até a aba Application.
No menu lateral, vá para Storage > Local Storage.
Localize o token armazenado.

4. Decodificando o token
O token encontrado está em formato Base64. Para decodificá-lo:
Copie o token.
Utilize uma ferramenta ou método para decodificação Base64.
5. Flag
Após decodificar o token, a flag será exibida no formato:
Autor da WriteUp
Atualizado