SQL 注入

SQL 注入
一:介绍
SQL 注入攻击是网络上非常常见的一种攻击!
现在的 Web 程序基本都是三层架构,也就是我们常说的 MVC 模式:
表示层:用于数据的展示,也就是前端界面
业务逻辑层:用于接受前端页面传入的参数,进行逻辑处理
数据访问层:逻辑层处理完毕之后,会将数据存储到对应的数据库,例如mysql、oracle、sqlserver等等
在这里插入图片描述

例如在上图中,用户访问主页进行了如下过程:
1、在 Web 浏览器中输入www.shiyanlou.com接到对应的服务器
2、Web服务器从本地存储中加载index.php脚本程序并解析
3、脚本程序会连接位于数据访问层的DBMS(数据库管理系统),并执行Sql语句
4、数据库管理系统返回Sql语句执行结果给Web服务器
5、Web服务器将页面封装成HTML格式发送给Web浏览器
6、Web浏览器解析HTML文件,将内容展示给用户
整个过程中间的业务逻辑层只是进行逻辑处理,从用户到获取数据,简单的说,三层架构是一种线性关系。

二、SQL 注入漏洞详解
刚刚我们也讲到,当我们访问网页时,Web 服务器会向数据访问层发起 SQL 查询请求,如果权限验证通过就会执行 SQL 语句。
一般来说,如果是正常使用是不会有什么危险的,但是如果用户输入的数据被构造成恶意 SQL 代码,Web 应用又未对动态构造的 SQL 语句使用的参数进行检查,则会带来意想不到的危险!
废话也不多说来,下面我们就一起来看看,黑客是如何绕过参数检查,从而实现窃取数据的目的!
2.1、SQL 注入示例一:猜解数据库
下面我们使用DVWA 渗透测试平台,作为攻击测试的目标,让你更加清楚的理解 SQL 注入猜解数据库是如何发生的。
启动服务之后,首先观察浏览器中的URL,先输入 1 ,查看回显!
在这里插入图片描述
从图中可以看出,ID : 1,First Name:admin,Surname:Admin信息!
那后台执行了什么样的 SQL 语句呢?点击view source查看源代码 ,其中的 SQL 查询代码为:

SELECT first_name, last_name FROM users WHERE user_id = '1';

OK!
如果我们不按常理出牌,比如在输入框中输入1’ order by 1#。
实际执行的 SQL 语句就会变成这样:

SELECT first_name, last_name FROM users WHERE user_id = '1' order by 1#

这条语句的意思是查询

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值