http://www.nigesb.com/flash-game-security.html

网上收集的三款可用于 flash AMF 调试的工具,其实都是些抓包工具,但对 AMF 提供了直接的支持。

0.charles flash 抓包工具

0.Wireshark抓包分析软件

1. AMF Explorer
基于 Firebug ,对 Firefox 中传输的 AMF 数据进行反序列化以方便查看。
地址:http://amfexplorer.riaforge.org/

one hour  personal loans

2. ServiceCapture
为开发 Rich Internet Application(RIA) 调试、测试和分析而设计的HTTP传输抓包工具。
地址:http://www.kevinlangdon.com/serviceCapture/

one hour  personal loans

3. Charles
Charles 是一个 HTTP 代理和监视器,可以让开发人员查看所有 HTTP 或 SSL/HTTPS 传输的数据。
地址:http://www.charlesproxy.com/

一篇来自职业欠钱哥哥的东西,很有帮助。

这两年WebGame比较火,WebGame中,前端用Flash表现比较多,而服务器端依然是Web应用。

不少产品已经开始用AMF(Action Message Format)来取代标准的HTTP交互。(这里描述不严谨,因为AMF仍然是基于标准HTTP协议的,只不过用二进制的方式实现序列化和反序列化) 注1.

使用二进制方式实现序列化的好处是数据会得到很好的压缩(对比一下XML、JSON等方式),但缺点是可读性比较差。

我们不再敢奢望使用一个Sniffer从十六进制转换成ASCII码就可以清楚的了解发送了什么信息,获得了什么反馈了。

来看一下AMF协议数据抓包的前后模样吧:

上图是HTTP传输经过gzip压缩后的,直接用sniffer抓包后是没法直接阅读的。看看解压缩后的十六进制内容

可读性已经大大提升了,在FireBug或者是HTTP Watch里可以看到一部分字符串,外加很多乱码,因为二进制内容有很多超出可显示范围的字符。比如下面这个样子:

这时候,我们需要一个能够解析AMF协议的工具(或者是某些开发类库),来做这样的翻译工作。

@CFC4N 同学给我推荐了一款神兵利器——Charles 。

Charles 是一个HTTP代理服务器、,HTTP监视器、反转代理服务器。它允许一个开发者查看所有连接互联网的HTTP通信.这些包括request, response现HTTP headers (包含cookies与caching信息)。如果HTTP协议里包含了AMF数据,它会解析成人类看得懂的文本信息,并且允许你修改以后(下断点的情况)再发送,或者是简单的重放。

看看在Charles下数据的原貌吧。

一旦数据“明文化”,协议清晰了,安全问题也就随之而来了。

还 记得那句”一切输入都是有害的”吧。

现在我们只要在Charles中下好断点,在每个Request中,仔细端详每个参数,通过变量名猜测其含义和用途,修改值以后再送出。

就可以测试很多以前我们轻车熟路的攻击套路了。

以WebGame为例,我们可以做如下尝试:

1. 任务: 反复做/交任务、乱序做任务(之前已做过的、还没接到的)

与某个NPC对话/战斗,修改NPC的ID;修改任务ID乱序测试;重复提交任务完成信息;

2. 战斗: 攻击、治疗效果是本地提交

观察战斗过程中与服务器交互的数据,是否携带过程参数,如有,各种修改各种提交,超大值/负值/游戏里不存在的值/别人的值

3. avatar属性:提交 几率合成性质的结果、绕过CD时间/数量限制提交

几率性的内容往往也是现在游戏里价值最高的核心内容,一个脑残的“保存”设计可能就允许自己“随机”提交一个“几率性的结果”

4. 交易系统: 负值/临界值提交、出售/撤销他人物品、自定义价格

市场里明码标价的物品价格是否出现在购买请求封包中;挂售后取回的物品ID尝试修改为别人的物品ID看看;挂个价格为负数的物品自己买;挂售有最低价格限制?封包里想写多少我说了算;

5. 副本、日常: 绕过次数限制、绕过流程提交最终结果

游戏怕老玩家无聊,总会做一些每日都能进行的日常任务和副本,也往往有个次数限制,看看这个限制是不是纸老虎,抓了完成任务的数据包后重放就知道了;

6. 社交系统: 添加自己为好友、发布富文本信息(伪装系统发言的格式、颜色)、绕过CD限制发言/发信

只有系统公告和GM喊话才是彩色的?未必,在封包里把消息改为我是GM看看;每次发言都要等待一段时间?看我封包的厉害

当然,也包括了现代小黑黑们最擅长的SQL注入、畸形数据(D.O.S)攻击。

上述所有的参数,都可以尝试修改为SQL注入语句,或者是十六进制不满足AMF规范协议的一个00,可能就会让服务端程序抛出一个异常,甚至直接crash掉。

从偷懒的心理来说,但凡是有了一丁点儿的封装,就必然有一定数量的程序员会认为:这一堆乱七八糟的东西普通用户是看不懂的,没人能够随便修改,所以我也就不必对它们做小心翼翼的处理了。

于是,越是表面上看起来复杂的东西,攻击起来的效果可能会更令人意想不到(在了解协议,将信息“明文化”,可自定义提交的场景中)。

最后,AMF也已经有了不少类库可以直接识别、书写了,

再加上Flash本身可以被SWF Decompiler之类的工具反编译(虽然看不到原始的代码,但基本的资源、变量名、AS脚本还是看的比较清楚的),那些做webgame脱机外挂的朋友应该是再熟悉不过了。

