N8 DVWA SQL Injection (Blind) SQL注入(盲注)

一、概念

由于服务器在后端对请求的返回结果进行了截断处理,我们不能直截了当的看见服务器反馈的各种信息。所以,我们通过页面是否能成功返回,返回过程是否有延迟等间接的反馈来达到SQL注入的目的。

盲注分类:基于时间型、基于布尔型。

二、Low级别

1.代码审计
在这里插入图片描述
我们可以看见,这里后端将参数直接传递到SQL查询语句中,并未做任何处理。
在下面将系统的反馈信息修改为两段话。这让我们无法直接看到详细的参数。

2.尝试测试

下面我们使用sqlmap进行测试。
首先使用Burpsuite抓取提交的数据报文。
在这里插入图片描述
将数据报文保存到txt文件中。
在这里插入图片描述
输入:sqlmap -r sql_low.txt -p id --level=5 --risk=3 --dbs
在这里插入图片描述
成功爆出数据库。

三、medium级别

1.代码审计
在这里插入图片描述
这里我们可以看见,以POST请求的方式将参数发送至后端,同时使用了mysqli_real_escape_string()函数对参数进行了转译。然后将处理后的参数带入查询语句中。同时,将系统反馈的信息替换为两句话。
2.尝试测试
同样,我们使用sqlmap进行检测,重复Low级别的操作。
sqlmap -r sql_medium.txt -p id --level=5 --risk=3 --dbs
在这里插入图片描述
这样,我们就成功将medium级别的数据库成功爆出。

四、high级别

1.代码审计
在这里插入图片描述
这里我们可以看见,将cookie中的id作为传递参数,同时没有进行过滤。但如果查询错误,会随机延迟几秒钟。这样,我们的根据时间的盲注就不能准确判断了。

2.尝试测试
同样的,我们可以使用sqlmap将其跑出。重复Low级别的步骤。
sqlmap -r sql_high.txt -p id --level=5 --risk=3 --dbs
在这里插入图片描述
成功跑出数据库列表。

五、impossible级别

1.代码审计
在这里插入图片描述
这里我们可以看见,使用了token防止CSRF。
同时使用了get进行参数传递,使用PDO技术对参数进行处理后,再将参数放入SQL查询语句当中。
这里,我们就没有办法进行SQL注入了。

六、防御

1.过滤用户输入
2.使用预编译处理SQL语句(PDO、sqlparameter)
3.使用owasp等安全的sql处理API。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

尐猴子君

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

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

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

打赏作者

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

抵扣说明:

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

余额充值