20145316《网络对抗》Exp9 Web安全基础实践学习总结

基础问题回答

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

  • SQL注入,就是攻击者通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到让后台数据库执行恶意的SQL命令的目的,并根据程序返回的结果,获得某些攻击者想得知的数据。
  • 防范:

    • 1.检查变量数据类型和格式
    • 2.过滤特殊符号
    • 3.绑定变量,使用预编译语句

    XSS攻击的原理,如何防御

  • XSS攻击类似于SQL注入攻击,攻击之前,我们先找到一个存在XSS漏洞的网站,XSS漏洞分为两种,一种是DOM Based XSS漏洞,另一种是Stored XSS漏洞。理论上,所有可输入的地方没有对输入数据进行处理的话,都会存在XSS漏洞,漏洞的危害取决于攻击代码的威力,攻击代码也不局限于script。
  • 防范:只要我们的代码中不存在漏洞,攻击者就无从下手,我们要做一个没有缝的蛋。XSS防御有如下方式————完善的过滤体系、Html encode。

    CSRF攻击原理,如何防御

  • CSRF全名是Cross-site request forgery,是一种对网站的恶意利用,CSRF比XSS更具危险性。通过伪装受信任用户的请求利用受信任网站,利用用户在可信网站上没有登出的COOKIE做恶意操作
  • 防范:

    • 1.通过 referer、token 或者 验证码 来检测用户提交。
    • 2.尽量不要在页面的链接中暴露用户隐私信息。
    • 3.对于用户修改删除等操作最好都使用post 操作 。
    • 4.避免全站通用的cookie,严格设置cookie的域。

    实验总结与体会

  • 本次实验非常有趣,不同于以往在虚拟机内操作的实验,在webgoat网站上做实验有一种“闯关”解题的快感,一次性学会了很多攻击方法。也掌握了Berpsuite等工具的使用方法。最后一次实验,完美收官。

    实验过程

  • 先开启webgoat,等待加载。
  • 当出现下面这张图所示情景时Starting ProtocolHandler,说明开启成功
  • 在浏览器中访问localhost:8080/WebGoat,用默认用户名密码登陆即可

    1.Stored XSS Attacks

  • 这个实验的意思是存储型XSS攻击,通过输入代码使用户访问时弹出非预期的内容
  • 在title框中输入<script>alert("silly human!This is 20145316!");</script>
  • 点击submit,窗口弹出,攻击成功

    2.Reflected XSS Attacks

  • 类似上一个实验,是个买东西的页面,在code框中输入<script>alert("this is 5316,I'm rich");</script>
  • 弹出窗口,攻击成功

    3.Cross Site Request Forgery(CSRF)

  • 这个实验的目的是通过邮件的方式伪造一个转账请求,查看右侧参数栏内参数
  • 在文本框中提交一个有URL恶意请求的代码,<iframe src="attack?Screen=题中给出的scr&menu=题中给出的menu&transferFunds=转账金额"></iframe>
  • 攻击成功

    4.CSRF Prompt By-Pass

  • 比上个实验多了一个“确认请求”,所以需要增加一行代码,如下
  • 攻击成功,两个请求内容都有

    5.Phishing with XSS

  • 该实验的目的是读取登录用户的用户名和密码。首先输入编辑的钓鱼网站代码(XSS攻击代码)
  • 代码如下,参考了蔡野同学的博客
  • 在搜索框中输入攻击代码后点击搜索,会看到一个要求输入用户名密码的表单如下,输入用户名密码点击login
  • WebGoat会将输入的信息捕获并反馈回来,攻击成功

    6.Numeric SQL Injection

  • 题目大意是这个表单允许使用者看到天气数据,利用SQL注入使得可以看见所有数据
  • 这里要利用到代理berpsuite来对网页内容进行篡改,具体过程周岐浩同学博客写的很清楚,下面是我的操作过程图





  • 攻击成功

    7.String SQL Injection

  • 这个题目是让大家使用SQL注入让所有的信用卡号都看得见
  • 先尝试一个输入,根据结果来找到我们要进行SQL注入的位置
  • 在文本框中输入' or 1=1 --进行攻击,成功

    8.Log Spoofing

  • 该实验是在代码中加入用户名admin迷惑用户,当用户登陆的时候登录失败,但以为自己登陆成功了。
  • 在user name 处写入代码20145316%0d%0aLogin Succeed!%0d%0aUsername: admin
  • 攻击成功

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

  • 使用admin账户Neville登陆
  • 首先在密码栏中输入' or 1=1 -- 进行永真式SQL注入,但是登录失败
  • 查看网页代码发现弑密码长度设置太短,将密码长度修长
  • 再次输入' or 1=1 --,成功

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

  • 登陆使用employee账号Larry登陆
  • 首先做上一个实验修改密码限制长度的操作
  • 点击ViewProfile,发现并没有办法使老板排在最前面
  • 更改网页代码,将ViewProfile参数改成如下
  • 再次' or 1=1 --登陆,成功

    记录


