深谈SQL注入(进阶篇:盲注)

一、SQL盲注概述

盲注:即在SQL注入过程中,SQL语句执行查询后,查询数据不能回显到前端页面中,我们需要使用一些特殊的方式来判断或尝试,这个过程称为盲注。

因为盲注是不能通过直接显示的途径来获取数据库数据的方法。因此在盲注中,攻击者根据其返回页面的不同来判断信息(可能是页面内容的不同,也可以是响应时间不同,还可能是报错情况不同,总结分为三类)。

布尔盲注:页面只返回对或者错,存在或者不存在来判断;

基于时间的盲注:通过页面沉睡时间来判断;

报错的盲注:输入特定的语句使页面报错,网页回输出相关的错误信息;从而是我们想要的基本信息。

盲注基本的思路和步骤:

1)判断是否存在注入,注入是字符型还是数字型;
2)猜解当前数据库名—>猜解数据库长度—>猜解数据库名称;
3)猜解数据库中的表名—>库中表的数量—>表的长度—>表的名称;
4)猜解表中的字段名—>表中字段的数量—>字段的长度—>字段的名称;
5)猜解数据并得到数据;

 

SQL盲注简单演示(基于PHP study数据库条件之下)

在做演示之前先打开low级别盲注的源码帮助我们理解

可看出返回值只有存在和不存在,可以简单判断为布尔盲注;

从上面看即使添加错误的逻辑语句仍然是正确的返回,那么开始猜解字符型。(至于怎么猜,把引号一个位置一个位置的放,总能猜出来)

 

 

以上就可以确定它是字符型。

确定完注入类型,就要开始猜解数据库名字

语句是1’ and length(database())=1#   

1’ and length(database())=2#   

1’ and length(database())=3#   

1’ and length(database())=4#  可以知道数据库名的长度是4,之前我们知道数据库名字是“dvwa”,所以长度是4(不要问为什么我知道,因为手工注入那一关就知道了,这里只是验证一下)

知道了长度,就得准备猜名字了,最麻烦的部分来了。

语句:1’ and ascii(substr(database(),1,1)>97#

那么上面这个句子什么意思,就是为了猜数据库名字,ASCII码想必大家都不陌生,不清楚的同学可以去查度娘,一句一句试。好了剩下的步骤想必大家也都明白了,盲注就是靠试,一个字母一个字母的试。

上面讲述的是基于布尔的盲注,接下来简单说一下基于时间的盲注

结果不会延迟,说明不是数字型 

 结果延迟五秒说明是字符型

接下来几个难度跟之前都是一样的,在此就不再说明(因为是真的懒,要猜的话得很久)

后面利用工具,没错就是著名的sqlmap工具给大家进行说明,

大家没必要把工具想象的很复杂,其实就是利用时间盲注和布尔盲注的原理(上述),加快了猜测的速度,手工被python的自动化脚本代替了。。。

sqlmap工具使用教程参考链接:史上最详细的sqlmap使用教程_世界尽头与你的博客-CSDN博客

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值