Sql 注入基础原理+实验

Sql 注入基础原理介绍

一、实验说明
1.1 实验内容
SQL注入攻击通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,本章课程通过 LAMP 搭建 Sql 注入环境,两个实验分别介绍 Sql 注入爆破数据库、Sql 注入绕过验证两个知识点。

1.2 实验知识点
Sql 注入漏洞的原理
Sql 注入点的判断方法
Sql 注入漏洞的分类

1.3 实验环境
python2.7
Xfce 终端
Firefox 浏览器

二、实验原理
Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击,它目前黑客对数据库进行攻击的最常用手段之一。 本课程将带你从介绍 Web 应用运行原理开始,一步一步理解 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 注入漏洞
4.1 Sql 注入产生原因及威胁:
刚刚讲过当我们访问动态网页时, Web 服务器会向数据访问层发起 Sql 查询请求,如果权限验证通过就会执行 Sql 语句。 这种网站内部直接发送的Sql请求一般不会有危险,但实际情况是很多时候需要结合用户的输入数据动态构造 Sql 语句,如果用户输入的数据被构造成恶意 Sql 代码,Web 应用又未对动态构造的 Sql 语句使用的参数进行审查,则会带来意想不到的危险。

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

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

4.2 Sql 注入示例一.猜解数据库
接下来我们通过一个实例,让你更加清楚的理解 Sql 注入猜解数据库是如何发生的。
进入 Firefox 浏览器,输入网址 : localhost/dvwasql , 点击create/Reset Database创建数据库: 进入登录界面,默认用户名为 admin 密码为 password
将 Security 级别调整为 low, 进入 SQL injection页面开始注入
先输入 1 ,查看回显 (URL中ID=1,说明php页面通过get方法传递参数):
那实际上后台执行了什么样的Sql语句呢?点击 view source查看源代码 :

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

我们是通过控制参数Id的值来返回我们需要的信息。 如果我们不按常理出牌,比如在输入框中输入 1’ order by 1# 实际执行的Sql语句就会变成:

SELECT first_name, last_name FROM users WHERE user_id = '1' 
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值