WebGoat里面关于会话劫持(Hijack a Session)这个课程的标准答案里面除了使用WebScarab以外还使用了其他的工具来找出合法的SessionID以完成这个课程,实际上这个课程完全可以只使用WebScarab来完成。下面把我的解法分享下:

这个课程就是说因为这个Web应用用来生成会话标识的算法不够随机,所以很容易被预测,从而要求我们发现会话标识生成的规律并且使用暴力破解的办法找到一个有效的会话标识。

这里我们使用WebScarab作为代理来观察浏览器和服务器之间的数据通信。先随便输入一点东西来观察浏览器发送给服务器的请求。

从上图可以看到有个WEAKID的Cookie,这就是我们的攻击目标,我们使用WebScarab的会话标识分析功能来分析这个会话标识。在WebScarab上点击“SessionID Analysis”这个Tab页面,然后在“Collection”子页面的“Previous Requests”的下拉菜单中选取我们需要分析的那个请求,如下图所示:

然后我们需要使WebScarab意识到Cookie里面的WEAKID这个参数是会话标识。我们知道如果客户端发送给Web服务器的请求里面没有会话标识的话,服务器会从新生成一个新的会话标识并通过Cookie返回给客户端,利用这个特性,我们可以使WebScarab通过分析服务器返回的Cookie的办法来识别会话标识。

这里我们删除现有的这个参数,然后点击"Test"按钮让WebScarab进行分析。弹出类似如下的对话框表示WebScarab已经成功的识别出了会话标识的参数。

然后在取样数量这里我们输入稍微大点的数字,比如50,然后点击“Fetch”按钮,WebScarab就会自动从服务器上获取50个会话标识的样例。

下面我们进入“SessionID Analysis”下的“Analysis”子页面,在“Session Identifier”下拉菜单中选择这个参数后可以看到WebScarab获取的这些会话标识。

我们可以看到这些会话标识是非常有规律的,是被短横线分割的2部分,前一部分是每次加1的有序排列的数字,后一部分也是不断增加的有序排列的数字,我们可以猜测后一部分应该是时间戳。

再进一步仔细观察后可以发现有些特别的地方,如上图所示,会话标记第一部分的数字跳了一个。这说明中间跳掉的会话标记是被别的用户使用了,我们的目标就是找到这个会话标识。

在我们这个例子中,根据我们发现的会话标识生成的规律,中间跳掉的这个会话标识的值应该是在19749-1349946763292到19749-1349946763392之间。

到这一步为止,我们使用的方法都和WebGoat的标准答案里面是一样的,但是下面就不同了。下面我们使用WebScarab的模糊测试的功能来试图找到这个会话标识。

我们先把相应的请求添加到模糊测试的模板里面。在WebScarab的“Summary”页面中,选择目标请求后,右键菜单中可以看到“Use as fuzz template”的菜单项,点击这个菜单项就可以把这个请求作为模糊测试的基础模板。

然后进入WebScarab的“Fuzzer”页面。会发现系统已经自动帮我们分析出了所有可以做模糊测试的参数。点击下面的“Source”按钮添加模糊测试的源。

在弹出的对话框中,给这个源起一个名字比如“ForWeakID”输入到“Description”里面,然后我们使用正则表达式的方式来添加我们需要测试的数据,输入这样的正则表达式:19749-1349946763[2-3][0-9][0-9],然后点击“Add”按钮。注意这里我们输入的数据会使WebScarab测试从19749-1349946763200到19749-1349946763399的值,略微有些扩大范围,这是因为WebScarab只支持基本正则表达式,我们略微扩大一点测试的数据范围,可以把这个正则表达式写得简单一点。

然后关闭弹出的对话框,再为Cookie里面的WEAKID选择我们添加的源,就可以点击“Start”按钮开始运行了。

结果的分析还是需要人工进行,我们需要知道输入有效地会话标识之后服务器会返回怎样的数据。在WebGoat里面我们知道一旦提交了正确的数据给服务器,服务器返回的数据里面会包含“Congratulations”的消息,所以我们只需要检查看哪个请求的返回有包含这样的信息就好。

针对这个练习还有个技巧,我们只需要看返回的数据长度和其他的返回不一样的就好,因为有效的参数只有一个,所以包含有效参数的请求返回的数据长度一定和其他的不一样。

如下图所示,我看到有个返回的数据大小和其他不一样的请求,点击查看详细信息,果然在服务器的返回里面发现了“Congratulations”的消息,所以这个请求里面带的WEAKID参数的值19749-1349946763342就是我们要找的那个合法的会话标志。

这时候我们实际上也已经完成这个课程了。刷新一下课程,就可以看到课程完成的标记。

我们也可以再验证一下我们找到的这个有效的WEAKID的值。输入任何信息后提交,然后使用WebScarab拦截浏览器发出的请求,把请求里面的WEAKID参数改为我们找到的这个值之后在提交给服务器,然后可以在页面上看到课程显示成功完成的信息。

