Sql盲注与普通注入的区别
在学习sql注入的时候,好多同学都是不弄清楚原理,去浏览器上狂搜一下注入语句,就开始对老师给的靶机注入,虽然能注入成功,但是不清楚原理,对以后的学习和工作没有多大的好处。现在我就讲一下sql盲注与普通注入的区别!
首先,何为sql盲注?可能这个问题一下子就把你问蒙蔽了。
盲注就是在sql注入过程中,sql语句执行的选择后,选择的数据不能回显到前端页面。此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注。
我们拿两个靶机来讲一下盲注与显错式注入的区别吧
首先是第一个靶机,shop靶机
当我们看到id=485的时候,首先要想到的是这个可能是个注入点,接下来我们测试一下
当在该url后面加一个'时出现没有此商品
当在后面加 and 1=1 时
看到并没有什么错误,再输入and 1=2时发现报错了
这说明我们后面输入的语句被服务器执行了 而且是一个数字型的注入
那我们现在开始盲注,判断它目前使用的数据库吧 在后面输入
and exists(select count(*) from admin)
这句话的意思是判断这个网站有没有这个表
我们可以看到返回的是TRUE 因为页面没有发生变化
我们再输入 and exists(select count(*) from hahaha)试试
发现返回的是FALSE
盲注就是这样 页面只能返回TRUE和FALSE TRUE说明我们注入是正确
下面再看另一个靶机 dvwa
我们提交 1 发现返回有两列 我们再输入 1'
就开始报错了 这种为显错式注入 我们可以根据它报的错误走入正轨,这报的错误为‘附近有语法错误 我们可以确定这是一个字符型注入 我们可以直接把它的数据库给返回出来 如输入 1' union select 1, database()#
但是盲注就不能把数据库给返回出来 我们只能一点一点的猜测