Web攻击及防御技术实验02.docx

上传人:牧羊曲112 文档编号:4926093 上传时间:2023-05-23 格式:DOCX 页数:17 大小:452.42KB
返回 下载 相关 举报
Web攻击及防御技术实验02.docx_第1页
第1页 / 共17页
Web攻击及防御技术实验02.docx_第2页
第2页 / 共17页
Web攻击及防御技术实验02.docx_第3页
第3页 / 共17页
Web攻击及防御技术实验02.docx_第4页
第4页 / 共17页
Web攻击及防御技术实验02.docx_第5页
第5页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Web攻击及防御技术实验02.docx》由会员分享,可在线阅读,更多相关《Web攻击及防御技术实验02.docx(17页珍藏版)》请在三一办公上搜索。

1、课程编写类别内容实验课 题名称SQL注入攻击实验目 的与要 求1. 了解SQL注入攻击带来的危险性。2. 掌握SQL注入攻击的原理与方法3. 掌握防范攻击的方法VPC1 (虚 拟 PC)Windows server 2003实验环境VPC1 连 接要 求PC网络接口,本地连接与实验网络直连软件 描述1、学生机要求安装java环境2、vpc安装windwos 系统4413 马灭 w rp 4mtin1、学生机与实验室网络直连;2、VPC1与实验室网络直连;3、学生机与VPC1物理链路连通;在PHP的Web应用程序架构中,大部分都是配合MySQL数据库来 保存相关的数据。例如会员登录、留言板、讨论

2、区的账号、密码、真 实姓名、住址及联系电话等个人信息,或是购物系统的商品与价格等 记录。Web应用程序使用SQL语句来操作MySQL数据库。例如,select 表达式用来读取数据库的记录,insert表达式用来在数据库中插入新 的记录,delete表达式用来删除数据库中的记录。设置了 SQL语句的字符串后,使用mysql_query这类的PHP 函数来将SQL语句传递给MySQL数据库系统处理。MySQL处理完后,会 返回Web应用程序所需要的数据库记录。SQL注入攻击(SQL Injection)是利用在客户端的网页中输入 数据,例如,在会员登录文本框中输入用户的账号和密码,用户在提 交会员

3、登录文本框的数据后,Web应用程序会将这些账号和密码与网站 数据库中的相关记录相比较,或是插入到数据库内。一般地,用户在他的浏览器中输入的表单数据,Web应用程序 会使用$_POST变量来保存。例如,$_POSTname是用户的名字, $_POSTemail是用户的电子邮件信箱。而旦在SQL语句中,直接将 SQL字符串与这些$_POST变量进行字符串连接。下面是一个简单的例子:$query = insert into member (name) values (.$_POSTname.);预备知识$result = mysql_query($query)黑客利用这种网页设计的既定模式,在客户端

4、输入的表单数据(即 $_POST变量的值)中加入特殊的代码,来改变原来的SQL语句。如果 Web应用程序没有仔细检查$_POST变量的值就直接提交这个SQL语句, 那么就会启动SQL注入攻击。SQL注入攻击的步骤如图所示。步骤1:黑客登录有SQL注入漏洞的网站,网站显示会员登录的网页。步骤2:黑客在客户端输入会员登录所需的账号和密码,但是在账号/ 密码的字符串内加入特殊的代码。步骤3:有SQL注入漏洞的网站将黑客所输入的账号和密码用$_POST 变量来保存。并且将账号和密码的$_POST变量与SQL字符串进行连接 来生成一个新的SQL语句。步骤4:有SQL注入漏洞的网站将查询的SQL语句提交到

