內聯注入和堆疊注入(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去獲取系統中的數據,具體如何操做?

相關文章
相關標籤/搜索