sql漏洞注入,Oracle,MongoDB等注入(15)

这个是数据库类型,

前面我以MySQL数据库讲了一些东西,讲了mysql数据库和其他数据库是相互可以举一反三的,学完之后mysql这个注入思路和MySQL是差不多的,基本上后面的这些数据库无非就是注入语句不一样,有特点的不一样,其他的基本是一样,请添加图片描述

 除了access数据库之外,其他数据库大部分思路都是这样的,第一部都是明确注入数据库类型和权限,这个权限就是看它是高权限还是低权限 ,如果是高权限我们可以进行相对应的操纵的,像这个文件读写,命令执行,注册表读取等吗,不过还是要看数据库的,有一个两个或者某一个,最后获取shell就是这个结果,如果是低权限,一般就是明确数据库记录信息的表,数据库基本上都有这个东西,数据库自带这个记录信息的表,这个信息里面就会有数据的表名列名信息,后面就是查询到,获取后台地址登陆,之后那shell权限,这里可能会失败,就在网站里面拿shell的时候可能会失败的情况。所以说一般高权限的话直接进行高权限操纵获取shell,如过不是高权限就那些东西无法执行的再来到上面低权限,进行数据库的读取,在来到后台在到后台里面进行提取shell,最终目的都是为了网站权限。

思维导图就是提供给思路,除了access数据库之外基本上都可以,拿到注入点第一件事就是明确数据库类型和权限,之后要明确一下提交方法,不同的提交方法注入的时候参数类型都要注意,会有注入语上面的不同。

json演示

这个数据包就点开那个赛题与数据后的数据包,很明显是json格式的数据包,如果要注入的话就在括号内,前面是参数名,要注意的话就要更改引号里面的东西,这就是一个很正常的json的数据格式,传输的参数类型和我们看到的不一样,别的有个等=表示,而他的格式是图中那样的参数名:引号括起来 

那个json格式的双引号要不要闭合?答案是不用闭合(去掉干扰符合)的,双引号对我们没影响,里面是纯数字大概率没有字符,数字也可以有,纯是源码自己搞,但字符一定要有干扰符合,json跟之前看到的数据包格式不一样,但一样也是可能有注入点的。

简要学习各种数据库的注入特点#

数据库:access,MySQL,mssql,mongoDB,postgresql,sqlite,oracle,sybase等

除了access之外他们的组成架构都是大同小异的,先来说一下access,access一般会和asp的脚本搭建组合数据库,现在asp的网站语句很少了

access数据库 

 这一对比就发现access数据比其他数据库要低一个等级,在搭建网站的时候access网站,数据会保存到网站源码下面,就在他网站源码下面,换一个网站也是access,他们是互不相干的没有关系,像我们之前提到过跨库注入,mysql下面就可能存在数据a,数据库b,就可以通过数据a获取到数据库b信息,access就没有,因为他的数据库是独立村存在的,每一个网站就是自己的,不和其它网站相关,没有任何关系。mysql这种就不一样,他们在mysql数据库下面还有其他数据库,每一个数据库对应一个网站,同一归mysql数据库管,而access独立存在各管各的,也造成了在注入方面的不同,access的是唯一的,不需要获取名字,只有access在他下面获取表名等等,而在注入mysql的时候先获取数据库名,在当前数据库下注入表等等,除了结构有区别之外,还有个区别就是,access数据库没有像其他数据库里面那些功能,比如MySQL里面有一些函数,有些函数可以文件的读写操作,相应的的碰到了注入可以享受相应的功能,MySQL就可以文件读写,access就不行,本身就没有文件读写的操作。

话又说回来,为什么要区分数据库,因为数据库不一样,功能不一样,注入的时候攻击方式不一样,比如access没有文件读写,在access注入的时候就不会考虑到文件读写这一个操作,同样在其他数据库里面就可以考虑,因为他们有这一个功能,具体有没有直接在网上搜索,进行这个操作的前提是否有这个权限,是否是数据库的管理员,这个注入点是否享有权限。

mysql注入如何判定一个注入点的权限,数据库配置文件里面定义了谁链接数据库操作,谁链接了就享有谁的权限,root用户链接就享有了root权限。

学完mysql之后其他的就好理解,无非就是一些小区别,注入语句区别,再有就是功能有区别,高权限mysql可以文件读取,到其他数据库里面高权限就可能不是文件读取,是其他的一些读取或者功能,思路都是一样的,高权限可以进行这个操作低权限不能进行。

access数据库演示  墨者靶场

 先用order by去比对,比对到错误的哪一个前一位就是要输入的数字,因为access没有那种像MySQL中记录所有表名列名信息的表,所以只能盲猜一下数据库名,有就会报出数字,没有会报错,

 之后再猜,猜不出来了,就只能用工具去跑出来,列名实在不知道,跑出来是passwd

就有了需要的结果,这就是很简单的access。

sql server数据库演示  墨者靶场

 

用工具扫一下,这个是sql server界面

这是用工具扫的mysql数据库的下面的,功能是不一样。

