内联注入和堆叠注入(10.30 第三十天)

内联:php

select * from (select 1 as id)a;python

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

 

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

 

NOSQL注入数据库

mongoDB介绍和使用编程

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

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

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

相关文章
相关标签/搜索