5、MySQL数据库 处理。步骤5:因为SQL语句中被黑客注入了代码而引发SQL注入攻击。实验内容1. 了解SQL注入攻击带来的危险性。2. 掌握SQL注入攻击的原理与方法3. 掌握防范攻击的方法2.打开虚拟机, 为 123456实验步骤输入 http:/localhost:8080/example code/ 如图:3.打开浏览器,1、学生单击实验拓扑按钮,进入实验场景,进入目标主机,(第一次 启动目标主机,还需要安装java控件),如图所示:输入用户名和密码,用户为Adminsitrator 密码4、找到“(5)SQl注入攻击(SQL injection,俗称负料隐码)”项, 并点击打开。后退

6、 0 团迓1的j夕虹收藏夹寸媒体夺 | | 码昌* 地址更)| i;j http : /localhost: 8080/example code/05sql inj ecti on. html返回上一级(5) SQL注入攻击CSQL injection,俗称负料隐码)。演示1描述:用户名:darnel,密码:123456.攻击1描述:“账号”文本框中输入“。砂=,”,“密码”文本框中输入心0砂=,七防护1描述使用add腿屉函数来将娘1语句中的单引号、双引号、“I”及NULL字符加上反斜线“I”,防止河注入 来进行攻击。演示21演示2.2描述:插入数据,查看数据,删除一条记录。攻击2描述:在表单

7、内建立一个隐藏文本框进入页面删除数据。防护2描述:使用ad&lashes函数来将SQL语句中的单引号、双引号、“I”及NULL字符加上反斜线“I”,防止赫主入 来进行攻击。咛攻击3描述:利用在S_GETid变量内加入union se屁雄达式的方式来达到盗成会员密码的目的。防护3描述:使用ad如ashes函数来将照L语句中的单引号、双弓|号、”及NULL字符加上反斜线“、”,防止赫主入撰爸曾10:27 , 一电开始11崔摩 http:/localhost:80.5、攻击实例:绕过账号、密码的检查先来看看上图,这是一个常见的形式简单的会员登录的画面。 会员登录的功能是让来访者输入账号和密码来登录网

8、站,入口网页的 程序代码会判断来访者输入的账号和密码是否存在于数据库中。如果输入的数据存在于数据库中,就让这个来访者登录网站,否则 就提示信息要求来访者必须先注册。上图的网页是一个简单的会员登录的画面login.php,请试着执 行它。login.php文件会读取ch数据库中的member数据表内的记录, 如果使用者所输入的账号和密码存在于member数据表内,就会打开首 页 ex5-1.php。文件任)端揖危)查看 收藏Q)工具(!)帮助QP|学3后退回团;胡7搜索 收藏夹 寸媒体_e|_口一地址 Q) http /loc*J.h4it:S080/*xMplc4d*/sourc*/cd5/l

9、cn php3I?到 链接+请先登录+帐号 idante!密玛如果悠尚未加入食员,话按此 苗蚂忘记了,请帮助我 zJ世完毕本地Intranet.。开始|5 由 m C: xampphtdocse . . |妗登录匚 Microsoft . . /讥traEdi t-32 C. . | S 囹 12: 58源码为http:/localhost:8080/example code/source/code5/login.php交件()编辑 查看凹 收藏(A)工具(1)帮助如后退,Q 区网 Gif1搜索主收襦夹枣媒体 愆| 日昌*地址()| 始j httu : FFlocalhost : 8Cl&tJ

10、Fe*ami)le codeFsource/coile5/ex5-3. uhufi d=l | 转到 链接欢迎光临德瑞购物广场访客:damel _d 勺完毕厂厂厂可 本地 Intra | | 二 |由开始| 逻备|杓德瑞购物广场-Hicr.顷&圈10:27所谓SQL注入攻击,就是在客户端的网页中输入特定的与SQL语 句有关的代码。这段特定的程序代码会改变SQL语句,也就是login.php 文件中有一段代码:$query = select * from member where username=. $_POSTusername . andpassword .$_POSTpassword.;这

