我正在尝试增加我对SQL和NoSQL注入攻击的知识,我突然想到我怎么可能向NoSQL数据库中注入一些东西,在这种情况下,MongoDB.There在互联网上有很多关于注入攻击的不同方式的文章,并试图建立一个我自己的攻击示例,它只是做了其他示例所做的事情,但我做了id只是为了证明我自己的眼睛。然而,似乎我尝试的几乎所有东西都不能用于注入目的(这很好)。想知道是否仍然存在注入攻击的问题,或者互联网上只有旧东西。我将发布我自己的实现,以防我遗漏了一些东西:
所以它是包含一个集合和一个文档的NodeJs和MongoDB。这种情况下,当用户尝试登录时,文档中包含用户名和密码。
下面是我的NodeJs实现:
app.post('/', async (req,res) => {
let response = {
withoutProtection: false,
withProtection:false
};
const query = {
username: req.body.username,
password: req.body.password
};
var user = await User.findOne(query);
if(user){
response.withProtection = true;
}
res.send(response);
})下面是用户模式:
const UserSchema = new mongoose.Schema({
username:{
type: String
},
password:{
type: String
},
})所以我尝试了$ne=1、$gt、sleep()等不同的方法。我将在这里留下一个查询示例:{username: ' admin'|| '1'=='1', password: ''}
发布于 2020-06-23 03:03:55
如果用户输入被结构化地合并到查询中,则查询注入是可能的。例如,如果用户可以指定一个散列,该散列将按原样合并到查询中。
如果用户输入是字符串化的(这是web应用程序中经常发生的),并且运算符由应用程序固定,使得用户输入只能成为值(并且值类型是受控的,即它们都是字符串),则应用程序通常不会受到查询注入的影响。
请注意,SQL查询是一个字符串,而MQL查询是一个哈希。因此,字符串输入可以简单地合并到SQL查询中,但不会太多地合并到MQL查询中。
https://stackoverflow.com/questions/62519699
复制相似问题