Sql盲注与普通注入的区别

Sql盲注与普通注入的区别

          在学习sql注入的时候,好多同学都是不弄清楚原理,去浏览器上狂搜一**入语句,就开始对老师给的靶机注入,虽然能注入成功,但是不清楚原理,对以后的学习和工作没有多大的好处。现在我就讲一下sql盲注与普通注入的区别!
    首先,何为sql盲注?可能这个问题一下子就把你问蒙蔽了。
    盲注就是在sql注入过程中,sql语句执行的选择后,选择的数据不能回显到前端页面。此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注。

         我们拿两个靶机来讲一下盲注与显错式注入的区别吧

首先是第一个靶机,shop靶机

Sql盲注与普通注入的区别

当我们看到id=485的时候,首先要想到的是这个可能是个注入点,接下来我们测试一下

当在该url后面加一个'时出现没有此商品

Sql盲注与普通注入的区别

当在后面加 and 1=1 时

Sql盲注与普通注入的区别

看到并没有什么错误,再输入and 1=2时发现报错了

Sql盲注与普通注入的区别

这说明我们后面输入的语句被服务器执行了   而且是一个数字型的注入

那我们现在开始盲注,判断它目前使用的数据库吧  在后面输入

and exists(select count(*) from admin)

这句话的意思是判断这个网站有没有这个表

Sql盲注与普通注入的区别

我们可以看到返回的是TRUE  因为页面没有发生变化

我们再输入 and exists(select count(*) from hahaha)试试

Sql盲注与普通注入的区别

发现返回的是FALSE

盲注就是这样  页面只能返回TRUE和FALSE  TRUE说明我们注入是正确

下面再看另一个靶机  dvwa

Sql盲注与普通注入的区别

我们提交 1 发现返回有两列  我们再输入 1'

Sql盲注与普通注入的区别

就开始报错了  这种为显错式注入  我们可以根据它报的错误走入正轨,这报的错误为‘附近有语法错误  我们可以确定这是一个字符型注入  我们可以直接把它的数据库给返回出来  如输入 1' union select 1, database()#

Sql盲注与普通注入的区别

但是盲注就不能把数据库给返回出来  我们只能一点一点的猜测