11、个SQL语句用来把在“账号”和“密码”文本框的输入值,与 select语句连接成一个查询语句。假如在上图的“账号”文本框中输入“ daniel”,在“密码”文 本框中输入“ 123456”,那么这个SQL语句会是:select * from member where usemame=daniel and password=123456使用mysql_query函数提交这个SQL语句后,如果daniel与 “123456”的账号/密码值存在于ch数据库中的member数据表内,那 么mysql_query函数会返回一个结果集:$result=mysql_query($query);如果“dani

12、el”与“ 123456”的账号/密码值不存在于ch数据库中的member数据表内,那么mysql_query函数会返回FALSE。如果能够让SQL语句:$query=select * from member whereusername=.$_POSTusername.and password=.$_POSTpassword.;不检查$_POSTusername与$_POSTpassword的值,那么就 可以绕开会员登录的数据检查而随意录入数据。在类似这种检查“账号”与“密码”值的入口网页,许多黑客利用 暴力破解的方式来尝试账号/密码,或是设法取得他人的cookie来得 获得目标的账号/密码。

13、如果使用SQL注入攻击的话,根本就不需要账 号/密码就可以直接进入网站。6、开始攻击攻击1实例现在打开“攻击1”,进行输入,“账号”文本框中输入“OR= “密码”文本框中输入“OR=”。“OR=”字符串是由下列字符所组成的: 一个单引号: 一个空白; OR: 一个空白: 两个单引号; 一个单引号。输入情况下图所示。上图为输入SQL注入攻击的字符串结果如下图所示,无效的账号/密码值也可以用来登录网站。欢迎光临德瑞购物广场德喧购物厂场-li crsoft Internet Explorer地址 但)| http: /loc:al ho 51:8080.i-1 ex:am pl e_c ode/ e

14、 ource/ c 口 de5/ ex5_ 1. php?UE 叶犬泌 1了 二J 转到准接A。后退,0 回 团 创夕搜索收藏夹W媒体0 |弟,S* 3 4访客:1 OR =0匐完毕| 一| 一| 京本地 Intra 3:/开始1 秋备|梭德瑞购物广场-Mier.羽毒费10:34无效的账号/密码也可以登录现在回头看看login.php文件中所用的SQL语句:$query = select * from member where username=. $_POSTusername . andpassword .$_POSTpassword,;在“账号”文本框中输入“ OR=”,在“密码”文本框中

15、 输入“ OR=”,那么这个SQL语句会是:select * from member where username= OR 二 and password= OR,二,,在 where子句中,username=,(两个单引号)表示username等 于空字符串“”,=表示空字符串“,”等于空字符串“,”,所以 结果为 TRUE,usemame=,OR,=,的结果为 TRUE,因为,二,,为 TRUE, 所以,OR TRUE的结果为TRUE。同样地,password=,(两个单引号)表示password等于空 字符串“,二,,表示空字符串,等于空字符串,所以结果为TRUE, password二,O

16、R,=,的结果为 TRUE,因为,二,,为 TRUE,所以,OR TRUE的结果为TRUE。所以login.php文件的SQL语句:select * from member where username=,OR,=,and password=, OR,=, 等同于:select * from member where TRUE and TRUE因此这个SQL语句不会验证账号和密码文本框所输入的值, 而是直接查询member数据表内的所有记录。攻击1的防护方法是:字符串变量的过滤方式(使用addslashes函数)。使用addslashes函数来将SQL语句中的单引号、双引号、“”及NULL字符

17、加上反斜线“”。例如:addslashes(Oreilly)会变成:Oreilly 注意,如果在php.ini文件中将magic_quotes_gpc设置为On, 那么在GET、POST和COOKIE的数据上会自动执行addslashes函数。 如果再调用一次addslashes函数,就会变成加了两次反斜线“” 而产生错误。点击“防护1”,进行输入,“账号”文本框中输入“OR= ”,“密 码”文本框中输入“OR= ”,网页不会提交。文件建)编辑遂)查看 收藏工具(!)帮助也)U后退沔面濡驴搜索立收藏夷遗媒体尝| &昌地址更)http : /Jlcicalhost : EIU8CI狭php |

18、转到 链接崂=!3+请先登录+帐号r密码r登录|如果您尚未加入会员,诘按此 密码忘记了,话帮助我K毕| 一| 一| 本地维开始| |命囹费|旧登录 - Microsoft In. .| 吒涂 1。:店攻击2实例:删除数据库的所有记录现在来看下图,这是一个常见的简单形式的留言板。下图的网页是ex5-2.php,执行这个页面,ex5-2.php文件会将留 言的数据插入MySQL数据库ch5里面的postmessage数据表中。执行ex5-2-check.php文件,浏览ch数据库的postmessage 数据表内的记录。ex5-2-check.php文件的页面如图所示。在如下图所示的“标题”文本框

19、中,单击第一条超链接。这时会 打开ex5-2-show.php文件来显示这一条留言,在ex5-2-show.php文 件中有一个“删除,按钮,单击这个【删除】按钮后就会删除目前显 示的这一条留言,如下图所示。请注意在ex5-2-show.php的一段这样的程序代码,有一个“删除”按 钮的程序代码:删除按钮的name与id属性值是delete。在删除目前这一条留言的时候,我们使用postmessage数据表内 的id字段来标识。$query = delete from postmessage where id= .$_POSTid;$_POSTid的值是由id这个隐藏文本框:input type

20、=hidden name=id value= /而来的。而id隐藏文本框的值,则是从ex5-2-show.php的URL参数id而来。攻击1的防护方法是:字符串变量的过滤方式(使用addslashes函数)。打开“攻击2”,点击超链接按钮进行攻击,删除所有记录,如下 图。文件但) 编辑坠 查看史 收藏里 工具隹)帮助但)。后退 0 g| g| 搜索至收藏夹 体 时囱&目地址()博 1 http:/localhost :8081/examnle code/15sql iniection.html| 转到(5) SQLVi入攻击(SQLinjection,俗称负料隐码)。 返回上一级演示1描述:用

21、户名:daniel,密码:123456。攻击1描述:“账号”文本框中输入“OR11 ”,“密码”文本框中输入“PR妇气防护1描述使用addslashes函数来将SQL语句中的单引号、双引号、”及NULL字符加上反斜线”,防止sql注, 来进行违击。演示2.1-演示2.2搏述,葩入数据,查看数据,删除一条记录。鼬危表单内建立一个隐藏文本框进入页面删除数据。防护2描述:使用addslashes函数来将SQL语句中的单引号、双引号、”及NULL字符加上反斜线”,防止sql注/ 来进行攻击。演示3攻击3描述:利用在$_GET%变量内加入union select达式的方式来达到盗取会员密码的目的。防护3

22、卜J本地Intra |为描述:使用addslashes函数来将SQL语句中的单引号、双引号、”及NULL字符加上反斜线”,防止sql注/ 尹 IfQrfn土也开始 | 回 备| http:/localhost: 80.文件编相查看成)收撮 工具心帮助如Q后退搜索收藏夹丹媒体三e转到地址 )曲 http : /Localhost: 8080/exajnplencode/source/code5/ex5-2-attack. html文件编辑 查看(V)收藏 工具(T)帮助01)0后退卜函 画 1人搜索寸收藏夹9媒体 贮匿卜蛙口 地址也)整固新贫击bx5板二葛二如网页e_EW,Mce/3de5/ex

23、5-2-check. php. 以转到链接发件人标题日期没有留言函完毕| 一 | 一 | 一区,本地 Intra 3 | | :开坷彦管囹|检查看留言 - Microso. .|事& 1。:53 |同样攻击2的防护也可以使用addslashes函数来将SQL语句中的单 引号、双引号、”及NULL字符加上反斜线“”。例如:打开“防护3”,点击按钮超链接进行防护。攻击3实例:盗取密码现在来看下图,这是一个简单的首页的画面。下图的网页是ex5-3.php,请试着执行它。ex5-3.php文件会读取 ch5数据库中的member数据表内的记录,然后在访客:”文字处显 示member数据表的userna

