201453331魏澍琛web安全基础实践

一.实验过程

1、webgoat开启

2、Injection Flaws练习

Command Injection

原网页中没有注入的地方,那就用burpsuite(设置的相关步骤别人的博客写的很详细,不累述了),分析第一个包看他的数据提交的位置,找到后进行命令的注入,成功。 我注入的命令是AccessControlMatrix.help"&&ifconfig",执行了ifconfig命令,鉴于这个可以证明是本人操作,就把他截了一张图:

Numeric SQL Injection

和Command Injection步骤几乎一模一样,最后把我们修改station值从为101 为( 101 or 1 = 1),我们知道(x or 1),不管前面x的值是什么他的结果都是真,更改后成功

Log Spoofing

输入的用户名会被追加到日志文件中,所以我们可以使用障眼法来使用户名为“admin”的用户在日志中显示“成功登录”,在User Name文本框中输入wsc%0d%0aLogin Succeeded for username: admin,其中%0d是回车,%0a是换行符,成功。

String SQL Injection

永真式(x or 1)=1,再加上两个分号来闭合前后的分号作为输入,就成功了。

LAB:SQL Injection(Stage 1:String SQL Injection)

用上一个的输入进行输入发现失败了!按F12看下网页的源代码,找到密码输入框,会发现他对长度进行了限制(maxlenth=8),把他改成50,就成功了。

LAB:SQL Injection(Stage 3:Numeric SQL Injection)

先用上面的方法进行登陆,查看源代码,发现这个地方是以员工ID作为索引传递参数的,我们要达到通过Larry来浏览老板账户信息的目的,一般来说老板的工资都应该是最高的,所以把其中的value值改为“101 or 1=1 order by salary desc --”,这样老板的信息就会被排到第一个,然后就可以查看老板的信息。

Blind Numeric SQL Injection

先要发现返回的信息中只有两种:有效或无效,接着缩小范围,ok再接着在确定一个较小的范围里打开BurpSuite,设置好代理后,抓个包然后进行暴力破解(设置部分根据别人的博客完成),最终根据报文长度的区别找到该值。

3、Cross-Site Scripting(XSS)练习

Stored XSS Attacks

title随便输,message输入一段代码

Reflected XSS Attacks

输入相应代码,这个和上一个的区别主要在与上一个的是存在服务器中的,而这个不是。

Cross Site Request Forgery(CSRF)

设定一个URL,别的人一点,就触发CSRF攻击,可以把URL放到message框中;提交后,下面会有一条记录,你一点这个记录,就被攻击了。

二.实验后回答问题

(1)SQL注入攻击原理,如何防御

    首先sql注入呢就是一种对数据库进行攻击的方式,一个编网页的程序员比较菜,那恶意用户就可以利用他编写代码时没有考虑到用户输入数据的合法性,使程序存在安全隐患。恶意用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL注入。
进行防御,首先就是这次试验中涉及到的设定字符串的长度,不过事实上证明他没有什么卵用;采用采用字符串过滤,过滤掉一些sql注入的的关键字;除此之外,可以对在数据库中对密码进行加密,验证登陆的时候先将 密码进行加密再与数据库中加密的密码进行对比,若此时一致则基本是安全的。

(2)XSS攻击的原理,如何防御

    就是跨站脚本攻击,你将恶意代码注入到网页上,那么其他用户再看这个网页也就会受影响。这种攻击主要是获得目标网站的cookie,ok那什么是cookie?cookie就是存于本地用户的数据,某些网站为了辨别用户身份、进行session跟踪;ok那么获得了这些信息之后,就可以在任意能接进互联网的pc登陆该网站,并以其他人的生份登陆,做一些破坏。
进行防御,我看懂了别人的博客,感觉挺有道理的:第一就是当恶意代码值被作为某一标签的内容显示时,在不需要html输入的地方对html标签及一些特殊字符做过滤,这样就相当于这些字符没有用,因为他不被执行,那不执行不就是防御住了;第二就是当恶意代码被作为某一标签的属性显示时,通过用将属性截断来开辟新的属性或恶意方法:属性本身存在的单引号和双引号都需要进行转码;对用户输入的html 标签及标签属性做白名单过滤,也可以对一些存在漏洞的标签和属性进行专门过滤。意思其实很简单,就是说原本的属性被转码了,用户新加的属性又会被过滤,这也是一种防御的方法。

(3)CSRF攻击原理,如何防御

    就是跨站请求伪造,首先要注意,他和XSS攻击截然不同!看名字就知道,他是通过伪装来自受信任用户的请求来利用受信任的网站,而XSS可以说是一种利用站点内的信任用户来进行攻击。OK有了伪造这个概念,就可以看懂下面这张图:
这个图中有一点很关键,那就是C(有A的cookie)要在没有登出A的情况下登入B 进行防御,看了一些别人的博客并查看了一些资料:第一就是Cookie Hashing(所有表单都包含同一个伪随机值),简单的说就是攻击者不能获得第三方的Cookie,所以表单中的数据也就构造失败了:在表单里增加Hash值,以认证这确实是用户发送的请求。然后在服务器端进行Hash值验证;还有一种就是用验证码的方式保护:每次用户提交都需要用户在表单中填写一个图片上的随机字符串,这个比较常见,终于知道那些网站的验证码是用来干什么的了。反正总而言之,就是要验证这个用户的身份。

