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去获取系统中的数据,具体如何操作?

  • 相关阅读:
    tensorflow 2.0 学习 (十) 拟合与过拟合问题
    tensorflow 2.0 学习 (九) tensorboard可视化功能认识
    tensorflow 2.0 学习 (八) keras模块的认识
    tensorflow 2.0 学习 (七) 反向传播代码逐步实现
    tensorflow 2.0 学习 (六) Himmelblua函数求极值
    tensorflow 2.0 学习 (五)MPG全连接网络训练与测试
    arp协议简单介绍
    Pthread spinlock自旋锁
    线程和进程状态
    内核态(内核空间)和用户态(用户空间)的区别和联系·
  • 原文地址:https://www.cnblogs.com/liujizhou/p/11794979.html
Copyright © 2011-2022 走看看