zoukankan      html  css  js  c++  java
  • NoSql注入小测试。

    在传统的 SQL 注入中,攻击者会尝试破坏 SQL 查询语句并在服务器端修改查询语句。使用 NoSQL 注入,攻击可以
    在应用程序的其他区域中执行,而不是在传统的 SQL 注入中执行。此外,在传统的 SQL 注入中,攻击者会使用一个
    标记来发起攻击。在 NoSQL 注入中,在NoSQL注入中,通常存在将字符串解析或评估为NoSQL调用的漏洞。
    NoSQL 注入中的漏洞通常在以下情况下发生:(1)端点接受的 JSON 数据是从 NoSQL 数据库中请求的,以及
    我们能够使用 NoSQL 比较运算符操作查询来更改 NoSQL 查询。
    NoSQL 注入的一个常见例子是注入类似的东西: [{"$gt":""}] 。这个 JSON 对象基本上是说运算符( $gt )大于
    NULL("")。由于逻辑上一切都大于 NULL,因此 JSON 对象成为一个真正正确的语句,允许我们绕过或注入 NoSQL
    查询。这相当于 SQL 注入世界中的[' or 1=1—]。在 MongoDB 中,我们可以使用以下条件运算符之一:
    (>)大于 - $gt
    (<)小于 - $lt
    (>=)大于等于 - $gte
    (<=)小于等于 - $lte
    测试:

    发现注入点没有做什么防护,测试一下语句,在password处修改{"$gt" : ""}}(自己去百度这个含义)

     测试2:

    Node.js 有一个 qs 模块,它具有将 HTTP 请求参数转换为 JSON 对象的特定语法。默认情况下,qs 模块在 Express
    中使用“body-parser”中间件的一部分。
    qs 模块:一个查询字符串解析和字符串化库,增加了一些安全性。[https://www.npmjs.com/package/qs]
    如果使用 qs 模块,如果在参数中使用括号表示法,POST 请求将在服务器端转换为 JSON。因此,看
    起来像用户名 [value] = admin&password [value] = admin 的 POST 请求将转换为 {"username":
    {"value":"admin"},"password":{"value":"admin" }} 。
    这个NoSql使用了qs模块所以可能刚开始的注入方法不好用,我们可以测试一下这个方法。

     测试一下,能不能转换为正常的。

     失败,重新构造payload

    再次构建新的payload

     

    发现自己符号写错了。。最后还是成功了。

    总结一下:NoSql注入大多是利用符号来做绕过,这个类似于关系型数据库中的万能密码,or之类的。。

    后续看一下能不能爆出数据之类的。

    勿做伸手党,勤思考,总能成就一番事业。
  • 相关阅读:
    临时记事本
    D版??班得瑞英文天籁CD13集(下载!!!)
    一个程序员的早上
    使用C#实现Morse码的输出
    面向对象编程的乐趣(TextBox.Text="")
    如何从MS Word的表格中提取指定单元格的数据
    使用Turbo C创建自己的软件包(即创建接口)
    使用C#读取Word表格数据
    一种光栅绘制直线的方法
    关于数据库设计的一个思索这样做是不好的
  • 原文地址:https://www.cnblogs.com/X-caiji/p/11913490.html
Copyright © 2011-2022 走看看