三.实验总结与体会

    前两种攻击方法上次实验已经涉及到了,这次就是更加深入的进行学习,明白了这些攻击方法具体是怎么回事:为什么要以这样的格式进行输入,攻击的目标分别是什么,每种攻击的区别又是什么,实验过程还是很有意思的;还有就是要加强英语水平啊,每个题目看起来有点费劲啊;最后就是做这次实验总用一种偷鸡摸狗背着别人干坏事的感觉,挺奇怪的... PS:每次代理完记着调回来,不然火狐就连不上网。

exp9《网络对抗》web安全基础实践201453331魏澍琛的更多相关文章

  1. 20145334赵文豪网络对抗Web安全基础实践

    1.SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的. 对于SQL注入攻击的防范,我觉 ...

  2. 2018-2019 20165221 网络对抗 Exp5 MSF基础

    2018-2019 20165221 网络对抗 Exp5 MSF基础 实践内容: 重点掌握metassploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 一个主动攻击实践,如ms0 ...

  3. 20145306 网路攻防 web安全基础实践

    20145306 网络攻防 web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 XSS攻击:Stored XSS Attacks.Reflected XSS At ...

  4. 20145236《网络对抗》Exp9 web安全基础实践

    20145236<网络对抗>Exp9 web安全基础实践 一.基础问题回答: SQL注入攻击原理,如何防御 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或 ...

  5. 20145215《网络对抗》Exp9 Web安全基础实践

    20145215<网络对抗>Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符 ...

  6. 20145208 蔡野 《网络对抗》Exp9 web安全基础实践

    20145208 蔡野 <网络对抗>Exp9 web安全基础实践 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验后回答问题 (1)SQL注入攻击原理,如何 ...

  7. 20155202《网络对抗》Exp9 web安全基础实践

    20155202<网络对抗>Exp9 web安全基础实践 实验前回答问题 (1)SQL注入攻击原理,如何防御 SQL注入产生的原因,和栈溢出.XSS等很多其他的攻击方法类似,就是未经检查或 ...

  8. 20155204《网络对抗》Exp9 Web安全基础实践

    20155204<网络对抗>Exp9 Web安全基础实践 一.基础问题回答 SQL注入攻击原理,如何防御? 原理: SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以 ...

  9. 20155211 网络对抗 Exp9 Web安全基础实践

    20155211 网络对抗 Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语 ...

随机推荐

  1. 最长上升子序列 OpenJ_Bailian - 2757 dp模板

    第一种是用以前状态更新当前状态(人人为我) 第二种是用当前状态更新以后状态(我为人人) 都是n^2代码: 对于人人为我的更新方法,可以用数据结构储存“人人”对其进行线性\二分优化. ; int a[m ...

  2. MySQL命令:创建数据库、插入数据

    简介: 学习mysql环境为ubantu,下面记录一些基本的创建数据库和插入数据的口令 打开MySQL 服务并使用 root 登录: --打开 MySQL 服务 sudo service mysql ...

  3. php之setcookie

    注意在任何发送请求头之前不能有输出,不然会获取不到header头 setcookie(key,value, expires, 'path', domain); 在发送cookie时,会自动把cooki ...

  4. LoadRunner-参数化(界面说明)

    1.Parameter type:参数类型 2. Select columm :选择列的方式,可以通过列编号或名称. By number:通过列编号  比如参数accounts位于第1列,passwo ...

  5. vue学习之四组件系统

    vue.js既然是框架,那就不能只是简单的完成数据模板引擎的任务,它还提供了页面布局的功能.本文详细介绍使用vue.js进行页面布局的强大工具,vue.js组件系统. 一.Vue.js组件系统 每一个 ...

  6. Centos expect spawn、linux expect 用法

    使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写却不知其然.本文用一个最短的例子说明脚本的原理.  脚本代码如下:  ###### ...

  7. JSP页面中引入另一个JSP页面

    一个JSP页面中引入另一个JSP页面,相当于把另一个JSP页面的内容复制到对应位置: <%@include file="date.jsp" %> 一般页面的top和bo ...

  8. easyUI中datebox的格式显示

    使用datebox的问题: 1.需要YYYY-MM-dd这种时间格式: 2.月份显示的是中文. 上述两个问题只要引入国际化的js文件即可. 注:下图为easyUI使用时需要引入的文件,红框就可以解决上 ...

  9. L1正则化和L2正则化

    L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择 L2正则化可以防止模型过拟合(overfitting):一定程度上,L1也可以防止过拟合 一.L1正则化 1.L1正则化 需注意, ...

  10. html03

    快速开发指南:1.新建页面之后,编写外部样式表文件,引入到HTML页面中2.用浏览器打开页面->F12->sources->打开css文件 右边编写样式,左边查看效果3.样式编写完成 ...