WebGoat教程解析——Hijack a Session相关推荐

  1. texstudio 使用方法_TeXstudio怎么使用,TeXstudio使用教程解析

    TeXstudio使用教程解析 一.双击安装包,点击下一步 二.选择是否安装到当前用户或所有用户,如果PC上只有一个用户,则选择哪个用户并不重要 三.选择要安装的位置,作者选择默认位置 四.在安装结束 ...

  2. geany配置python_Geany配置python教程解析

    Geany配置python教程解析 一.首先,我们在 二.点击上图中的Geany-1.33_setup.exe下载.该软件的大小只有14.7兆字节.它是一个非常轻的编辑器.下载完成后双击安装. 三.安 ...

  3. 大商创虚拟服务器安装教程,【大商创X】一键部署安装文档教程解析

    原标题:[大商创X]一键部署安装文档教程解析 注意事项: 请确保服务器环境为干净的环境 只支持centos6.Centos7操作系统,其他系统不支持! 一键部署大商创X环境 1.通过xshell等工具 ...

  4. 笔记本python3.7.4详细安装教程_Python3.7安装pyaudio教程解析

    Python3.7安装pyaudio教程解析 本人笔记本电脑安装的是 python3.7, 64位操作系统,基于x64的处理器 因为 pyaudio 暂时不支持 python3.7 和 3.8,所以若 ...

  5. texstudio 使用方法_TeXstudio使用教程解析

    TeXstudio是一个用于编写LaTeX文档的集成环境.我们的目标是使编写乳液变得更加方便和舒适.因此,TeXstudio具有许多特性,例如语法突出显示.集成浏览器.引用检查和各种可访问性.那么下面 ...

  6. geany怎么配python_教程详情|Geany配置python教程解析_234游戏网

    Geany是一个简单而实用的文本编辑器,并且在使用的使用非常简单,在使用的国产中功能也是十分强大,那么我们的大家知道Geany怎么配置吗?下面是关于Geany配置python的详细解析,感兴趣的伙伴可 ...

  7. gson 解析json_Gson示例教程解析JSON

    gson 解析json Welcome to Gson Example Tutorial. In last post we looked at the Java JSON API and you ca ...

  8. 【SIP教程】 SDP(Session Description Protocol)会话描述协议

    概述 SDP用来描述多媒体会话的应用层控制协议,为会话通知.会话邀请和其它形式的多媒体会话初始化等目的提供了多媒体会话描述. 是一个基于文本的协议,这样就能保证协议的可扩展性比较强,这样就使其具有广泛 ...

  9. java教程解析_【B0666】[java视频教程]全方位深入解析最新版SpringBoot源码新手都能学懂视频教程...

    Java视频教程名称:全方位深入解析最新版SpringBoot源码新手都能学懂视频教程    java自学网[javazx.com]  SpringBoot视频教程   it教程 Java自学网收集整 ...

  10. OkHttp官方教程解析-彻底入门OkHttp使用

    最近半年来身边开发的朋友越来越多的提到OkHttp,上谷歌百度一下,确实OkHttp成了时下最火的HTTP框架,于是我也开始放下Volley,转而关注OkHttp,五一期间仔细看了官方WiKi介绍(我 ...

最新文章

  1. 用脚写字考上985!无臂硕士开学报到,宿舍设计太细节了……
  2. RemoveError: ‘requests‘ is a dependency of conda and cannot be removed from conda‘s operating envir
  3. SpringMVC中的数据校验
  4. [国家集训队]航班安排 (最大费用最大流)
  5. oracle怎么查询模式名,oracle怎么查询数据库实例的三种方式
  6. Jmeter跨线程组调用变量
  7. 静态内容负载均衡的具体实现-续《几百元搞定大型网站》
  8. 了解mysql的undo log
  9. CF991D Bishwock
  10. 最详细的Vivado安装教程
  11. matlab图片客观评价,图像质量评价(一):IQA介绍
  12. 谷歌(google)、百度、必应d等高级搜索指令使用
  13. 计算机图形学中几何变换的定义,计算机图形学 实验7 三维几何变换(MFC中)
  14. 华为服务器RH2288 V2 BIOS配置
  15. 华为+android+root权限获取root,华为root权限怎么开启怎么获取(简单华为手机ROOT教程)...
  16. mac常用快捷键,Mac文件重命名快捷键,Mac OS快速访问系统根目录
  17. WPF 录屏软件研发心得及思路分享(已结束开发)
  18. GitHub 上的前端项目收集
  19. IDEA 导入maven项目后导(下载)包失败的问题
  20. Java支持的国家和语言

热门文章

  1. 阜阳市计算机学校助学金申请书,计算机*学生助学金申请书
  2. 一文带你掌握监控进程技术实现
  3. SQL Server-【知识与实战III】年龄查询、条件查询、多表查询、姓氏查询
  4. 第13届蓝桥杯赛后感想
  5. MySQL 性能分析之 EXPLAIN 关键字
  6. Android中实现微信分享的功能
  7. 小白怎样使用EXCEL导入MATLAB画出图像
  8. 让你的 Xcode8 继续使用插件
  9. GitHub中国区前100名到底是什么样的人?(转载)
  10. 【解决】Outlook无法正常显示邮件中的图片