一文读懂SQL注入的前世今生

一、Sql注入简介


Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击,它目前黑客对数据库进行攻击的最常用手段之一。

二、Web 程序三层架构


三层架构(3-tier architecture) 通常意义上就是将整个业务应用划分为:

  • 界面层(User Interface layer)
  • 业务逻辑层(Business Logic Layer)
  • 数据访问层(Data access layer)

区分层次的目的即为了“高内聚低耦合”的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构被应用于众多类型的软件开发。


由数据库驱动的Web应用程序依从三层架构的思想也分为了三层:

  • 表示层。
  • 业务逻辑层(又称领域层)
  • 数据访问层(又称存储层)

拓扑结构如下图所示

在上图中,用户访问实验楼主页进行了如下过程:

  • 在 Web 浏览器中输入 www.shiyanlou.com 连接到实验楼服务器。
  • 业务逻辑层的 Web 服务器从本地存储中加载 index.php 脚本并解析。
  • 脚本连接位于数据访问层的 DBMS(数据库管理系统),并执行 Sql 语句。
  • 数据访问层的数据库管理系统返回 Sql 语句执行结果给 Web 服务器。
  • 业务逻辑层的 Web 服务器将 Web 页面封装成 HTML 格式发送给表示层的 Web 浏览器。
  • 表示层的 Web 浏览器解析 HTML 文件,将内容展示给用户。

在三层架构中,所有通信都必须要经过中间层,简单地说,三层架构是一种线性关系。

三、Sql 注入漏洞详解


3.1 Sql 注入产生原因及威胁:


刚刚讲过当我们访问动态网页时, Web 服务器会向数据访问层发起 Sql 查询请求,如果权限验证通过就会执行 Sql 语句。
这种网站内部直接发送的Sql请求一般不会有危险,但实际情况是很多时候需要结合用户的输入数据动态构造 Sql 语句,如果用户输入的数据被构造成恶意 Sql 代码,Web 应用又未对动态构造的 Sql 语句使用的参数进行审查,则会带来意想不到的危险。

Sql 注入带来的威胁主要有如下几点

  • 猜解后台数据库,这是利用最多的方式,盗取网站的敏感信息。
  • 绕过认证,列如绕过验证登录网站后台。
  • 注入可以借助数据库的存储过程进行提权等操作


3.2 Sql 注入示例一.猜解数据库


接下来我们通过一个实例,让你更加清楚的理解 Sql 注入猜解数据库是如何发生的。
使用DVWA渗透测试平台,作为攻击测试的目标:

先输入 1 ,查看回显 (URL中ID=1,说明php页面通过get方法传递参数):

猜你喜欢

转载自blog.csdn.net/weixin_70257503/article/details/125900230