黑盒下的SQL注入数据库判断

前言

在平常的一些众测项目中,遇到的数据库大部分可以分为3种:Mysql、Mssql(sqlserver)、Oracle。无论是在绕WAF还是读取数据库相关信息时,都需要判断当前的数据库类型,当注入为盲注时,就不能简单的通过报错信息判断当前数据库类型,所以这里简单介绍一下黑盒该如何快速判断数据库类型。

判断手法

数据库中经常会用到and、or这类逻辑判断符,Mysql中就有对这类逻辑处理的平替符号。分别是:&&、||

select * from user where id=1 and name='a'; ———— select * from user where id=1 && name ='a'

select * from user where id=1 or name='a'; ———— select * from user where id=1 || name ='a'

在sqlserver中不支持&&和||这两个逻辑运算符,所以会直接提示报错

select * from user where id=1 && name ='a' ————Line 15,Incorrect syntax near '&'.

oracle中是支持&&和||的,但是他们的用途并不是替代and和or,||是作为concat连接字符串用的一个符号

在这里插入图片描述

而&&则是作为一个变量引用符,在SQL的命令行可以用DEFINE去定义后调用,例如:

DEFINE var_name = 10;  
SELECT * FROM your_table WHERE id = &&var_name;

这种模式在其他一些客户端调用是不支持的,只有在SQL*Plus这种类似的客户端才支持。

结论

通过上面三种判断手法,可以知道直接通过||就可以判断当前使用的数据库了,不需要用到函数也可以直接判断。

  1. 当||在使用过程中作为逻辑运算符进行解析的话,那么就是mysql数据库
  2. 当回显不对或报错时则为sqlserver
  3. 如果被解析为连接符,把两个字符连接成字符串则为oracle
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值