1 / 30
文档名称:

SQL 注入攻击.ppt

格式:ppt   大小:428KB   页数:30页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

SQL 注入攻击.ppt

上传人:yzhluyin1 2017/11/19 文件大小:428 KB

下载得到文件列表

SQL 注入攻击.ppt

相关文档

文档介绍

文档介绍:SQL 注入攻击
朱虹
华中科技大学计算机学院
问题
1. 什么是SQL注入攻击?
2. SQL注入攻击的分类?
3. SQL注入攻击的危害?
4. 常见的SQL 注入攻击的过程?
5. 怎样防止SQL注入攻击?
6. 我们介绍SQL注入攻击的目的
1. 什么是SQL注入攻击?
不够完整的定义:
脚本注入式攻击,恶意用户输入用来影响被执行的SQL脚本;
从一个数据库获得未经授权的访问和直接检索;
利用SQL语法,针对应用程序开发者编程中的漏洞,往应用程序中插入一些SQL语句,从而能够操作不可访问的数据的方法。
通过在应用程序中预先定义好的查询语句结尾加上额外的SQL语句元素,使得数据库服务器执行非授权的查询。
1. 什么是SQL注入攻击? ——一个实例
例1:现有的网络应用程序大多没有充分利用DBMS的身份验证功能,而是在数据库中建立一张表(例如表名为user_table),保存访问应用系统的用户名及其密码,实际访问数据库服务器的只有一个用户。
当使用JSP(或ASP)编写一个简单的验证登录的网页程序时,该页面要求用户输入用户名(input_ username)和密码(input_password)。
提交后由后台应用程序通过拼接:
''select * from user_table where username = ''' + input_ username + ''' and password = ''' + input_password + ''';''动态生成一个SQL语句。
通过验证结果是否为空来判断用户是否为合法用户。
1. 什么是SQL注入攻击? ——一个实例
攻击方法:
在用户名框输入:zhuhong
在密码框输入:'or '1' = '1
后台应用程序组装的SQL语句是:
select * from user_table
where username = 'zhuhong' and password = ''
or '1' = '1' ;
——这个语句的执行结果是什么?
1. 什么是SQL注入攻击?
实质:
在一个有漏洞的网络应用程序中,允许用户输入查询条件,并将查询条件嵌入到SQL请求语句中,发送到与该应用程序相关联的数据库服务器中去执行。
攻击者通过构造一些畸形的输入,实现操作这种请求语句去获取未知的结果。
2. SQL注入攻击的分类?
《Introduction to SQL Injection Attacks for Oracle Developers》将Oracle数据库中的SQL注入攻击分为4类:
SQL Manipulation (SQL操纵)
Code Injection (代码注入)
Function Call (函数调用)
Buffer Overflows (缓冲区溢出)
2. SQL注入攻击的分类?
Code Injection(代码注入)
SQL注入攻击者试图向现有的SQL语句中增加额外的SQL语句或者命令。
例3:select * from users where username='bob' and password='mypassword'; delete form users where username ='admin';
在SQL-Server中可能注入成功,但在Oracle中会报错。原因在于SQL Server支持多句执行,而Oracle不允许。
2. SQL注入攻击的分类?
Code Injection (代码注入)
Oracle中一些动态执行的匿名存储过程,对于代码注入攻击十分脆弱。
例4:在一个Web应用程序中执行的存储过程:
BEGIN ENCRYPT_PASSWORD ('bob', 'mypass word'); END;
BEGIN ENCRYPT_PASSWORD ('bob', 'mypass word'); DELETE FROM users WHERE upper (username) = upper ('admin'); END