SQ儿攻去与防御 ■什么,是SQL注入? 1.理解Web应用的工作原理? 2.理解SQL注入 3.理解SQL注入的产生过程 2022/11/8 Chen Kaiming Copyright 2007
2022/11/8 Chen Kaiming Copyright 2007 1 SQL攻击与防御 ■ 什么是SQL注入? 1. 理解Web应用的工作原理? 2. 理解SQL注入 3. 理解SQL 注入的产生过程
SQL攻去与防脚 SQL注入是影响企业运行且最具破坏性 的漏洞之一.它会泄漏保存在应用程序数据 库中的敏感信息,包会用户名,密码,姓名, 地址,电话号码以及信用卡明细等易被利用 的信息、· 2022/11/8 Chen Kaiming Copyright 2007
2022/11/8 Chen Kaiming Copyright 2007 2 SQL攻击与防御 SQL 注入 是影响企业运行且最具破坏性 的漏洞之一.它会泄漏保存在应用程序数据 库中的敏感信息, 包含用户名, 密码, 姓名, 地址,电话号码以及信用卡明细等易被利用 的信息
SQL攻去与防御 SQL注入定义: 应用程序在向后台数据库传递SQL查 询时,如果为改击者提供了影响该查询的能 力,则会引发SQL注入. Rain Forest Puppy1998年首次发现该 漏洞而倍受赞誉 2022/11/8 Chen Kaiming Copyright 2007
2022/11/8 Chen Kaiming Copyright 2007 3 SQL攻击与防御 SQL注入定义: 应用程序在向后台数据库传递SQL 查 询时, 如果为攻击者提供了影响该查询的能 力, 则会引发SQL 注入. Rain Forest Puppy 1998年首次发现该 漏洞而倍受赞誉
SQ儿攻击与防御 ■理解Web应用的工作原理 1.Web应用是交互性且多数是数据库驱动的. 2.互联网中,包含一个后台数据库和很多Wb页面. 3.电子商务是数据库驱动的Wb应用最常见形式之一. 4.数据库驱动的Wb应用通常包含3层:表示层,逻 辑层和存储层· Wb浏览层向中间层发送请求,中间层通过查 询,更新数据库(存储层)来响应该请求 chenkm@ustc.edu.cn 0551- 2022/11/8 3602824
■ 理解Web应用的工作原理 1. Web应用是交互性 且多数是数据库驱动的. 2. 互联网中, 包含一个后台数据库和很多Web页面. 3. 电子商务是数据库驱动的Web应用最常见形式之一. 4. 数据库驱动的Web应用通常包含 3层:表示层,逻 辑层 和 存储层. Web浏览层 向 中间层 发送请求,中间层通过查 询,更新数据库(存储层)来响应该请求. SQL攻击与防御 4 chenkm@ustc.edu.cn 0551- 2022/11/8 3602824
http://www.victim.com/products.php?val=100 下列PHP脚本说明了如何将用户输入(vl)传递给动态创建的SQL语句。当请求上述URL 时,将会执行下列PHP代码段: /connect to the database Sconn mysql_connect ("localhost","username","password"); /dynamically build the sql statement with the input Squery "SELECT FROM Products WHERE Price 'GET["val"]". "ORDER BY ProductDescription"; /execute the query against the database Sresult mysql_query(Squery); /iterate through the record set while(Srow mysql_fetch_array(Sresult,MYSQL_ASSOC)) /display the results to the browser echo "Description {Srow['ProductDescription']}". "Product ID (Srow['ProductID']". "Price {Ssow['Price']}"; chenkm@ustc.edu.cn 0551- 2022/11/8 3602824
5 chenkm@ustc.edu.cn 0551 - 2022/11/8 3602824
接下来的代码示例更清晰地说明了PP脚本构造并执行的S0L语句。该语句返回数据库 中所有价格低于S100的商品,之后在Wb浏览器上显示并呈现这些商品以方便顾客在预算范 围内继续购物。 S邻LEC7* FROM Products HERE Price←'100.00 ORDER BY ProductDescription; 般来说,所有可交互的数据库驱动的M%b应用均以相同的至少是类似的方式运行 chenkm@ustc.edu.cn 0551- 2022/11/8 3602824
6 chenkm@ustc.edu.cn 0551 - 2022/11/8 3602824
表示层 逻辑层 存储层 访问http://www.victim.com 加载、编译并执行index.asp 执行SQL 脚本引擎 RDBMS 返回数据 呈现HTML 发送HTML Web浏览器/星现引擎 编程语言:C#、ASP、NET,PHP、JSP等 数据库:MSSQL、MySQL、Oracle等 图1·1简单的三层架构 chenkm@ustc.edu.cn 0551- 2022/11/8 3602824 7
7 chenkm@ustc.edu.cn 0551 - 2022/11/8 3602824
在国H中,用户漾活泐浏览餐并连接到中w恤m,位于逻辑层的泐用 务器队文件系统中如黄本并将其传送给脚本罩,脚本引擎负责解析并执行脚本,脚本使用 库接器 储层转并对黄得库我行SL语駒,数据库轮数据返哈数程库挂接器 后者将其传递绘逻辑层的脚本率,逻辑层在格泐页面以TM格武返给表示层的用户 的阳浏览器之前,先行相关的应用或业务逻辑规则用户的附浏览器呈现L并借 助代码的图形秋表云展现给用户,所有燥作都将在数秒纳完或,并且对用户是透明的 chenkm@ustc.edu.cn 0551- 2022/11/8 3602824
8 chenkm@ustc.edu.cn 0551 - 2022/11/8 3602824
表示是 逻辑层 应用层 存储层 访问 加载、编译并执行 与数据存储交互,利用 执行SQL index.asp http://www.yictim.com 应用程序和业务逻辑 脚本引擎 RDBMS 脚 呈现HTML 发送HTML 为Web服务器提供数据 返回数据 Wb测览器/生现引擎 编程语言:C#、ASP、 CFC、EB、SOAP、RM 数据库:MSSQL NET、PHP、JSP等 Web服务等 MSQL,Oracle等 图12四层架构 chenkm@ustc.edu.cn 0551- 2022/11/8 3602824
9 chenkm@ustc.edu.cn 0551 - 2022/11/8 3602824
图12描绘了一种简单的四层架构。 在图1-2中,Wb浏览器(表示层)向中间层(逻辑层)发送请求,后者依次调用由位于应用层 的应用服务器所提供的APL,应用层通过查询、更新数据库(存储层)来响应该请求。 在图1-2中,用户激活Web浏览器并连接到h-://www.victim,.om。位于逻辑层的Web服 务器从文件系统中加载脚本并将其传递给脚本引擎,脚本引擎负责解析并执行脚本。脚本调用 由位于应用层的应用服务器所提供的API。应用服务器使用数据库连接器打开存储层连接并对 数据库执行S0L语句,数据库将数据返回哈数据库连接器,应用服务器在将数据返回给W%0 服务器之前先执行相关的应用或业务逻辑规则,Wb服务器在将数据以HTML格式返回给表 示层的用户的Web浏览器之前先执行最后的有关逻辑。用户的Wb浏览器呈现HTML并借助 代码的图形表示展现给用户。所有操作都将在数秒内完成,并且对用户是透明的 chenkm@ustc.edu.cn 0551- 2022/11/8 3602824
10 chenkm@ustc.edu.cn 0551 - 2022/11/8 3602824