所以,基于Flash+AMF+Web后台的WebGame,应该还有很大的发挥空间。

参考资料:

1. 伟大的@CFC4N同学,还有当初没看过AMF协议硬生生从十六进制摸索出了协议规律的neptune同学

2. AMF  http://www.cnblogs.com/studyzy/archive/2008/04/09/1143685.html

注解1. 关于序列化和反序列化

我一直觉得那些专业的XX百科、XX WiKi,都是喜欢用专业术语解释专业术语,对小白用户来说,往往看2眼会更加不知所云。

不过我相信,亲自操作过Charles之后,会对这个概念理解的很形象的。

flashnbsp;amfnbsp;工具相关推荐

  1. 从命令行到IDE,版本管理工具Git详解(远程仓库创建+命令行讲解+IDEA集成使用)

    首先,Git已经并不只是GitHub,而是所有基于Git的平台,只要在你的电脑上面下载了Git,你就可以通过Git去管理"基于Git的平台"上的代码,常用的平台有GitHub.Gi ...

  2. Redis 笔记(16)— info 指令和命令行工具(查看内存、状态、客户端连接数、监控服务器、扫描大key、采样服务器、执行批量命令等)

    Info 命令返回关于 Redis 服务器的各种信息和统计数值.通过给定可选的参数 section ,可以让命令只返回某一部分的信息. 1. 显示模块 server : 一般 Redis 服务器信息, ...

  3. Go 学习笔记(81)— Go 性能分析工具 pprof

    Go 语言工具链中的 go pprof 可以帮助开发者快速分析及定位各种性能问题,如 CPU消耗 .内存分配及阻塞分析 .具体作用如下: 性能分析首先需要使用 runtime.pprof 包嵌入到待分 ...

  4. etcd 笔记(02)— etcd 安装(apt 或 yum 安装 、二进制包安装、Docker 安装 etcd、etcd 前端工具etcdkeeper)

    1. 使用 apt 或 yum 安装 etcd 命令如下: sudo apt-get install etcd 或者 sudo yum install etcd 这样安装的缺点是:安装的 etcd 版 ...

  5. 网络安全工具:Nmap

    使用Nmap工具实现对目标主机A.B(IP地址可自行设置)的扫描. 1. 对目标主机A.B进行全扫描. (1)命令:nmap -sT 192.138.58.2 nmap -sT 192.168.58. ...

  6. java日期转化工具类

    package com.rest.ful.utils;import java.text.DateFormat; import java.text.ParseException; import java ...

  7. java数据类型相互转换工具类

    package com.rest.ful.utils;import java.util.ArrayList; import java.util.HashMap; import java.util.Li ...

  8. 论文阅读工具ReadPaper

    对于搞科研的同学们来说,看论文是要经历的第一关,尤其是要读好多篇论文的时候,更是着实令人头大. 这不,最近无意中发现了个在线论文阅读网站:readpaper.com,号称「论文阅读笔记神器,硕博科研学 ...

  9. dbeaver数据库工具

    20220114 ctrl+ '+' 字符放大快捷键 ctrl+ '-' 字符减小快捷键 20220111 C:\Users\hz\AppData\Roaming\DBeaverData\worksp ...

最新文章

  1. 如何赋能零售行业数字化转型? SAP从这些方向发力
  2. 【从零开始学BPM,Day2】默认表单开发
  3. Linux下编译构建成功HelloWorld驱动程序并加载
  4. 剑指offer--二维数组的查找
  5. oracle varchar2() 占几个字母,Oracle number date varchar2字段类型占用空间大小
  6. 百度地图隐藏LOGO显示
  7. Altium AD20原理图从库中更新变动,库中模型修改后同步到原理图中
  8. Linux 命令(83)—— groups 命令
  9. JSP之jsp内置标签
  10. 实战系列之天气预报实时采集
  11. 物联lot是什么意思_什么是IOT物联网技术
  12. 修改win10服务器登录密码,玩转Win10密码基础篇:设置修改系统登录密码
  13. python阿拉伯数字转中文_阿拉伯数字转换成中文的python代码
  14. Python分析《哈哈哈哈哈》4万弹幕
  15. PHP Screw php代码解密,运用php screw进行源代码加密
  16. 2009年1月高等教育国际金融全国统一命题考试
  17. 线程有哪些状态?每个状态是什么意思?又是如何切换的?
  18. 妻子写给丈夫情人的催泪信
  19. 国产32核服务器CPU验证成功!100%自主指令架构,单机最多可支持四路128核,来自龙芯中科...
  20. 根据 Excel 中的数据批量修改文件的扩展名

热门文章

  1. 在扫码枪上离线使用SAP
  2. 你是我内心的一首歌在线试听,你是我内心的一首歌歌词,下载
  3. Word2010 英文版 章节的数字自动编号
  4. 爆肝整理!2022年字节跳动 java 后端开发岗面试题整理
  5. 曼哈顿距离和切比雪夫距离的转换
  6. gitee的注册使用,git下载,TortoiseGit下载安装
  7. 查找奥运五环色的位置
  8. 远程FPGA虚拟实验平台之计数器与分频器(10Mhz分为1hz verilog HDL描述)
  9. java 自动编译_java自动编译批处理
  10. PLC控制系统 信号隔离器BM100