WebGoat系列实验Buffer Overflows & Code Quality & Concurrency

Off-by-One Overflows

  1. 实验需要访问OWASP Hotel页面,找出VIP客户的房间号。
  2. Step 1中需要登记用户的First Name,Last Name以及Room Number,随意填入数据,点击Submit提交即可。
  3. Step 2中需要确认住宿的时间。查看网页源代码,发现在Step 1中输入的3个参数是hidden input方式。
  4. 选择$9.99 - 24hours选项,点击Accept Terms按钮。
  5. 此时使用Burp拦截GET请求报文。
  6. 将GET请求报文发送到intruder中,设置Attack type为Sniper,分别将last_name,first_name和room_no设置为payload的位置,Payload type选择Character blocks模式(也可以使用Numbers模式填充房间号,但是位数的增长比较慢...),Payload选项随意选择了一个字符9,最小长度为1,最大长度为10000,步长设置为1000。
  7. exploit后发现使用房间号room_no可以使得程序发生Buffer Overflow错误,从而获取VIP的房间信息。
  8. 分析payload数据发现,程序大约从room_no为5000个9开始发生Buffer Overflow错误,当room_no超过约7000个9的时候,服务器返回400的错误信息。表明此时发出的GET请求报文已经不合法。
  9. 返回Step 1,将获取到的VIP房间信息填写到输入框中,点击Submit通过实验。

Discover Clues in the HTML

  1. 寻找登录的线索。
  2. 查看源代码发现遗留的用户名与密码。
  3. 成功登录。

Shopping Cart Concurrency Flaw

  1. 需要攻击网页的并发缺陷,用更低的价格购买商品。
  2. 将每件商品的数目设定为2,点击Update Cart按钮。
  3. 使用Burp截取GET请求报文,发现更新内容是对4件商品数目的更新。
  4. 在另外一个标签页中打开购物界面,将所有商品的数目设定为1,点击Purchase按钮,出现Confirm按钮与Cancel按钮。
  5. 使用Burp截取的GET请求报文表明,此时仍向服务器发送商品的数目。
  6. 点击Confirm按钮,使用Burp拦截,发现此时已经没有在报文中发送商品价格,推测商品的价格保存在服务器端(?),然后丢弃该报文。
  7. 在前一个标签页中点击Update Cart按钮更新价格,在第二个标签页中点击Confirm按钮,通过实验。

Thread Safety Problems

  1. Web应用程序可以同时处理很多http请求。开发人员经常使用的变量不是线程安全的。线程安全是指一个对象或类的领域在多线程同时使用的时候总是保持有效的状态。它往往可以利用并发错误,精确地在同一时间同一个页面加载另一个用户。
  2. 同时打开两个标签页,一个填写jeff,另一个填写dave,快速的点击两个标签页的Submit按钮,就会出现两个标签页显示的用户都是同一个的错误。

WebGoat系列实验Buffer Overflows & Code Quality & Concurrency的更多相关文章

  1. WebGoat系列实验Cross-Site Scripting (XSS)

    WebGoat系列实验Cross-Site Scripting (XSS) PhishingTitle 本次实验是在一个已知存在XSS漏洞的页面进行钓鱼攻击.通过使用XSS与HTML注入,在页面中注入 ...

  2. WebGoat系列实验AJAX Security

    WebGoat系列实验AJAX Security DOM Injiction 实验对象是一个接受激活密钥后允许你访问的系统,实验目标是尝试将激活按钮变得可以点击. 直接修改页面代码激活按钮,Chrom ...

  3. WebGoat系列实验Injection Flaws

    WebGoat系列实验Injection Flaws Numeric SQL Injection 下列表单允许用户查看天气信息,尝试注入SQL语句显示所有天气信息. 选择一个位置的天气,如Columb ...

  4. WebGoat系列实验Denial of Service & Insecure Communication

    WebGoat系列实验Denial of Service & Insecure Communication ZipBomb 服务器仅接收ZIP文件,将上传的文件解压,进行操作之后删除.已知服务 ...

  5. WebGoat系列实验Authentication Flaws

    WebGoat系列实验Authentication Flaws Forgot Password Web应用经常给用户提供取回密码的功能,但是许多应用的实现策略实现的很差,用于验证用户的信息非常简单. ...

  6. WebGoat系列实验Access Control Flaws

    WebGoat系列实验Access Control Flaws Using an Access Control Matrix 在基于角色的访问控制策略中,每个角色都代表了一个访问权限的集合.一个用户可 ...

  7. 16.翻译系列:EF 6 Code -First中使用存储过程【EF 6 Code-First系列】

    原文链接:https://www.entityframeworktutorial.net/entityframework6/code-first-insert-update-delete-stored ...

  8. Mininet 系列实验(六)

    写在前面 这次实验遇到了非常多问题,非常非常多,花了很多时间去解决,还是有一些小问题没有解决,但是基本上能完成实验.建议先看完全文再开始做实验. 实验内容 先看一下本次实验的拓扑图: 在该环境下,假设 ...

  9. Mininet 系列实验(四)

    实验内容 本次实验拓扑图: 在该环境下,h0 向 h1 发送数据包,由于在 mininet 脚本中设置了连接损耗率,在传输过程中会丢失一些包,本次实验的目的是展示如何通过控制器计算路径损耗速率(h0- ...

随机推荐

  1. shell while的用法

    1. #!/bin/shint=1while (( "$int < 10" ))doecho "$int"let "int++"don ...

  2. 尚硅谷Java视频教程导航(学习路线图)

    最近很火,上去看了看,对于入门的人还是有点作用的,做个记号,留着以后学习. Java视频教程下载导航(学习路线图) 网站地址:http://www.atguigu.com/download.shtml

  3. 在装有windows跟ubuntu的机器上重新安装windows后修复ubuntu的grub

    本文只对没有单独用类似easyBCD这种软件单独设立启动分区的双系统,在重新安装win7之后,因为win7覆盖了ubuntu的grub,导致ubuntu无法启动的问题. (1)不管使用什么方法,首先需 ...

  4. 关于本地模块安装入maven仓库出现的异常

    Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.5.9.RELEASE:repackage (de ...

  5. 日志收集系统搭建-BELK

    前言 日志是我们分析系统运行情况.问题定位.优化分析等主要数据源头.目前,主流的业务系统都采用了分布式.微服务的形式.如果想要查看日志,就需要从不同的节点上去查看,而且对于整个业务链路也非常不清晰.因 ...

  6. Erlang pool management -- RabbitMQ worker_pool

    在RabbitMQ中,pool 是以worker_pool 的形式存在的, 其主要用途之一是对Mnesia transaction 的操作. 而在RabbitMQ 中, pool 中的worker 数 ...

  7. calc PI

    https://en.wikipedia.org/wiki/Pi code https://github.com/HHS-IntroProgramming/Calculate-Pi https://g ...

  8. web基础 (三) CSS

    css 层叠样式表 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明. selector { property: value; property: value; ... property: ...

  9. Python函数(十)-装饰器(三)

    如果多个函数想通过一个装饰器来实现不同的功能的话,可以给装饰器传入参数,让装饰器里的函数对参数进行判断,来实现不同的功能 # -*- coding:utf-8 -*- __author__ = &qu ...

  10. javaScript之动态样式

        动态添加样式可以实现更好的视觉效果和交互效果,下面就介绍一下如何动态和删除样式: 方法一.使用obj.className来修改样式表的类名 obj.className = “style1”; ...