20145216史婧瑶《网络对抗》Web安全基础实践
20145216史婧瑶《网络对抗》Web安全基础实践
实验问题回答
(1)SQL注入攻击原理,如何防御
- 攻击原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入web应用程序,而这些输入大都是SQL语法里的一些组合,程序通过执行SQL语句进而执行攻击者所要的操作。其主要原因是程序没有细致的过滤用户输入的数据,致使非法数据侵入系统。
- 防御方法:
- 对输入的数据进行过滤,将常见的sql语句的关键词:select or ' " 等字符进行过滤。
- 对在数据库中对密码进行加密,验证登陆的时候先将密码进行加密再与数据库中加密的密码进行对比,若此时一致则基本是安全的。
- 对数据库中密码采用常用的MD5加密时尽量在字符串的前边和后边加上指定字符后在进行加密,这样即便是看到了数据库也很难破解密码。
(2)XSS攻击的原理,如何防御
- 攻击原理: XSS攻击是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。
- 防御方法:
- 当恶意代码值被作为某一标签的内容显示:在不需要html输入的地方对html标签及一些特殊字符( ” < > & 等等 )做过滤,将其转化为不被浏览器解释执行的字符。
- 当恶意代码被作为某一标签的属性显示,通过用“将属性截断来开辟新的属性或恶意方法:属性本身存在的单引号和双引号都需要进行转码;对用户输入的html标签及标签属性做白名单过滤,也可以对一些存在漏洞的标签和属性进行专门过滤。
(3)CSRF攻击原理,如何防御
- 攻击原理: CSRF跨站请求伪造是一种对网站的恶意利用,通过伪装来自受信任用户的请求来利用受信任的网站。
- 防御方法:
- 通过referer、token或者验证码来检测用户提交。
- 尽量不要在页面的链接中暴露用户隐私信息。
- 对于用户修改删除等操作最好都使用post操作。
- 避免全站通用的cookie,严格设置cookie的域。
实验总结与体会
这次实验让我知道了许多网络攻击技术,再次感叹网络的不安全性!比如仅仅只需要简简单单的一个输入,攻击者就可以让程序执行他想要的操作。所以我们以后在设计网站的时候一定要谨慎啊,针对这些攻击做出相应的防范措施,提高网络的安全性。
实践过程记录
首先开启webgoat:
SQL注入攻击:
String SQL Injection(SQL字符串注入):
题目要求尝试使用SQL注入,使得所有银行卡都可以被展现。
首先按题目尝试输入Smith,发现查询出来都是last_name是Smith的表单,分析后知道是需要WHERE这个条件语句失效,因此构造一个用真式'or 1='1
。
Log Spoofing(日志欺骗):
这道题大概意思是说,我们输入的用户名会被追加到日志文件中。所以我们可以使用障眼法来使用户名为“admin”的用户在日志中显示“成功登录”,例如在User Name文本框中输入%0d%0aLogin succeeded !admin
,其中%0d是回车,%0a是换行符,结果就像登录成功一样。
Stage 1 String SQL Injection
字符串型注入,要求使用SQL注入绕过认证,实现无密码登陆。
在密码栏输入' or 1 = 1 --
,发现输入错误:
查看源代码,原来最长只能输入8位,把长度限定改为15,把文本框格式改为text,再次输入' or 1 = 1 --
,成功。
Stage 3 Numeric SQL Injection
数字型注入,要求使用一个普通员工的账户,浏览其BOSS的账户信息。
首先通过Larry的账户登陆(密码为larry),更改登录后页面源代码value值为112 or 1=1 order by salary desc
。
点击ViewProfile查看信息:
Blind Numeric SQL Injection(盲数字注入)
题目要求是得到一个存放在pins表中值pin的内容,行号cc_number=1111222233334444,是一个int型的数据。使用盲注方式,输入101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 2500)
,显示不合法:
再次输入101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 2300)
显示合法:
最后试出来值为2364,成功。
XSS攻击
Phishing with XSS(跨站脚本钓鱼攻击)
关于一个页面中存在XSS漏洞时,它如何支持钓鱼攻击。
在文本框里面写一个钓鱼网站代码就可以了,这里我参考了其他同学的代码,将代码粘过去后登录,成功。
Stored XSS Attacks
题目要求:要创建非法的消息内容,可以导致其他用户访问时载入非预期的页面或内容。
直接在title里随便输入,然后在message中输入一串代码,比如:<script>alert("20145216");</script>
提交后,再次点击刚刚创建的帖子,成功弹出窗口,说明攻击成功。
Reflected XSS Attacks
将带有攻击性的URL作为输入源,比如<script>alert("20145216sjy");</script>
,就会弹出对话框:
这个看上去和上面的Stored XSS Attacks很相似,但是原理不同,上面的是存储式的,这个是通过写在url里面达到的效果,里面的脚本也可以改写成其他恶意的内容。
CSRF攻击
Cross SSite Request Forgery(CSRF)
题目要求:需要写一个URL诱使其他用户点击,从而触发CSRF攻击。
在message里面输入<img src='attack?Screen=282&menu=900&transferFunds=10000' width='1' height='1'>
,就会发出一个转钱的请求,盗取钱财。
提交后,会在消息列表中看到一个新的消息,点击该消息,当前页面就会下载这个消息并显示出来,转走用户的钱,达到CSRF攻击的目的。
CSRF Prompt By-Pass
这个就是利用CSRF进行冒名操作转账,不过这次包括了两个请求,一是转账请求,二是确认转账成功请求,即需要额外传递两个参数给服务器(transferFunds=5000,transferFunds=CONFIRM)。直接在message中写入攻击代码,然后提交:
点击CONFIRM按钮,成功。
完成情况:
20145216史婧瑶《网络对抗》Web安全基础实践的更多相关文章
- 20145334赵文豪网络对抗Web安全基础实践
1.SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的. 对于SQL注入攻击的防范,我觉 ...
- 20145216史婧瑶《网络对抗》Web基础
20145216史婧瑶<网络对抗>Web基础 实验问题回答 (1)什么是表单 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签.表单域.表单按钮. (2)浏览器可以 ...
- 20145216史婧瑶 《网络对抗》 MSF基础应用
20145216史婧瑶 <网络对抗> MSF基础应用 实验回答问题 用自己的话解释什么是exploit,payload,encode. exploit:渗透攻击模块,测试者利用它来攻击一个 ...
- 20145216史婧瑶《网络对抗》逆向及Bof进阶实践
20145216史婧瑶<网络对抗>逆向及Bof进阶实践 基础知识 Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将堆栈的返回地址利用缓冲区溢 ...
- 20145216史婧瑶《Java程序设计》第五次实验报告
20145216 实验五<Java网络编程> 实验内容 1.掌握Socket程序的编写 2.掌握密码技术的使用 3.设计安全传输系统 实验要求 1.基于Java Socket实现安全传输 ...
- 20145216史婧瑶《Java程序设计》第10周学习总结
20145216 <Java程序设计>第10周学习总结 教材学习内容总结 网络编程 一.网络概述 网络编程就是两个或多个设备(程序)之间的数据交换. 识别网络上的每个设备:①IP地址②域名 ...
- 20145216史婧瑶《Java程序设计》第9周学习总结
20145216 <Java程序设计>第9周学习总结 教材学习内容总结 第十六章 整合数据库 16.1 JDBC入门 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找. ...
- 20145216史婧瑶《Java程序设计》第8周学习总结
20145216 <Java程序设计>第8周学习总结 教材学习内容总结 第十五章 通用API 15.1 日志 java.util.logging 包提供了日志功能相关类与接口,不必额外配置 ...
- 20145216史婧瑶《Java程序设计》第7周学习总结
20145216 <Java程序设计>第7周学习总结 教材学习内容总结 第十三章 时间与日期 13.1 认识时间与日期 就目前来说,即使标注为GMT(无论是文件说明,或者是API的日期时间 ...
随机推荐
- Python的一个命名空间冲突,关于from-import机制
from os import * #import os def foo(): a = listdir("trainingDigits") b = open("traini ...
- CodeForces - 950D A Leapfrog in the Array 玄学题
题意:n个数1~n(n<=1e18)依次放在一个数组中,第i个数位置为2i-1,其它地方是空的.现在重复以下操作:将最右边的数放到离其左边最近的空的位置,直到所有数移到前一半的位置中.有q< ...
- 前端开发组件化设计vue,react,angular原则漫谈
前端开发组件化设计vue,react,angular原则漫谈 https://www.toutiao.com/a6346443500179505410/?tt_from=weixin&utm_ ...
- DLL远程注入及卸载实现
实现win7 64位系统下dll的远程注入及卸载,尚未再其他系统测试 源码地址:https://github.com/ndhisrfzs/InjectDll
- SQL SERVER与ORACLE的几点区别
1.数据类型不同. sql server 的数据类型 int ,smallint ,char,varchar,nchar,nvarchar,ntext,datetime,smalldatet ...
- Python3学习之路~2.5 简单的三级菜单程序
程序:三级菜单 需求: 1.打印省.市.县三级菜单2.可返回上一级3.可随时退出程序 代码1: data={ "山东":{ "济南":["历下区&qu ...
- PAT Product of Polynomials[一般]
1009 Product of Polynomials (25)(25 分) This time, you are supposed to find A*B where A and B are two ...
- Vue.Js加入bootstrap及jquery,或加入其他插件vue-resource,vuex等
.引入jquery 项目目录下输入 cnpm install jquery --save-dev 用npm下载jq依赖 若想加入其他js库,如vue-resource,执行命令cnpm in ...
- workerman定时任务使用
定时任务在有些场合很实用,像淘宝的自动确认收货就必须放在服务端进行,这时workeran的定时任务就派上用场了,它可以支持毫秒,crontab的粒度是一分钟 需要注意的是因为定时任务一直在执行,业 ...
- Apache+php+mysql环境配置
Apache+PHP+MySQL环境搭建 标题格式 正文格式 阶段性完成格式 正文中强调格式 ————————————————————————————— 前语:本文是从我写过的doc文档迁移过来的,由 ...