Web攻击及防御技术实验02-SQL注入攻击与防护等-HTTP攻击与防范-SQL注入攻击.doc
文本预览下载声明
课程编写 类别 内容 实验课题名称 SQL注入攻击 实验目的与要求 1.了解SQL注入攻击带来的危险性。
2.掌握SQL注入攻击的原理与方法
3.掌握防范攻击的方法 实验环境 VPC1(虚拟PC) Windows server 2003 VPC1?连接要求 PC?网络接口,本地连接与实验网络直连 软件描述 1、学生机要求安装java环境2、vpc安装windwos?系统 实验环境描述 1、?学生机与实验室网络直连;
2、?VPC1与实验室网络直连;
3、?学生机与VPC1物理链路连通; 预备知识 在PHP的Web应用程序架构中,大部分都是配合MySQL数据库来保存相关的数据。例如会员登录、留言板、讨论区的账号、密码、真实姓名、住址及联系电话等个人信息,或是购物系统的商品与价格等记录。
?Web应用程序使用SQL语句来操作MySQL数据库。例如,select表达式用来读取数据库的记录,insert表达式用来在数据库中插入新的记录,delete表达式用来删除数据库中的记录。
?设置了SQL语句的字符串后,使用mysql_query这类的PHP函数来将SQL语句传递给MySQL数据库系统处理。MySQL处理完后,会返回Web应用程序所需要的数据库记录。
?SQL注入攻击(SQL Injection)是利用在客户端的网页中输入数据,例如,在会员登录文本框中输入用户的账号和密码,用户在提交会员登录文本框的数据后,Web应用程序会将这些账号和密码与网站数据库中的相关记录相比较,或是插入到数据库内。
?一般地,用户在他的浏览器中输入的表单数据,Web应用程序会使用$_POST变量来保存。例如,$_POST[name]是用户的名字,$_POST[email]是用户的电子邮件信箱。而旦在SQL语句中,直接将SQL字符串与这些$_POST变量进行字符串连接。
?下面是一个简单的例子:
$query = insert into member (name) values ( .?$_POST[name] . );
$result =?mysql_query($query)
黑客利用这种网页设计的既定模式,在客户端输入的表单数据(即$_POST变量的值)中加入特殊的代码,来改变原来的SQL语句。如果Web应用程序没有仔细检查$_POST变量的值就直接提交这个SQL语句,那么就会启动SQL注入攻击。
SQL注入攻击的步骤如图所示。
步骤1:黑客登录有SQL注入漏洞的网站,网站显示会员登录的网页。
步骤2:黑客在客户端输入会员登录所需的账号和密码,但是在账号/密码的字符串内加入特殊的代码。
步骤3:有SQL注入漏洞的网站将黑客所输入的账号和密码用$_POST变量来保存。并且将账号和密码的$_POST变量与SQL字符串进行连接来生成一个新的SQL语句。
步骤4:有SQL注入漏洞的网站将查询的SQL语句提交到MySQL数据库处理。
步骤5:因为SQL语句中被黑客注入了代码而引发SQL注入攻击。 实验内容 1.了解SQL注入攻击带来的危险性。
2.掌握SQL注入攻击的原理与方法
3.掌握防范攻击的方法 实验步骤 ?
1、?学生单击实验拓扑按钮,进入实验场景,进入目标主机,(第一次启动目标主机,还需要安装java控件),如图所示:
3.打开浏览器,输入http://localhost:8080/example_code/?如图:
4、找到“(5)SQl注入攻击(SQL injection,俗称负料隐码)”项,并点击打开。
5、攻击实例:绕过账号、密码的检查
?先来看看上图,这是一个常见的形式简单的会员登录的画面。会员登录的功能是让来访者输入账号和密码来登录网站,入口网页的程序代码会判断来访者输入的账号和密码是否存在于数据库中。
如果输入的数据存在于数据库中,就让这个来访者登录网站,否则就提示信息要求来访者必须先注册。
上图的网页是一个简单的会员登录的画面login.php,请试着执行它。login.php文件会读取ch数据库中的member数据表内的记录,如果使用者所输入的账号和密码存在于member数据表内,就会打开首页ex5-1.php。
源码为
http://localhost:8080/example_code/source/code5/login.php
所谓SQL注入攻击,就是在客户端的网页中输入特定的与SQL语句有关的代码。这段特定的程序代码会改变SQL语句,也就是login.php文件中有一段代码:
$query = select * from member where username= .?$_POST[username] . and passwo
显示全部