20145316《网络对抗》Exp9 Web安全基础实践学习总结的更多相关文章

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

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

  2. 20155326《网络对抗》Web安全基础实践

    20155326<网络对抗>Web安全基础实践 实验后回答的问题 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是在Web应用对后台数据库查询语句处理存在的安全漏洞,通过构建特殊 ...

  3. 20145308 《网络对抗》Web安全基础实践 学习总结

    20145308 <网络对抗> Web安全基础实践 学习总结 实验内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 基础问题回答 (1)SQL注入攻击原理, ...

  4. 20145315何佳蕾《网络对抗》Web安全基础

    20145315何佳蕾<网络对抗>Web安全基础 1.实验后回答问题 (1)SQL注入攻击原理,如何防御 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页 ...

  5. 20145326蔡馨熤《网络对抗》—— Web安全基础实践

    20145326蔡馨熤<网络对抗>—— Web安全基础实践 1.实验后回答问题 (1)SQL注入攻击原理,如何防御. 原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程 ...

  6. 20155206《网络对抗》Web安全基础实践

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

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

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

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

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

  9. 20155311《网络对抗》Web安全基础实践

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

随机推荐

  1. Java虚拟机九 java.lang.String在虚拟机中的实现

    在Java中,Java的设计者对String对象进行了大量的优化,主要有三个特点: 1.不变性: 不变性是指String对象一旦生成,则不能再对它进行改变.String的这个特点可以泛化成不变(imm ...

  2. PHP 学习笔记之一:thinkPHP的volist标签

    Volist标签主要用于在模板中循环输出数据集或者多维数组. 属性: name : 必须,输出数据模板变量,后台提供的变量. id : 必须,是循环变量,可以随便定义,但是不能跟name相同. 举个栗 ...

  3. codeforces 355C - Vasya and Robot

    因为在允许的情况下,必然是左右手交替进行,这样不会增加多余的无谓的能量. 然后根据不同的分界点,肯定会产生左手或右手重复使用的情况,这是就要加上Qr/Ql * 次数. 一开始的想法,很直接,枚举每个分 ...

  4. Kettle 4.2源码分析第一讲--Kettle 简介

    Pentaho Data Integration(PDI)简介 1. PDI结构简介 图 1‑1 PDI核心组件 Spoon是构建ETL Jobs和Transformations的工具.Spoon可以 ...

  5. FZU - 2150 Fire Game bfs+双起点枚举

    题意,10*10的地图,有若干块草地“#”,草地可以点燃,并在一秒后点燃相邻的草地.有墙壁‘·‘阻挡.初始可以从任意两点点火.问烧完最短的时间.若烧不完输出-1. 题解:由于100的数据量,直接暴力. ...

  6. Oracle安装部署之dbca静默建库和删除库

    dbca查看帮助: [oracle@wen ~]$ dbca -help 1).运行静默建库语句 [oracle@wen ~]$ dbca -silent -cloneTemplate -gdbNam ...

  7. numpy中np.nan(pandas中NAN)

    转自:http://blog.csdn.net/xiaodongxiexie/article/details/54352889 在处理数据时遇到NAN值的几率还是比较大的,有的时候需要对数据值是否为n ...

  8. 2018/04/01 每日一个Linux命令 之 sleep

    今天看到一个很有意思的指令. sleep [睡觉/休眠] 的意思. 可以用来将目前动作延迟一段时间.之后触发 -- sleep number[smhd] 重要参数 number : 时间长度,后面可接 ...

  9. 使用GIT SUBTREE集成项目到子目录(转)

    原文:http://aoxuis.me/post/2013-08-06-git-subtree 使用场景 例如,在项目Game中有一个子目录AI.Game和AI分别是一个独立的git项目,可以分开维护 ...

  10. mysql 数据库的操作

    1.数据库的查看 1)查看mysql中所有的数据库    "show databases;" mysql> show databases; +---------------- ...