sql注入数据集_sql注入二 ——数据库信息判断

c137a39a50fda29165c37c42932a8c32.png

3.1常见的sql注入利用技术

3.1.1使用堆叠查询

堆叠查询指的是在单个数据库连接中执行多个查询。

3.2识别数据库

3.2.1 常见系统架构组合识别

Asp和.net通常使用sqlserver

Php通常使用mysql或者postgresql

Java通常是oracle或mysql

Iis服务器是基于windows的架构,后台数据库有可能是sqlserver

Apache服务器,可能使用开源数据库mysql或postgresql

3.2.2 非盲跟踪

大多数情况下想识别数据,只需查看一条足够详细的错误信息即可。不同数据库错误信息也不同。

例如:添加一个单引号使数据库报错。

5e794bf99cbc6e1f024a6cd68a1a8940.png

通过报错信息,就能很轻易判断出是mysql数据库。

c263f3bc4f2d572919815fe56540b479.png

如果出现类似错误说明。服务端代码没有对数据库查询语句进行错误判断。这样是非常危险的,直接将服务器文件目录返回给了用户。

进行错误判断的代码实列:

690c6a52035b23c7451618b92d842e45.png

其他类型数据库报错信息,如果自己无法判断,google搜索一下,就可以查询到。

3.2.2.1 获取标志信息

从错误信息中,我们可以获取很多的数据库信息,但是这样还不够。

我们可以使用数据库查询函数进行,更多的查询。

6a769240fe5e8922b53509b71c93f040.png

例如:对于mysql数据库,执行select version();

f97222d9cff6a032bb7e05df9d970276.png

即可查看数据库版本。还可以进一步查看用户,用户权限等等

3.2.3 盲跟踪

如果应用不直接返回你所需 的数据,就需要采用其他方法。这种方法基于不同数据库所使用的sql语句上的细微差异。最常用的技术就是利用不同数据库在连接字符串上的差异。

3.2.3.1 连接字符串判断数据库

90851727b9b12b379d24122bae9ba9ce.png

该查询对大多数数据库,查询结果都一致,当如果将字符串分成两个字串,不同产品会有不同结果。

d75355c6bf64a229811ff76d8345f8de.png

3.2.3.1 针对mysql数据库:

1. select concat('str','ing')

c808116b2f92a6187c34ced2b062a522.png

使用concat()函数时,需为数字型注入

6fe692d499e9e2652a8fe98f9dc8c241.png

2. select 'str' 'ing'

d9200efcfdf54f7fac35a01490f72f5f.png

构造payload过程中需时刻注意闭合问题。

3.2.3.2 数字函数判断数据库

651e4a9ebeddc70e6f6acb7f23f8fbfb.png

3.2.3.3 使用特定的sql结构

面对mysql可以使用三种不同的方式来包含注释。

1)#

2)--

3)/**/

针对第三个注释如果在第一个*后面加一个!,后面再跟上数据库版本编号,那么该注释将被解析成带代码。

例如:

select 1 /*!40119 + 1*/

返回结果:

2(如果mysql版本为4.01.19或更高版本)

1(其他情况)

这里我版本为5.5.53。只能返回1.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值