exp9《网络对抗》web安全基础实践201453331魏澍琛
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魏澍琛的更多相关文章
- 20145334赵文豪网络对抗Web安全基础实践
1.SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的. 对于SQL注入攻击的防范,我觉 ...
- 2018-2019 20165221 网络对抗 Exp5 MSF基础
2018-2019 20165221 网络对抗 Exp5 MSF基础 实践内容: 重点掌握metassploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 一个主动攻击实践,如ms0 ...
- 20145306 网路攻防 web安全基础实践
20145306 网络攻防 web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 XSS攻击:Stored XSS Attacks.Reflected XSS At ...
- 20145236《网络对抗》Exp9 web安全基础实践
20145236<网络对抗>Exp9 web安全基础实践 一.基础问题回答: SQL注入攻击原理,如何防御 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或 ...
- 20145215《网络对抗》Exp9 Web安全基础实践
20145215<网络对抗>Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符 ...
- 20145208 蔡野 《网络对抗》Exp9 web安全基础实践
20145208 蔡野 <网络对抗>Exp9 web安全基础实践 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验后回答问题 (1)SQL注入攻击原理,如何 ...
- 20155202《网络对抗》Exp9 web安全基础实践
20155202<网络对抗>Exp9 web安全基础实践 实验前回答问题 (1)SQL注入攻击原理,如何防御 SQL注入产生的原因,和栈溢出.XSS等很多其他的攻击方法类似,就是未经检查或 ...
- 20155204《网络对抗》Exp9 Web安全基础实践
20155204<网络对抗>Exp9 Web安全基础实践 一.基础问题回答 SQL注入攻击原理,如何防御? 原理: SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以 ...
- 20155211 网络对抗 Exp9 Web安全基础实践
20155211 网络对抗 Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语 ...
随机推荐
- android java epson串口打印机
package com.common.util.portprinter; import java.io.IOException; import java.io.OutputStream; import ...
- MongoDB的固态list
在MongoDB中当前数据库所指定的list可以是一个固态的list,所谓固态就是大小确定,如创建一个固态的集合:db.createCollection("固态集合的名字",{ca ...
- Shuffle'm Up---poj3087
题目链接 题意:有两个字符串s1,s2:经过交叉问是否得到字符串s,不能输出-1,能就输出交叉的次数 每次重组的串都是s2开始,重新组合时,前面一半是s1,后一半s2: #include<std ...
- Python实现常用的逻辑数据结构
逻辑数据结构包括:线形结构.树形结构.图形结构.集合:存储结构包括:顺序存储.链式存储.索引存储.散列存储. 同一种逻辑结构可以有四种存储结构,不同的存储结构增.删.查.改的速度不同.逻辑结构与存储结 ...
- JS模块化编程(三)
AMD&CMD 对象字面量 对象字面量表示,其实就是用一对大括号括起来的键值对,也就是JavaScript 声明对象的方式 var myObject = {variableKey : vari ...
- 【Python】if相关知识点
1.9选课中心前两页课程名称打印到固定系统文件夹的某个csv文件中. #-*- coding: UTF-8 -*- #coding==utf-8 #from selenium.webdriver.su ...
- golang使用vendor目录来管理依赖包
Vendor目录介绍 随着Go 1.5 release版本的发布,vendor目录被添加到除了GOPATH和GOROOT之外的依赖目录查找的解决方案.在Go 1.6之前,你需要手动的设置环境变量GO1 ...
- ios一些问题
多线程,加锁,如何互斥. http里面的get put post的差别 sockect tcp udp
- Jmeter CSV Data Set Config参数化
在使用Jemeter做压力测试的时候,往往需要参数化用户名,密码以到达到多用户使用不同的用户名密码登录的目的.这个时候我们就可以使用CSV Data Set Config实现参数化登录: 首先通过Te ...
- jquery 实现iframe 自适应高度
转自: http://www.cnblogs.com/luluping/archive/2009/04/17/1437843.html 超级简单的方法,也不用写什么判断浏览器高度.宽度啥的.下面的两种 ...