SQL注入攻击详解ppt课件.ppt
《SQL注入攻击详解ppt课件.ppt》由会员分享,可在线阅读,更多相关《SQL注入攻击详解ppt课件.ppt(32页珍藏版)》请在三一办公上搜索。
1、SQL 注入攻击,华中科技大学计算机学院,问 题,1. 什么是SQL注入攻击?2. SQL注入攻击的分类?3. SQL注入攻击的危害?4. 常见的SQL 注入攻击的过程?5. 怎样防止SQL注入攻击?6. 我们介绍SQL注入攻击的目的,1. 什么是SQL注入攻击?,不够完整的定义:脚本注入式攻击,恶意用户输入用来影响被执行的SQL脚本;从一个数据库获得未经授权的访问和直接检索;利用SQL语法,针对应用程序开发者编程中的漏洞,往应用程序中插入一些SQL语句成分或者SQL语句,从而能够操作不可访问的数据的方法。通过在应用程序中预先定义好的查询语句结尾加上额外的SQL语句元素,使得数据库服务器执行非
2、授权的查询。,1. 什么是SQL注入攻击? 一个实例,例1:现有的多数网络应用程序,没有充分利用DBMS的身份验证功能,而是在数据库中建立一张表(例如表名为user_table),保存访问应用系统的用户名及其密码,实际访问数据库服务器的只有一个用户。当使用JSP(或ASP)编写一个简单的验证登录网页程序时,该页面要求用户输入用户名(input_ username)和密码(input_password)。提交后由后台应用程序通过拼接:select * from user_table where username = + input_ username + and password = + inp
3、ut_password + ;动态生成一个SQL语句。通过验证结果是否为空来判断用户是否为合法用户。,1. 什么是SQL注入攻击? 一个实例,攻击方法:在密码框输入: or 1 = 1,在用户名框输入:zhuhong后台应用程序组装的SQL语句是: select * from user_table where username = zhuhong and password = or 1 = 1 ; 这个语句的执行结果是什么?讨论: 针对本例解决的办法?更为常见的例子:http:/mysite/studetails.asp?StuID=4,1. 什么是SQL注入攻击?,实质:在一个有漏洞的网络应
4、用程序中,允许用户输入查询条件,并将查询条件嵌入到SQL请求语句中,发送到与该应用程序相关联的数据库服务器中去执行。攻击者通过构造一些畸形的输入,实现操作这种请求语句去获取未知的结果。SQL注入不是数据库或者Web服务器的问题,而是Web应用中的漏洞或者缺陷,2. SQL注入攻击的分类?,Introduction to SQL Injection Attacks for Oracle Developers将Oracle数据库中的SQL注入攻击分为4类:SQL Manipulation (SQL操纵) Code Injection(代码注入)Function Call(函数调用) Buffer
5、Overflows(缓冲区溢出),2. SQL注入攻击的分类?,SQL Manipulation (SQL操纵) 最常见的一种SQL注入攻击方法。攻击者一般试图通过增加where子句中的条件或者用集合操作符(如UNION、INTERSECTION或MINUS)扩展SQL语句,达到修改SQL语句的目的。例2:select product_name from all_products where product_ name like %chairs%;攻击者可以让上面的SQL语句变成:select product_name from all_products where product_ name
6、 like %chairs UNION select username FROM dba_users where username like %;,使用UNION SELECT还要求当前语句和最初的语句查询的信息必须具有相同数据类型,不然就会出错,2. SQL注入攻击的分类?,Code Injection(代码注入)SQL注入攻击者试图向现有的SQL语句中增加额外的SQL语句或者命令。 攻击Microsoft SQL Server数据库应用程序例: select * from users where username=bob and password=mypassword; delete fo
7、rm 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 WHE
8、RE upper (username) = upper (admin); END,2. SQL注入攻击的分类?,Function Call (函数调用)将数据库函数或者自定义函数插入到一个脆弱的SQL语句中。这些函数调用可以调用操作系统或操作数据库中的数据。如Oracle数据库允许函数作为SQL语句的一部分来执行。例5:SELECT TRANSLATE(user input, uf, ar) FROM dual; 调用Oracle数据库函数的注入方式如下:SELECT TRANSLATE(|UTL_HTTP.REQUEST (http:/202.114.1.180/ | , uf, ar )
9、FROM dual; 改变的SQL语句可以向一个WEB服务器请求一个页面。,2. SQL注入攻击的分类?,Function Call (函数调用)调用自定义的函数也可以实现SQL注入, 如下:SELECT TRANSLATE(|myappadmin.adduser (admin, newpass) | , uf, ar) FROM dual; 攻击者可以创建一个新的用户Buffer Overflows(缓冲区溢出)通过缓冲区溢出,实现代码或SQL语句的注入,通常采用的方法是函数调用。,3. SQL注入攻击的危害,在风险方面,SQL注入攻击对数据库的危害是位居前列的,与缓冲区溢出等漏洞基本相当。
10、如果要实施缓冲区溢出攻击,攻击者必须首先能绕过站点的防火墙。一旦网络应用程序有注入漏洞,攻击者就可以直接访问数据库进而能够获得数据库所在的服务器的访问权,因此在某些情况下,SQL注入攻击的风险要高于所有其他漏洞。,4.常见的SQL 注入攻击的过程,假设: 在攻击前,对网络应用程序、数据库类型、表结构等信息都一无所知,这些信息都需要在注入的过程中通过探测获得;被攻击的网络应用程序存在注入漏洞。过程:确定注入漏洞识别错误;定位错误;确定注入点实施注入攻击确定符合SQL语法的注入语句;判断数据库的类型;构造注入利用代码,4.常见的SQL 注入攻击的过程确定注入漏洞,识别错误网络应用程序产生的错误 缺
11、陷无处不在,检查所有的输入点: . Web表单的域; . URL查询串中的脚本参数; . Cookie中的值或者隐藏的域,4.常见的SQL 注入攻击的过程确定注入漏洞,识别错误网络应用程序产生的错误攻击者首先必须能确立一些与服务器产生的错误相关的提示类型。尽管错误信息本身已被屏蔽,网络应用程序仍然具有能区分正确请求和错误请求的能力,攻击者只需要学习去识别这些提示,寻找相关错误,并确认其是否和SQL相关。攻击者会首先尝试提交一些无效的请求,并观察应用程序如何处理这些错误,以及如果出现SQL错误会发生什么情况。,4.常见的SQL 注入攻击的过程确定注入漏洞,识别错误由Web服务器产生的代码异常(e
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 注入 攻击 详解 ppt 课件
链接地址:https://www.31ppt.com/p-2001624.html