网站地图    收藏   

主页 > 后端 > 网站安全 >

腾讯3366游戏分数任意修改 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-17 10:15 作者: 阅读:

[导读] 3366中任意一个可以和好友PK分数的游戏,如 飞天忍者猫 http: www 3366 com flash 1000168 shtml开始游戏,结束时Tamper数据包:POST数据为:qzversion=0platform=1key=a6eextv1mcf8cdbad982946c560ab2dd29...

3366中任意一个可以和好友PK分数的游戏,如 飞天忍者猫 http://www.3366.com/flash/1000168.shtml
 
开始游戏,结束时Tamper数据包:
 
POST数据为:
 
qzversion=0&platform=1&key=a6eextv1mcf8cdbad982946c560ab2dd29a918e2233be95da272d01116&submit=true&uin=XXXXXX&score=230&act=set&pid=1000168
 
 
 
从内存中提取swf(或直接下载)分析源代码,该swf会加载远端api的一个swf(如果没改名的话叫openservice_as3_v3.swf),再拿回来反编译分析代码。发现有这么一个函数:
 
 
 
private function getFinalKey(param1:String, param2:Number) : String

{

if (param1)

{

}

if (param1.length == 48)

{

}

if (param2 > 999999999)

{

return null;

}

var _loc_3:* = param1;

param1 = param1.substr(42, 6);

var _loc_4:* = parseInt(param1, 36);

var _loc_5:* = _loc_4.toString(35);

var _loc_6:* = _loc_5.length;

var _loc_7:* = parseInt(param1.substr((param1.length - 1)), 36) % _loc_6;

var _loc_8:* = param2.toString(36);

var _loc_9:* = _loc_5.substr(0, _loc_7);

var _loc_10:* = _loc_5.substr(_loc_7);

var _loc_11:* = _loc_7 + 10;

var _loc_12:* = _loc_11 + _loc_8.length;

var _loc_13:* = MD5.hash(_loc_11.toString() + param2.toString() + _loc_12.toString());

var _loc_14:* = _loc_13.substring(6, 10);

var _loc_15:* = [_loc_11.toString(36), _loc_9, _loc_8, _loc_10, _loc_14, _loc_12.toString(36), _loc_3].join("");

return _loc_15;

}// end function

 

 
 
 
 
这个函数用于生成最后KEY,该函数有2个输入值,一个是得的分数(我们修改这个),然后是一个关键KEY(param1)。
 
观察:
 
var _loc_3:* = param1;
 
 
var _loc_15:* = [_loc_11.toString(36), _loc_9, _loc_8, _loc_10, _loc_14, _loc_12.toString(36), _loc_3].join("");
 
 
 
可以知道这个关键KEY 位于 最终 KEY 的末尾。 通过多次抓包发现 最终KEY的后48位都是不变的。 所以我们试着取 关键KEY 为 最终KEY后48位。
 
 
 
然后我们把关键KEY和想要修改的分数作为参数 执行 这个函数中的算法(可把as代码改成js代码直接在浏览器console里跑)得到最终KEY。然后 tamper 提交。 修改成功。 
 

 
修复方案:

1. 完善认证算法,不要把关键KEY完整放在最终KEY之内。
 
2. 关键代码源码混淆。 
 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论