zoukankan      html  css  js  c++  java
  • 内联注入和堆叠注入(10.30 第三十天)

    内联:

    select * from (select 1 as id)a;

    select * from T1,T3  where T1 userid=T3 userid     (找T1T3 userid相同的数据)

    堆叠:两个SQL语句中间有个分号隔开

    NOSQL注入

    mongoDB介绍和使用

    分布式文件存储数据库,使用C++开发的,可以存储任意数据(文件),允许在服务器端执行脚本,使用JSON形式存储数据{key:value}

    支持的编程语言:PHP ruby python  C++   C#   JAVA  等等

    安装:sudo apt-get install mongodb

    MongoDB启用端口:27017

    管理工具:Navicat

    MongoDB中的一些概念

    数据库--》集合--》文档--》域

     

    MongoDB中可以有多数据库,不同的数据库可以放置在不同的文件中

    show dbs   查看所有数据库

    use admin   切换数据库

    db   当前数据库

    系统数据库:

    admin:相当于root数据库,该数据库是一个高权限的数据库,在该数据库中可以执行全部的命令

    local:存储本地服务器的集合

    config:与数据库的分片有关         分片(数据过大分开存储,在config里面进行说明)

    常用的命令:

    SQLselect * from users;

    Mongodb.users.find().pretty()     查看集合users集合中所有的数据,转换成杰森格式

    创建数据库:use 数据库名

    删除数据库:db.dropDatabase()   删除当前使用的数据库

    查看当前数据库:db

    创建集合:db.createCollection(集合名)

    删除集合:db.集合名.drop()       返回值是true(布尔)

    查看集合:show collections

    db.集合名.insert({k1:v1,k2:v2}) k1k2是域      

    v1v2是域对应的值,其类型如下:

    布尔

    数字

    字符

    浮点数

    数组

    内嵌文档

    null

    删除文档:db.集合.remove({name:"icq"})

    查看文档:db.集合.find()

    更新文档:db.集合.update({被更新的对象},{$set{被更新的内容}})    默认只更新第一条发现的文档

    全部更新需要:db.集合.update({被更新的对象},{$set{被更新的内容}},{muti:true})

    查询文档:db.集合.find()            db.集合.find().pretty()   可读性高

    查询数据-条件:

    $lt => < $lte => <=          $gt => > $gte => >=

    $ne => != $regex   正则         :  =>   =

    等于:{k:v}              小于:{k:{$lt:v}}   db.liu.find({age:{$lt:50}}).pretty

    大于:{k:{$gt:v}}     小于等于:{k:{$let:v}}     大于等于:{k:{$gte:v}}

    正则匹配:db.liu.find({name:{$regex:'h'}})

    多条件用,隔开 db.liu.find({k1:v1,k2:v2})   注意:多条件是与的关系

    或条件:db.liu.find({$or:[{k1:v1},{k2:v2}]})   k1:v1k2:v2是或的关系

    限制查询:db.liu.find({$or:[{k1:v1},{k2:v2}]}).limit(数字)

    跳过前几个来显示查询:db.liu.find({$or:[{k1:v1},{k2:v2}]}).skip(1)      跳过第一列

    排序:db.liu.find({$or:[{k1:v1},{k2:v2}]}).sort({k:1})   按照k来进行升序排序

               db.liu.find({$or:[{k1:v1},{k2:v2}]}).sort({k:-1})    按照k来进行降序排序

    ^a  表示以a开头        a$  表示以a结尾      * 表示任意长度的任意字符       ?  表示一位任意字符

    PHP连接MongoDB

    <?php

    $m=new MongoClient('mongodb://192.168.121.147:27017');

    $db=$m->test;   //选择数据库

    $tb=$db->liu;   //选择集合

    $re=$tb->find();

    注入

    1、使用JS注入MongoDB(在MongoDB$where操作符是可以执行JS语句的。通过使用‘ “ 等闭合查询语句,就可以执行任意的JS代码。)

    username=1';return true;var b='

    password=1

    2、使用重言式注入MongoDB(结合PHP的特性和MongoDB的查询语法)

    3shell拼接注入MongoDB(通过使用 ’  “  等闭合查询语句,插入攻击者需要执行的语句,最后达到攻击的效果,弊端:需要知道数据库中集合的名字。)

    db.messages.find({"author":""});db.messages.insert({"name":"hacker"});db.messages.find({"author":"1   "}).sort({"addtime":-1});

    "});db.messages.insert({"name":"hacker"});db.messages.find({"author":"1

    4、使用BP进行注入攻击获取数据

    需要使用$regex去获取系统中的数据,具体如何操作?

  • 相关阅读:
    Python反射机制
    并发和并行的区别
    I/O模型
    python 字符串零散方法记录
    python 关于占位符格式化
    Python 十进制转二进制、八进制、十六进制
    python中str函数isdigit、isdecimal、isnumeric的区别
    文件的修改
    LF 模块三
    stackoverflow os.path.abspath and os.path.realpath
  • 原文地址:https://www.cnblogs.com/liujizhou/p/11794979.html
Copyright © 2011-2022 走看看