内联注入和堆叠注入(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去获取系统中的数据,具体如何操作?

原文地址:https://www.cnblogs.com/liujizhou/p/11794979.html