SQL注入实战——登录绕过验证

        这一章,我们来学习SQL注入的绕过验证,后面有几篇文章我会详细写注入工具SQLMap的使用方法,我们静下心来学习,别慌,我争取把这这次整套的渗透测试学习做好笔记,写成博客分享出来,有些东西CSDN里面可能分享不了,最近在准备弄个服务器搭个自己的博客。我希望大家学的东西,能用在正处,不要拿去干坏事,我只是做分享技术,一切学完后造成的后果自行承担。


当你的才华

还撑不起的野心时

那你就应该静下心来学习


实验环境:

      下载DVWA 渗透演练平台,Dvwa是用php语言写的安全测试平台,所以我们先要创建一个php开发集成环境。我们可以采用最简单的方法,只要安装上phpstudy,就安装了php开发集成环境。

        怎么安装网上随处可见,如果安装途中遇到不可解决的问题,留言即可,我尽力帮你解决,实在解决不了我也无能力咯,嘻嘻....

 

一、注入实例:绕过验证

接下来我们再试试利用 Sql 漏洞绕过登录验证的实验

进入首页发现这是一个普通的登录页面,只要输入正确的用户名和密码就能登录成功。 我们先尝试随意输入用户名 123 和密码 123 登录:

从错误页面中我们无法获取到任何信息。

看看后台代码如何做验证的:

实际执行的操作时:

         select * from users where username='123' and password='123'

      当查询到数据表中存在同时满足 username 和 password 字段时,会返回登录成功。 按照第一个实验的思路,我们尝试在用户名中输入 123' or 1=1 #, 密码同样输入 123' or 1=1 # :

SQL注入实战——登录绕过验证_第1张图片

 

SQL注入实战——登录绕过验证_第2张图片

为什么能够成功登陆呢?因为实际执行的语句是:

          select * from users where username='123' or 1=1 #' and password='123' or 1=1 #'

按照 Mysql 语法,# 后面的内容会被忽略,所以以上语句等同于(实际上密码框里不输入任何东西也一样):

          select * from users where username='123' or 1=1

      由于判断语句 or 1=1 恒成立,所以结果当然返回真,成功登录。 我们再尝试不使用 # 屏蔽单引号,采用手动闭合的方式: 我们尝试在用户名中输入 123' or '1'='1, 密码同样输入 123' or '1'='1 (不能少了单引号,否则会有语法错误):

SQL注入实战——登录绕过验证_第3张图片

SQL注入实战——登录绕过验证_第4张图片

 

实际执行的 Sql 语句是:

          select * from users where username='123' or '1'='1' and password='123' or '1'='1`

     看到了吗?两个 or 语句使 and 前后两个判断永远恒等于真,所以能够成功登录。

      还有很多其他 Mysql 语句可以巧妙的绕过验证,同学们可以发散自己的思维进行尝试。

 


我不需要自由,只想背着她的梦

一步步向前走,她给的永远不重


 

你可能感兴趣的:(渗透测试,SQL注入,前渗透篇)