sql_1-2_get基于盲注

sql_1-2_get基于盲注(时间,和布尔)

一 . 盲注的概念和类型

1.概念
sql(盲注)是注入攻击的一种,向数据库发生true或false这样的问题,并且根据应用程序返回的信息判断结果,这种攻击的出现是因为应用程序配置为只显示代码问题。

当攻击者利用sql注入漏洞进行攻击时,有时候web应用程序会显示,后端sql查询的返回错误信息。bind sql(盲注)与常规的注入很接近,不同的是数据库返回数据检索方式,若数据库没有输出到web页面,攻击者会询问一先列的true和false问题,强制从数据库获取数据

2.类型 盲注常分为:基于布尔型的盲注和基于时间的盲注 基于时间:常使用睡眠的sql语句手段,探测出存在时间注入 基于布尔:常使用SQL语句探测数据库名的长度,推测,并且猜测出数据库名,及铭感信息

可以观察一下源代码, 如果输入变量正确则返回为页面 如果输入错误则返回为空(典型的盲注)

二. 基于时间的盲注
1.我们通过以下三张图(符号手段)发现并没报错,则我们猜想他是盲注(并且是基于时间的盲注)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.ascii编码

先来了解一下基于时间的语句
if语句判断是否等于115,如果等于115就睡眠三秒钟(当数据库名的第一个字母的ascii编码等于115时,睡眠3秒钟)

substr(database(),1,1)的意思是,取数据库名时,首先从第一个取到第一个。 如果1,1等于1,2,就是从第一个取到第二个

简单的说就是判断数据库名第一个字母的ascii码是否等于115,如果是,就睡眠3秒钟,如果成功睡眠,则代表存在盲注
在这里插入图片描述
3.时间盲注实操
从以下两张图可以看到,加时间注入后响应时间不同
由于页面卡顿,所以回显不怎么好。

总之就是注入睡眠攻击以后,观察响应时间,如果响应时间有一定差距,也就可以证明存在sql盲注(时间)
在这里插入图片描述
在这里插入图片描述

三. 基于布尔的盲注
1.基于布尔的盲注推测
基于布尔的盲注和时间的盲注类似,区别在于没有使用睡眠,而是直接推测数据库的长度或名字。
如图,我们通过数据库查询表得出了:
当猜测数据库名长为8时,MySQL返回正常
当猜测数据库名长为9时,mysql返回空
在这里插入图片描述

同样道理,观察下面两张图,我们将语句拼接到url中,
通过回显可以明显的观察到

当database()等于8时,返回正常
databas()等于9时,返回错误,由此推断,我们的sql成功注入,也可以证明存在布尔盲注

在这里插入图片描述
在这里插入图片描述

四. 使用sqlmap利用盲注漏洞
1.使用sqlmap -h 查看帮助信息
在这里插入图片描述
找到 --technique=TECH
此语法是可以使用基于T时间的盲注,E错误的注入,B布尔注入
默认用了很多钟探测技术

但是如果使用默认利用会很慢很慢
所以最好是找出基于什么样是sql注入

在这里插入图片描述
比如,我们找出了是基于时间的

则我们在url后面添加参数 --technique=T 则 可以基于时间的盲注探测,
布尔和其他的注入也是同样道理
在这里插入图片描述

可以看到正在破解数据库名称
在这里插入图片描述

**

总结:
1.基于盲注不会直接回显,只能使用真和假靠猜测,可以构造各种各样的sql语句
2.当判断出,可以使用真假判断时,则可以确定存在盲注,则可以进行注入
3.通常注入都有waf,所以一般需要配合绕过技术,才能获得数据

**

发布了15 篇原创文章 · 获赞 2 · 访问量 2422

猜你喜欢

转载自blog.csdn.net/weixin_44110913/article/details/103348753