SQL注入的原理与攻防实战第三期

文章详细介绍了SQL注入中的盲注入类型,特别是布尔型盲注入的原理,包括如何通过观察页面变化判断其存在,以及如何利用这种漏洞进行攻击。文章通过DVWA靶场举例,展示了如何通过构造SQL语句和使用工具如BurpSuite来探测数据库信息,包括数据库名、表名等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL注入之盲注入的原理以及应用

盲注入的分类

1.基于布尔型的盲注入

在页面中不会显示数据库信息,一般情况下只会显示对与错的内容。
先简单看一下盲注入的页面,同样还是基于dvwa靶场,并且记得将其设置为low级别。
当我们输入1的时候,回显的界面会与之前有一些不一样,下面两张图是对比,大家可以参考一下:
盲注入
简单注入
当输入-1的时候:
[外链图片转存失败,源站可能有防盗在这里插入!链机制,建描述]议将图片上https://传(imblogcdnimg.cn/2g45d32NPGx6ec704d309867433f77c1.png#pic_center1567)(https://img-如何blog.csdnimg.cn/2e45d326ec704d309867433313f77c87.png#pic_center)]
以上就是大概的盲注入的简单形式。

2.如何判断是否存在盲注入:

输入 SQL 注入检测语句 判断页面是否不一样,如果不一样大概会存在 SQL 注入漏洞 1’and ‘1’='1 一样 1’and ‘1’='2 不一样。(见下图加以区别)。
当输入1’and ‘1’='1:
在这里插入图片描述

当输入1’and ‘1’='2:
在这里插入图片描述
根据上述两图可以判断存在一个布尔型的盲注入。
当然如果返回的内容一致,我们可以利用sql拼接时间延时进一步判断,这个我们之后在细说。

3.利用此漏洞如何对目标实现注入攻击:

布尔型注入的基本原理

布尔型注入攻击,因为页面不会返回任何数据库内容,所以不能使用联合
查询将敏感信息显示在页面,但是可以通过构造SQL语句,获取数据。
布尔型盲注入用到得SQL语句selectif(1=1,1,0)if()函数在mysql是判断,第一个参数表达式,如果条件成立,会显示1,否则显示0。1=1表达式可以换成构造的SQL攻击语句。
现在我们可以进一步的利用PHPmyadmin去从后端的角度来分析一下布尔型注入背后的原理:
在代码框输入select database(),显示如下界面:
在这里插入图片描述
接下来说说如何去刺探完整的表名:
用if函数进行构造selectif(SUBSTRING(database(),1,1)=‘d’,1,0)判断数据库第一个字是不是字符d,如果是返回1否则返回0。
在这里插入图片描述
大致就是上述思路,接下来我们介绍如果在黑盒模式下完成本次注入攻击的实战:也就是完全在dvwa靶场的环境下进行本次实验:首先判断注入,判断完注入就获取数据库的长度,得到长度再查询库名,通过库名再查询表,接着通过表查询字段,最后查询某表指定的数据。

黑盒测试下的实战:

首先:数据库长度的确定:
使用语句 1‘ and if(length(database())>1,1,0)这样一步一步去卡出数据库长度的值。
我们最终得到数据库长度为4
接下来我们考虑如何去进一步利用上述原理去获取数据库的名称:
请添加图片描述
按照上述图片:根据命令 1’and if(substring(database(),1,1)=‘d’,1,0)–+
含义是:如果该数据库的第一个名称是d,则就正常回显,但是由于字符的种类过多,我们下来演示如何利用burp suite去暴力猜解库名:
演示环境:dvwa靶场,火狐浏览器,burp suite,并且要正确设置浏览器代理:
通过对靶场页面的一次提交,burp suite对其抓包:
在这里插入图片描述
接着设置两个变量,一个是库名的顺序,一个是其值:
然后提交到intruder界面
在这里插入图片描述
完成设置后提交攻击:
筛选出200的字段:
在这里插入图片描述
最终得到表名 dvwa

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值