SQL普通注入和SQL盲注的区别

往往大多数人在学习sql注入的时候,很多的人都是不去弄清楚原理,去网上随意搜索一些注入语句,就开始对靶机注入,虽然能注入成功,但是不清楚原理,对以后的学习和工作没有多大的好处。特别是一些新手!

 

现在我就讲一下“SQL普通注入和SQL盲注的区别”:

 

什么是SQL盲注?

可能这个问题一下子就把你问蒙逼了,我最初刚入门的时候也是跟很多人一样都是蒙逼的状态。

盲注就是在sql注入过程中,sql语句执行的选择后,选择的数据不能回显到前端页面。此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注。

 

什么是SQL普通注入?

SQL普通注入也可以叫SQL显错式注入,因为我们可以根据报错从而达到进入注入的正轨。

 

SQL盲注与普通注入的区别

我这里拿两个靶机来讲一下SQL盲注与SQL普通注入的区别吧!

 

第一个靶机:DVWA

1、当打开“http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=2&Submit=Submit#”

我们提交 1 发现返回有两列 。

SQL普通注入

 

我们再输入 1' 发现了报错如下:

SQL普通注入

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

SQL普通注入

 

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

 

2、例如:我们打开“http://127.0.0.1/dvwa/vulnerabilities/sqli_blind/”,我再输入 1' union select 1, database()#,数据库是报不出来的。

sql盲注

 

第二个靶机:Mutillidae

1、浏览器打开“http://127.0.0.1/mutillidae/index.php?page=user-info.php”,这里我是选择用户名框输入一个“\”,点击确认键,可以看到报错信息,并且可以看到SQL语句,说明存在SQL注入,此处无过滤。这就是SQL普通注入,也可以叫SQL显错注入。

sql显错注入

 

选择在用户名输入处输入“‘ or 1=1 #”,通过使用“or”字句将输入匹配取消,并使用“#”将后续语句中对password的查询给注释掉,即查询时的SQL语句变为了:

SELECT * FROM account WHERE username=’’ or 1=1

使用这个SQL语句,即可将account表中所有的用户信息查询出来。点击确认后,可以看到下方出现所有的用户信息:sql普通注入

 

2、由于Mutillidae里面的盲注不是很准确,我就不演示了。大家只要能懂了即可!

Mutillidae里面的盲注也能报错也能查询出结果,普通注入和盲注示例都是用的同一个PHP文件。

 

总结:如里大家真的想只专注SQL注入的话,请大家查看:SQL注入测试网站搭建 SQL注入测试平台SQLi-Labs这里有大量的SQL普通注入与SQL盲注案例。

付杰
  • ¥ 39.0元
  • 市场价:39.0元
  • ¥ 69.0元
  • 市场价:99.0元
  • ¥ 398.0元
  • 市场价:498.0元
  • ¥ 98.0元
  • 市场价:398.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: