20145203盖泽双 《网络对抗技术》实践九:Web安全基础实践
20145203盖泽双 《网络对抗技术》实践九:Web安全基础实践
1.实践目标
1、理解常用网络攻击技术的基本原理。
2、Webgoat下进行相关实验:SQL注入攻击、XSS攻击、CSRF攻击。
2.实验后回答问题
(1)SQL注入攻击原理,如何防御?
SQL注入原理:利用可以进行输入的INPUT框,在正常的语句后面加上一些对SQL数据库的非法的增删查改等语句,以达到攻击者的恶意目的。
防御:因为对数据库进行操作的的指令一般都需要输入一些特殊符号,所有以我们可以设置INPUT框的输入规则,禁止特殊字符的输入。
(2)XSS攻击的原理,如何防御?
XSS攻击原理:XSS攻击与SQL注入攻击比较类似,利用可以进行输入的INPUT框,在网页中使用HTML、javascript语言,编写非法的可执行代码到URL中,等到有用户主动访问,恶意代码运行,就可以对访问用户的正常浏览页面进行破坏。
防御:可以对用户的输入数据进行审核,设置敏感字符如```<script></script>```、敏感符号如```‘&’、‘<’```……等,一旦用户输入的数据中涉及到敏感内容,则不允许通过。
(3)CSRF攻击原理,如何防御?
CSRF攻击原理: 首先用户浏览并登陆了信任网站A。信任网站A对用户进行验证,验证成功后,在用户处生成A的cookie。此时用户又在没有注销网站A中的登陆的情况下访问了危险网站B,B就可以得到用户的cookie并以用户的名义要求访问网站A。A就把携有用户cookie的B发出的请求当作用户的请求来处理,就实现了恶意网站B的目的。
防御:对于网页中用户的隐私信息尽量使用POST方式来提交,不要明文进行传输。也可以在用户每次提交申请时,要求输入一个只有用户才可以得到的验证码。
3.实验总结与体会
这次实验主要是做了一些简单的浏览器攻击,感觉SQL注入攻击、XSS攻击这些攻击只要我们在编写网站代码时稍有限制,其实就可以避免。CSRF攻击比起前两个攻击,其实是比较难防御的,造成的后果也是最严重的,因此需要我们在编写代码方面下一点功夫来避免这些攻击带来的严重后果。
4.实践过程记录
(1)环境配置
①开启webgoat。
java -jar webgoat-container-7.0.1-war-exec.jar
②在浏览器中输入localhost:8080/WebGoat
使用默认用户名和密码登陆。
(2)SQL注入攻击
1、Numeric SQL Injection——数字SQL注入攻击
①在左边滑动框中根据名字找到自己想做的实践。右边滑动框是对该攻击的介绍与要求,建议大家先尝试理解,如果像我一样没有过六级的话,建议使用百度翻译……
简介:
SQL注入攻击对任何数据库驱动的站点都是一个严重的威胁。攻击背后的方法很容易学习,造成的伤害可以使相当大到完整的系统妥协。尽管存在这些风险,在互联网上仍有数量惊人的系统很容易受到这种形式的攻击。
它不仅是一个容易发生的威胁,也是一个一点常识和远见就可以很容易地防御的威胁。
使用操作系统命令、脚本和数据库查询指令可造成SQL注入的威胁。
攻击要求:下面的表单允许用户查看天气数据。尝试注入SQL字符串,结果将显示所有天气数据。
②首先我们要想让它显示所有的天气数据,就要对它进行注入。但是我们可以观察到这个题是没有办法自己控制输入的。既然没有办法在前端进行修改,我们就只能利用代理服务器拦截我们发送出去的网页,然后从后端对它的代码进行修改了!直接右键—>选择Inspect Element,就可以看到网页的源代码。
②我们对哥伦比亚的101进行修改,修改为“101 or 1=1”,保存后在原界面仍然选择哥伦比亚,然后提交,成功查询到所有的地区的天气情况。
**2、Log Spoofing——日志欺骗 **
简介:下面的灰色区域表示将要登录到Web服务器的日志文件中的内容。你的目标是使它像一个用户名“admin”已成功登录。
通过向日志文件中添加脚本来提升攻击。
①我们可以观察登录失败的字符串,分析到我们用户名无论输入什么,无论登录是否成功,用户名都会被显示出来。
②利用步骤一发现的这一点,我们在用户名框中添加登陆成功的字符串如:%0a%0a%0a%0a%0a(换行)Login succeeded !admin
,显示如下图:
**3、String SQL Injection——字符串的SQL注入 **
简介:下面的表格允许用户查看他们的信用卡号码。尝试注入一个SQL字符串,结果显示所有的信用卡号码显示。
①在查找框中输入以下语句:SELECT * FROM user_data WHERE last_name = ''or 1='1'
我们可以观察这个字符串语句,可以分为两句话:SELECT * FROM user_data WHERE last_name = ''
和'or 1='1',而1=1永远成立,所以我们可以查找到所有人的银行卡账号。攻击成功!
**4、Database Backdoors(1)——数据库后门 **
简介:
第一阶段:使用字符串sql注入执行多个sql语句。本课的第一阶段是教你如何使用一个易受影响的字段来创建两个SQL语句。第一个是系统的,第二个是你的。您的帐户ID是101。这个页面允许你看到你的密码,SSN和工资。尝试注入使工资值增加。
第二阶段:使用字符串SQL注入注入后门。本课的第二阶段是教你如何使用vulneable领域注入DB工作或后门。现在尝试使用相同的技术注入触发器。
①我们先ID=101,看一下正常工资值是多少。
②通过在ID框中输入101; update employee set salary=145203
,来改工资。相当于是在正常的SQL语句后又添加了一个数据库更新语句。攻击成功!
**5、Database Backdoors(2)——数据库后门 **
在第二阶段的攻击中,我们再输入框中输入101 or 1=1;CREATE TRIGGER myBackDoor BFFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='sophia@qq.com'WHERE userid = NEW.userid;
将每一个新用户的收款邮箱都改为自己的邮箱地址。修改成功!
**6、Blind Numeric SQL Injection——盲数值SQL注入 **
简介:下面的表单允许用户输入帐号并确定其有效与否。使用此表单开发数据库中的其他项的真/假测试。我们的目标是找到cc_number=1111222233334444的pin在PINS表中的值,并把找到的值放在窗体上传递出来。
①我们可以在输入框中输入101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 2500 );
与101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') < 2600 );
类型的句子,不断进行暴力破解。最后找到答案,攻击成功。
(3)XSS攻击
**1、Stored XSS Attacks——存储型XSS攻击 **
简介:可以利用OS命令,脚本和数据库查询的输入指令发帖子,使得其他用户在试图打开你的帖子时,会加载出一个不想要的网页或意想不到的内容。
①发布一个massage为<script>alert("Hi,I‘m 5203sophia!");</script>
的帖子。然后点击我所发布的帖子。效果如下:
2、Reflected XSS Attacks——反射型XSS攻击
简介:在服务器端验证所有输入是一个很好的方法。XSS可以发生在未经验证的用户输入用于HTTP响应。在反射型XSS攻击中,攻击者可以制作一个URL攻击脚本发送到另一个网站,比如电子邮件,然后让受害者点击它。
①在Enter your three digit access codeA:
框里填入获取cookie
的javascript代码:<script>alert(document.cookie);</script>
。成功获取cookie。
(还没有来得及截图,不小心手残把浏览器设置为了禁止弹出多余的对话框,然后它就再也弹不出来了)
(4)CSRF攻击
1、Cross SSite Request Forgery(CSRF)——跨ssite请求伪造
简介:目标是把电子邮件发送到银行。该电子邮件包含一个图像,其URL指向恶意请求。可以通过在右边的参数中查找“src”和“menu”值来构造链接。
CSRF的电子邮件,是用来匿名的将收件人的资金转移。
①在messahe对话框中输入:<img src=' attack?Screen=自己的scr &menu=自己的menu &transferFunds=转钱数 ' width='1' height='1'>
及转账确认信息,即可完成转账。
2、CSRF Prompt By-Pass
简介:与上一个攻击类似,不同的是这次的目标是发送一组包含多个恶意请求的邮件:①资金转移请求②资金转移确认信息。
②只需要在上面的语句后再加一句:<img src='attack?Screen=自己的src&menu=自己的menu&transferFunds=CONFIRM' width='1' height='1'>
即可,攻击成功。
20145203盖泽双 《网络对抗技术》实践九:Web安全基础实践的更多相关文章
- 20145302张薇 《网络对抗技术》逆向及BOF基础实践
20145302张薇 <网络对抗技术>逆向及BOF基础实践 实验内容 实践对象:名为20145302的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单 ...
- 20145328 《网络对抗技术》逆向及Bof基础实践
20145328 <网络对抗技术>逆向及Bof基础实践 实践内容 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回 ...
- 20145210姚思羽《网络对抗技术》逆向及Bof基础实践
20145210姚思羽<网络对抗技术>逆向及Bof基础实践 实践目标 1.本次实践的对象是一个名为pwn1的linux可执行文件. 2.该程序正常执行流程是:main调用foo函数,foo ...
- 20155201 网络攻防技术 实验九 Web安全基础
20155201 网络攻防技术 实验九 Web安全基础 一.实践内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 二.报告内容: 1. 基础问题回答 1)SQL注入攻击 ...
- 2018-2019-2 20165210《网络对抗技术》Exp9 Web安全基础
2018-2019-2 20165210<网络对抗技术>Exp9 Web安全基础 实验目的 本实践的目标理解常用网络攻击技术的基本原理. 实验内容 安装Webgoat SQL注入攻击 - ...
- 2017-2018-2 20155314《网络对抗技术》Exp9 Web安全基础
2017-2018-2 20155314<网络对抗技术>Exp9 Web安全基础 目录 实验目标 实验内容 实验环境 基础问题回答 预备知识 实验步骤--WebGoat实践 0x10 We ...
- 20165214 2018-2019-2 《网络对抗技术》Exp9 Web安全基础 Week13
<网络对抗技术>Exp9 Web安全基础 Week13 一.实验目标与内容 1.实践内容 (1).本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目.包括(SQL,XSS,CSR ...
- 2018-2019-2 20165315《网络对抗技术》Exp9 Web安全基础
2018-2019-2 20165315<网络对抗技术>Exp9 Web安全基础 目录 一.实验内容 二.实验步骤 1.Webgoat前期准备 2.SQL注入攻击 Command Inje ...
- 2018-2019-2 20165212《网络对抗技术》Exp9 Web安全基础
2018-2019-2 20165212<网络对抗技术>Exp9 Web安全基础 基础问题回答 1.SQL注入攻击原理,如何防御? 原理:SQL注入,就是通过把SQL命令插入到Web表单递 ...
- 2018-2019 2 20165203 《网络对抗技术》Exp9 Web安全基础
2018-2019 2 20165203 <网络对抗技术>Exp9 Web安全基础 实验要求 本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目,共3.5分.包括(SQL,XSS ...
随机推荐
- WPF Application 类介绍以及怎样修改启动方式
因为想要修改wpf的启动方式,所以研究了下Application类,现把一些有用的属性与大家分享下: 属性: Current 获取当前 AppDomain的 Appl ...
- 【HttpWeb】Post和GET请求基本封装
别的不多少了直接代码就行了: using System; using System.Collections.Generic; using System.Linq; using System.Text; ...
- C#多线程——同步
多个线程(不仅仅局限于相同进程)如果需要访问相同的可变资源的话就可能需要考虑到线程同步的手段.CPU的线程和进程管控我这里就不去说了,计算机组成原理里面的东西 那么既然要让线程的步调一致,那么我们首先 ...
- Java基础回顾Application(二)
application对象 1 什么是application对象 ? (1) 当Web服务器启动时,Web服务器会自动创建一个application对象.application对象一旦创建,它将一直存 ...
- 【HTML笔记】--- 内联元素间距问题及解决方案
一.内联元素间距问题 在HTML实践中我们会发现,有时候内联元素之间会存在一定的间距,并且这间距和margin和padding无关.这是由编辑时的空白字符引起的,并且间距的大小受父元素的font-si ...
- 洛谷P4719 【模板】动态dp(ddp LCT)
题意 题目链接 Sol 动态dp板子题.有些细节还没搞懂,待我研究明白后再补题解... #include<bits/stdc++.h> #define LL long long using ...
- Kafka初入门简单配置与使用
一 Kafka概述 1.1 Kafka是什么 在流式计算中,Kafka一般用来缓存数据,Storm通过消费Kafka的数据进行计算. 1)Apache Kafka是一个开源消息系统,由Scala写成. ...
- SqlServer索引页损坏恢复
问题背景 运维操作失误,在没有正常关闭sqlserver的情况下,将服务器关闭了,重启后某些表损坏(应该是某些页损坏了,没有损坏的页还能访问到数据,但是访问损坏了的页就有问题),目前数据库只有4.20 ...
- 异常检测(anomaly detection)
版权声明:本文为博主原创文章,转载或者引用请务必注明作者和出处,尊重原创,谢谢合作 https://blog.csdn.net/u012328159/article/details/51462942 ...
- JQuery实现1024小游戏
最近用Jqery写了一个1024小游戏,由于是第一次写小游戏,所以就选了一个基础的没什么难度游戏.具体实现如下: 首先在开发时将整个游戏分成两层(自认为),底层是游戏的数据结构以及对数据的操作,上层是 ...