24、me文本框的值。上图是一个简单的首页的画面ex5-3.php文件需要URL参数id,这个id值是member数据 表内的id文本框的值。在“访客:”文字处显示的username值,就 是URL参数id所对应的username文本框的值。这段在 ex5-3.php 中的程序代码 http:/localhost:8080/example code/source/code5/ex5-3.php。如何攻击在ex5-3.php文件中,查询所用的SQL语句是:$query=select username from member where id=.$_GETid;黑客利用在$_GETid变量内加入unio

25、n select表达式的方式 来达到盗取会员密码的目的。union select表达式用来实现多重查询的功能,在$_GETid 变量内加入union select就会让ex5-3.php文件的SQL语句变成有两 个select查询语句。第1个select查询语句是ex5-3.php原本的:select username from member第2个select查询语句是黑客加入的:select password from member这个select查询语句用来盗取别人的密码。黑客必须让第1个select查询语句失效,而让第2个select 查询语句成功,那么这个SQL语句就会返回passwo

26、rd,而不是username 的值。由于ex5-3.php预期SQL语句会返回username,所以在“访客:” 文字处显示了这个SQL语句的查询结果。但是实际上这个SQL语句返回的是password,所以原本要显示账 号的地方就会显示密码的值。因此黑客就可以借着这种SQL注入攻击, 来盗取网站会员的密码。开始攻击这个攻击的程序代码在ex5-3-attack.html文件中:http:/localhost:8080/example code/source/code5/ex5-3- attack.htmlex5-3-attack.html文件实际上是执行一个HTTP链接:http:/localh

27、ost/example/ex5-3.php?id=unionselectpassword from member where usemame=daniel/*ex5-3.php文件的URL参数id的值等于:union select password from member where username=daniel/*开头是两个单引号“”。将URL参数id的值代入SQL语句:$query = select username from member where id=.$_GETid;结果得到:select username from member where id=unionselect pa

28、ssword from member where username=daniel /*第1个select查询语句是ex5-3.php原本的:select username from member但是无法执行。第2个select查询语句是黑客加入的:select password from member where username=daniel因此,这个SQL语句会返回password,而不是username的值。打开“攻击3”,攻击ex5-3.php文件,如下图所示。交件 堀辑(!)查看世) 翊 兔)TH (T)帮助也)| :护Q后退,O 团 团 I夕搜索 收藏夹 w媒体 灯伊 & 目4地址

29、 里)段1! httn: Hlocalhost:8CIEIClFxamT)le code/sourc/code5FeK5-3-attack, html转到 链接攻击ex5-3.php文件由完毕厂厂厂电本地Intra 3 籍| :由并始| J 净曾脸攻击e*5-3.php网页-.| 曾10:54单击【攻击ex5-3.php文件】按钮后,就会执行ex5-3.php文件, 使用SQL注入攻击来盗取密码,结果如下图所示。在上图的“访客:”文字处,原本是要显示账号:访客: 但是,因为SQL注入攻击的缘故却显示了密码,黑客就因此盗取了网 站会员的密码。防范的方法:SQL注入攻击(SQL Injection

30、)之所以会发生,是由于SQL语 句被篡改的缘故。因此防御的方法,就是检查SQL语句中的变量数据 是否是正确的格式。(1) 如果数据确定是整数,就使用intval函数来将数据转换 成整数。例如,id值通常是由MySQL数据库产生的整数类型的数字, 因此使用intval函数来将id值转换成整数,以避免id值被窜改。(2) 如果数据确定是浮点数,就使用floatval或doubleval 函数来将数据转换成浮点数。floatval与doubleval函数的功能与语 法相同。(3) 如果数据确定是字符串,就使用addslashes函数来将单引号、双引号、“”、及NULL字符加上反斜线“”。7、实验完毕,关闭虚拟机和所有窗口。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号