1.Detecting NoSQL injection
因为是比较简单的nosql注入,所以我猜测的后台查询语句应该是
db.table.find({$where:"category==' "+xxx+" '"});
那么我们可以构造payload为
'||true||'拼接到查询参数后面
这样整个语句就会变成
db.table.find({$where:"category=='Gifts'||true||''"});
前半部分'Gifts'||true已经是绝对为真了,后半部分的||''只是为了不让语句出现语法错误
拼接payload后成功

2.Exploiting NoSQL operator injection to bypass authentication
本关叫我们登录管理员身份,并且给了我们一个普通用户的账号,根据提示应该是让我们直接登录管理员账号不需要去找密码
登录抓包
其校验信息如下

那么还是用上一关的拼接手段,构造password为
"$ne":"666"
这条payload可以匹配密码列中所有不等于666的值
但是经过测试不行,研究了一段时间,发现这题的管理员账户居然不叫administrator
那么我们还要给username写一个payload
{"$regex":"admin*"}
这条payload是匹配admin开头的值
那么最后的payload就是

登录成功,管理员不叫做administrator


最低0.47元/天 解锁文章
180

被折叠的 条评论
为什么被折叠?