这个获取的信息还可以搞别的数据库,就类似获取的数据库名,

 

 获取数据就像是mysql里面获取表名后获取列名,在获取想要的数据,用户功能也都是这样子操作啥的,mysql有的都跟mysql差不多,比如文件写入就差不多,写入失败的原因比较少第一个就是有防护软件,第二个就是权限问题,内置的功能也有问题,把这两个功能禁用,或者删除掉,这个原因是最多的。

mssql数据库注入类型,和MySQL差不多,第一步就是判断数据库类型,判断好之后判断order by

 判断myssl数据库的判断语句的原理,是判断是否有这个myssl特有的数据库。

下面的流程就和MySQL数据库大同小异了,获取数据库版本之后数据库名,表名,列名,之后在获取想要的信息这样子就可以。直接去百度搜注入流程的语句复制粘贴一下就好。

PostgreSql数据库演示, 墨者靶场

也是直接在网上搜注入语句,这个直接用sqlmap工具打的

sqlmap

 

之后再找是那个数据库,

获取完数据库名在获取表名。

 

 之后在获取表里面的列名

 

获取列名里面的内容

 名字和密码都获取到了。

Oracle数据库注入 (墨者)

这个其实也是差不多的,打开测试靶场 

 没有文件写入是因为数据库没有这个功能,是数据库决定的,有这个功能才行,但是都能进行命令执行,用命令写一个不就行了,还管什么文件读写,直接在网上搜oracle注入语句进行,没有什么太大区别,正常的流程执行。

MongoDB 数据库 (墨者靶场)重点讲一下

他有很大区别,在有在ctf,红蓝对抗里面喜欢搞这种,因为mongodb喜欢python去搭建的web应用去搭建的数据库类型,用其他数据库也可以搭建,比较火的一个数据库。

他的sql语句很不一样,

 注入的时候也会有外面那两个括号其干扰,mongodb数据库的话用工具是用不了的,这也是今天要讲的另外一种东西,简要学习各种注入工具使用的指南,熟悉工具支持的数据库,注入模式,优缺点等等 这个就算是一个缺点,sqlmap也不支持,

手动注入mongdb数据库

 后面content 1是闭合后面那些东西的

这获取的所有列名

 

 

解释一下数据的意思。源代码我们改变不了,这个注入的是他改变了注入格式改成json的格式,和mongdb相似

mongodb数据库就是数据库注入语句组合上面有点问题,要明白数据库他那个条件就是那个值,在提交注入的时候数据库里面查询的时候,他是一个列表形式去提交进去的,注入的时候要闭合前后的干扰符号,而且这个符号还要括号和中括号,很少有工具能支持mongodb。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MongoDB是一种面向文档的数据库,它可以使用类似于JSON的BSON格式存储数据。在MongoDB中,注入攻击通常是通过插入恶意的BSON数据来执行恶意操作。这种攻击可能包括在查询中插入恶意代码,在数据库中修改或删除数据,或在数据库中插入恶意数据。为了防止MongoDB数据库受到注入攻击,应该使用参数化查询,并严格验证用户输入。应用程序应该使用最小特权原则,只给予用户必要的访问权限。 ### 回答2: MongoDB数据库是一种非关系型数据库,使用BSON(Binary JSON)格式存储数据。与传统的关系型数据库不同,它具有一些独特的特性,但也存在某些安全风险,包括注入攻击。 注入攻击是一种常见的网络攻击方式,利用输入数据未经过滤或验证的漏洞,将恶意代码注入到应用程序中,从而影响数据库或应用程序的运行。在MongoDB中,注入攻击可以通过以下方式实施: 1. NoSQL注入:由于MongoDB使用的是非结构化的BSON格式,而不是SQL语句,所以传统的SQL注入攻击在MongoDB中可能无法直接应用。然而,攻击者仍然可以通过恶意数据注入来影响查询操作。例如,攻击者可以在输入中添加MongoDB查询语言(如JS代码),以执行未授权的操作或返回敏感数据。 2. 对象注入MongoDB允许将JavaScript嵌入到数据库查询中,这也给了攻击者利用的机会。如果应用程序没有正确过滤或验证用户输入,攻击者可以通过注入恶意的JavaScript代码,来执行任意操作或篡改数据。 3. 路径遍历:在MongoDB中,可以使用点符号(.)来引用嵌套文档的字段。攻击者可以利用此特性来进行路径遍历攻击。例如,如果应用程序没有对用户输入进行正确的过滤和验证,攻击者可以构造恶意查询,通过遍历路径来访问其他集合的数据,从而窃取敏感信息。 对于防止MongoDB注入攻击,以下是一些建议: 1. 输入验证:应该对用户输入进行严格的验证和过滤,确保输入的数据符合预期的格式和范围。可以使用正则表达式或预定义的输入模式来限制输入。 2. 参数化查询:应使用参数化查询或绑定变量来构造数据库查询,而不是将用户输入直接拼接到查询语句中,以防止注入攻击。 3. 最小权限原则:应该为应用程序的数据库用户分配最小的权限,只允许其执行必要的操作,并限制对敏感数据的访问。 4. 安全配置:定期检查MongoDB实例的配置,确保已经采取了适当的安全措施,如强密码策略、访问控制列表等。 综上所述,MongoDB数据库可以受到注入攻击的风险,但通过合理的安全措施和最佳实践,可以减少这些风险并保护数据库的安全。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值