SQL盲注

文章介绍了SQL盲注的概念,包括基于布尔和时间的两种盲注类型。它详细阐述了如何利用IF、LEFT、RIGHT等函数以及SLEEP和BENCHMARK延迟函数进行探测和判断。文中还提供了基于布尔和时间的盲注实例,展示了如何在无错误提示的情况下推测数据库信息。
摘要由CSDN通过智能技术生成

SQL盲注

  • 在SQL注入过程中,SQL语句执行后,选择的数据不能回显到前端页面此时需要利用一些方法进行判断或者尝试,这个过程称之为盲注。
  • 在盲注中,攻击者根据其返回页面的不同来判断信息(可能是页面内容的不同,也可以是响应时间不同)。一般情况下,盲注可分为两类:
    • 基于布尔的盲注(Boolean based):某些场合下,页面返回的结果只有两种(正常或错误)。通过构造SQL判断语句,查看页面的返回结果(True or False)来判断哪些SQL判断条件成立,通过此来获取数据库中的数据。
    • 基于时间的盲注(Time based):又称延时注入,即使用具有延时功能的函数sleep、benchmark等,通过判断这些函数是否正常执行来获取数据库中的数据。

简单说就是你输入正确或者错误没有提示信息,也没有任何报错信息,然后才进行盲注。

条件语句类型

Microsoft SQL Server:IF (‘a’=‘a’) SELECT 1 ELSE SELECT 2
MySQL:SELECT IF(‘a’,1,2)
Oracle:SELECT CASE WHEN ‘a’='a’THEN 1 ELSE 2 END FROM DUALSELECT decode(substr(user,1,1),‘A’,1,2)FROM DUAL
PostgreSQL:SELECT CASE WHEN (1=1)THEN ‘a’ else 'b’END

常用函数

if()函数

语法:if(判断语句,参数1,参数2)
在这里插入图片描述
不难看出,如果第一个判断语句正确,那么就返回参数1,否则返回参数2。

left()、right()函数

功能:用于从左到右截取指定字符串个数的字符串。
在这里插入图片描述
right()函数同理。

substr()、substring()函数

功能:从指定位置开始,截取字符串指定长度的子串。
语法:str(string,len)、str(string,pos)、substring(str,pos)或substring(str,pos,len)。
参数:str:要操作的字符串;pos:提取子串的开始位置;len:指定要提取子串的长度。
在这里插入图片描述

ASCII()、ord()函数

功能:返回字符串最左边字符的ASCII码值。
在这里插入图片描述

CAST()、CONVENT()函数

功能:获取一个类型的值,并产生另一个类型的值
语法:cast(value as type)、convert(value、type)
可转换类型:二进制,字符型,日期,时间,浮点数…
在这里插入图片描述

睡眠函数sleep()

功能:让语句延迟一段时间,执行成功之后返回0。
语法:sleep(N),N代表延迟的时间。
在这里插入图片描述

延迟函数benchmark()

功能:让某语句执行一定的次数,执行成功之后返回0。
语法:benchmark(number,oper),即让oper执行number次。
在这里插入图片描述
md5()是对括号中的内容进行md5运算。

基于布尔类型的盲注实操

首先进入sqli的Less-8:然后发现这是一个没有错误提示的页面,而且也没有什么回显位置,只有一行字。
第一步:要先判断输入是什么类型:
首先测试id=1和id=1’,发现当输入1’的时候,页面没有任何显示了:
在这里插入图片描述
可以理解为出现了错误,这时猜测可能是数字型的,然后使用and1=1和and1=2进行测试:
在这里插入图片描述
发现即使and 1=2也没有出现任何错误,就是页面依然存在,这里可以认为输入是一个字符串类型,把and1=2当作字符串进行输入了,原语句可能是:select * from XX where id=‘AA’;第一步已经知道输入时字符串类型了,接下来再去想这个表有多少列,可以使用order by语句进行判断:
在这里插入图片描述
这里可以发现,现在输入4的时候没有任何显示,可以理解为这个表没有4列这么多,直到输入3的时候开始有显示,则可以推断出这个表有三列。接下来再进行判断这个库是什么,这里因为没有任何回显,也没有什么报错,怎么找呢?这里有一个思路,每个字符都有自己的ASCII编码,可以通过判断每个字符的ASC编码的值,然后进行判断,这样的话工作量就比较大了,但也不失为一个好办法:
在这里插入图片描述
使用二分法可以判断,但是如果库名足足有20个字符这么长,那么就工作量太大了,如此机械且重复的工作,指向一个工具,它叫做BurpSuite,可以通过设置padload还有攻击方式,然后我们观察结果反馈就可以直到最终的结果:请添加图片描述
请添加图片描述

请添加图片描述
在这里插入图片描述
通过观察回包的长度,就可以大体推断具体的数值。

基于时间的盲注实操

精髓就是sleep函数,根据延迟的时间对结果进行判断,其它还是按照步骤进行。
添加了单引号或者双引号,and 1=1,或者and1=2之后都没有出现什么错误,所以猜测可能输入的是字符串,然后将and1=2包含了进去,所以才没有出现任何错误:
在这里插入图片描述
接下来进行引号的闭合,然后再进行测试:
在这里插入图片描述
发现使用单引号之后,界面输出是很慢的,也就表示sleep函数生效了,所以确定是单引号闭合。

在这里插入图片描述
用以上语句判断库的长度。
接下来就是破解每个库的字符真实数值了:
在这里插入图片描述
接下来就是表名,先进行长度的判断:
在这里插入图片描述
再进行字符的判断:
在这里插入图片描述
这里就是查找库security库下的表名,工作量非常大。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
DVWA(Damn Vulnerable Web Application)是一个用于练习 Web 安全技术的漏洞应用程序。其中包含了多个不同类型的漏洞,包括 SQL 盲注SQL 盲注是一种利用 Web 应用程序中存在的 SQL 注入漏洞来获取数据库信息的攻击技术。在 DVWA 中,你可以通过以下步骤进行 SQL 盲注的高级练习: 1. 登录 DVWA:在浏览器中访问 DVWA,并使用提供的用户名和密码登录。 2. 寻找 SQL 注入点:在 DVWA 中,你需要找到存在 SQL 注入漏洞的输入点。这可以是登录表单、搜索框或其他用户输入的地方。 3. 确定数据库和表名:使用不正确的输入来尝试触发错误,并尝试从错误消息中获取有关数据库和表名的信息。这可以帮助你构建有效的注入语句。 4. 构造注入语句:根据你获取到的数据库和表名信息,构造有效的注入语句。在高级盲注中,你可能需要使用一些技巧来绕过过滤和限制。 5. 判断注入结果:通过观察应用程序的响应,判断你的注入语句是否成功执行。你可以观察页面内容、错误消息或应用程序的行为变化。 6. 提取数据:如果注入成功执行,你可以使用 UNION SELECT 或其他技术来提取数据库中的数据。通过逐渐调整注入语句,你可以获取更多敏感信息。 请注意,在进行 DVWA 或任何其他漏洞练习时,遵守法律和道德规范。仅在授权的环境中进行测试,不要攻击未经授权的系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小刘不忙!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值