地址

sql注入基础原理

Sql注入简介

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

Web 程序三层架构

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

  • 界面层(User Interface layer)

  • 业务逻辑层(Business Logic Layer)

  • 数据访问层(Data access layer)

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

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

img

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

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

Sql 注入漏洞详解

Sql 注入产生原因及威胁

  • 网站内部直接发送的Sql请求一般不会有危险,但实际情况是很多时候需要结合用户的输入数据动态构造 Sql 语句
  • 如果用户输入的数据被构造成恶意 Sql 代码,Web 应用又未对动态构造的 Sql 语句使用的参数进行审查,则会带来意想不到的危险。

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

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