12558网页游戏私服论坛

 找回密码
 立即注册
游戏开服表 申请开服
游戏名称 游戏描述 开服状态 游戏福利 运营商 游戏链接
攻城掠地-仿官 全新玩法,觉醒武将,觉醒技能 每周新区 经典复古版本,长久稳定 进入游戏
巅峰新版攻 攻城掠地公益服 攻城掠地SF 新兵种、新武将(兵种) 进入游戏
攻城掠地公 散人玩家的天堂 新开 进入游戏
改版攻城掠 上线即可国战PK 稳定新区 全新改版,功能强大 进入游戏
少年江山 高福利高爆率 刚开一秒 江湖水落潜蛟龙 进入游戏
太古封魔录 开服送10亿钻石 福利多多 不用充钱也可升级 进入游戏
神魔之道 签到送元宝 稳定开新区 送豪华签到奖励 进入游戏
神奇三国 统帅三军,招揽名将 免费玩新区 激情国战,征战四方 进入游戏
龙符 三日豪礼领到爽 天天开新区 助你征战无双 进入游戏
王者之师 免费领豪华奖励 免费玩新区 6元送6888元宝 进入游戏
查看: 447|回复: 0

魔兽争霸-领取收费道具漏洞

[复制链接]

63

主题

63

帖子

136

积分

实习版主

Rank: 7Rank: 7Rank: 7

积分
136
发表于 2019-8-23 17:16:33 | 显示全部楼层 |阅读模式
案例:官方平台

商城:收费道具

测试:自定义房间(龙珠)

大量:伪人民币玩家


提取地图脚本:



锁定漏洞位置:
[Lua] 纯文本查看 复制代码function Trig_GFFunc001A takes nothing returns nothingif GetEnumPlayer()!=Player(10) and GetEnumPlayer()!=Player(11) and GetEnumPlayer()!=Player(PLAYER_NEUTRAL_AGGRESSIVE) thenif S2I(DzAPI_Map_GetServerValue(GetEnumPlayer(),"B"))==0 and StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("月牙兲冲~-") thencall DzAPI_Map_SaveServerValue(GetEnumPlayer(),"B","S2I(1)")call DzAPI_Map_SaveServerValue(GetEnumPlayer(),"J",I2S(S2I(DzAPI_Map_GetServerValue(GetEnumPlayer(),"J"))+300))elseendifif DzAPI_Map_GetMapLevel(GetEnumPlayer())=500 thencall DzAPI_Map_SaveServerValue(GetEnumPlayer(),"G","")call DzAPI_Map_SaveServerValue(GetEnumPlayer(),"g","")elseendifif DzAPI_Map_GetMapLevel(GetEnumPlayer())=500 thencall DzAPI_Map_SaveServerValue(GetEnumPlayer(),"J","")call DzAPI_Map_SaveServerValue(GetEnumPlayer(),"j","")elseendifcall SaveInteger(YDHT,GetHandleId(GetEnumPlayer()),$F034EC60,S2I(DzAPI_Map_GetServerValue(GetEnumPlayer(),"J")))call SaveInteger(YDHT,GetHandleId(GetEnumPlayer()),$D634A9E,S2I(DzAPI_Map_GetServerValue(GetEnumPlayer(),"G")))if DzAPI_Map_GetMapConfig("DZ")==GetPlayerName(GetEnumPlayer()) or DzAPI_Map_GetMapConfig("DZ2")==GetPlayerName(GetEnumPlayer()) or DzAPI_Map_GetMapConfig("DZ3")==GetPlayerName(GetEnumPlayer()) or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("作者情殇~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("雄霸天下147~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("虎牙丶小布叮雪糕~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("虎牙霸王枪~-") or HWK()==true thencall SaveInteger(YDHT,GetHandleId(GetEnumPlayer()),$18FC6F47,1)set udg_TSSX_ZS[GetConvertedPlayerId(GetEnumPlayer())]=udg_TSSX_ZS[GetConvertedPlayerId(GetEnumPlayer())]+5.elseendifif DzAPI_Map_GetMapConfig("DZ")==GetPlayerName(GetEnumPlayer()) or DzAPI_Map_GetMapConfig("DZ2")==GetPlayerName(GetEnumPlayer()) or DzAPI_Map_GetMapConfig("DZ3")==GetPlayerName(GetEnumPlayer()) or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("作者情殇~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("雄霸天下147~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("虎牙丶小布叮雪糕~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("虎牙霸王枪~-") or THHWK()==true thencall AddPlayerTechResearched(GetEnumPlayer(),$5230314F,1)set udg_TSSX_ZS[GetConvertedPlayerId(GetEnumPlayer())]=udg_TSSX_ZS[GetConvertedPlayerId(GetEnumPlayer())]+10.elseendifif DzAPI_Map_GetMapConfig("DZ")==GetPlayerName(GetEnumPlayer()) or DzAPI_Map_GetMapConfig("DZ2")==GetPlayerName(GetEnumPlayer()) or DzAPI_Map_GetMapConfig("DZ3")==GetPlayerName(GetEnumPlayer()) or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("强子阿~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("琥珀丶川~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("作者情殇~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("雄霸天下147~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("虎牙丶小布叮雪糕~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("虎牙霸王枪~-") or ZZY()==true thencall AddPlayerTechResearched(GetEnumPlayer(),$52303148,1)set udg_TSSX_ZS[GetConvertedPlayerId(GetEnumPlayer())]=udg_TSSX_ZS[GetConvertedPlayerId(GetEnumPlayer())]+5.call SaveReal(YDHT,GetHandleId(udg_d[GetConvertedPlayerId(GetEnumPlayer())]),$6BC38F96,udg_TSSX_ZS[GetConvertedPlayerId(GetEnumPlayer())])elseendifif DzAPI_Map_GetMapConfig("DZ")==GetPlayerName(GetEnumPlayer()) or DzAPI_Map_GetMapConfig("DZ2")==GetPlayerName(GetEnumPlayer()) or DzAPI_Map_GetMapConfig("DZ3")==GetPlayerName(GetEnumPlayer()) or DzAPI_Map_GetMapConfig("DZ4")==GetPlayerName(GetEnumPlayer()) or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("作者情殇~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("强子阿~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("雄霸天下147~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("虎牙丶小布叮雪糕~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("虎牙霸王枪~-") or WQZZY()==true thencall AddPlayerTechResearched(GetEnumPlayer(),$52303149,1)set udg_TSSX_ZS[GetConvertedPlayerId(GetEnumPlayer())]=udg_TSSX_ZS[GetConvertedPlayerId(GetEnumPlayer())]+10.call SaveReal(YDHT,GetHandleId(udg_d[GetConvertedPlayerId(GetEnumPlayer())]),$6BC38F96,udg_TSSX_ZS[GetConvertedPlayerId(GetEnumPlayer())])elseendifif DzAPI_Map_GetMapConfig("DZ")==GetPlayerName(GetEnumPlayer()) or DzAPI_Map_GetMapConfig("DZ2")==GetPlayerName(GetEnumPlayer()) or DzAPI_Map_GetMapConfig("DZ3")==GetPlayerName(GetEnumPlayer()) or DzAPI_Map_GetMapConfig("DZ4")==GetPlayerName(GetEnumPlayer()) or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("作者情殇~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("雄霸天下147~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("虎牙丶小布叮雪糕~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("虎牙霸王枪~-") or BJT()==true thencall AddPlayerTechResearched(GetEnumPlayer(),$5230314E,1)elseendifif DzAPI_Map_GetMapLevel(GetEnumPlayer())>=7 thencall AddPlayerTechResearched(GetEnumPlayer(),$5230314B,1)elseendifif DzAPI_Map_GetStoredInteger(GetEnumPlayer(),"N1")==1 or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("情殇~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("作者情殇~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("超级赛亚神十阶~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("丶盛盛盛盛盛~-") or DzAPI_Map_GetMapConfig("HD")=="开启" thencall AddPlayerTechResearched(GetEnumPlayer(),$52303146,1)call SaveInteger(YDHT,GetHandleId(GetEnumPlayer()),$27DFC423,1)elseendifif DzAPI_Map_GetStoredInteger(GetEnumPlayer(),"N2")==1 or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("情殇~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("作者情殇~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("超级赛亚神十阶~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("丶盛盛盛盛盛~-") or DzAPI_Map_GetMapConfig("HD")=="开启" thencall AddPlayerTechResearched(GetEnumPlayer(),$52303142,1)call SaveInteger(YDHT,GetHandleId(GetEnumPlayer()),$5D6F8057,1)elseendifif DzAPI_Map_GetStoredInteger(GetEnumPlayer(),"N3")==1 or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("情殇~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("作者情殇~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("超级赛亚神十阶~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("丶盛盛盛盛盛~-") or DzAPI_Map_GetMapConfig("HD")=="开启" thencall AddPlayerTechResearched(GetEnumPlayer(),$52303143,1)call SaveInteger(YDHT,GetHandleId(GetEnumPlayer()),$C100A2BF,1)elseendifif DzAPI_Map_GetStoredInteger(GetEnumPlayer(),"N4")==1 or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("情殇~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("作者情殇~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("超级赛亚神十阶~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("丶盛盛盛盛盛~-") or DzAPI_Map_GetMapConfig("HD")=="开启" thencall AddPlayerTechResearched(GetEnumPlayer(),$52303144,1)call SaveInteger(YDHT,GetHandleId(GetEnumPlayer()),$5A3EEF8D,1)elseendifif DzAPI_Map_GetStoredInteger(GetEnumPlayer(),"N5")==1 or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("情殇~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("作者情殇~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("超级赛亚神十阶~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("小兔兔丶々~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("Canrry。~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("丶盛盛盛盛盛~-") or DzAPI_Map_GetMapConfig("HD")=="开启" thencall AddPlayerTechResearched(GetEnumPlayer(),$52303145,1)call SaveInteger(YDHT,GetHandleId(GetEnumPlayer()),$6C7E2719,1)elseendifif DzAPI_Map_GetStoredInteger(GetEnumPlayer(),"N6")==1 or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("情殇~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("作者情殇~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("超级赛亚神十阶~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("丶盛盛盛盛盛~-") or DzAPI_Map_GetMapConfig("HD")=="开启" thencall AddPlayerTechResearched(GetEnumPlayer(),$5230314A,1)call SaveInteger(YDHT,GetHandleId(GetEnumPlayer()),$2F80B4C6,1)elseendifif DzAPI_Map_GetStoredInteger(GetEnumPlayer(),"N7")==1 or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("情殇~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("作者情殇~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("超级赛亚神十阶~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("丶盛盛盛盛盛~-") or DzAPI_Map_GetMapConfig("HD")=="开启" thencall SaveInteger(YDHT,GetHandleId(GetEnumPlayer()),$2FD71D4B,1)elseendifif DzAPI_Map_GetStoredInteger(GetEnumPlayer(),"N8")==1 or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("情殇~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("作者情殇~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("超级赛亚神十阶~-") or StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("丶盛盛盛盛盛~-") thencall SaveInteger(YDHT,GetHandleId(GetEnumPlayer()),$C93D1D12,1)elseendifelseendifendfunction

锁定关键代码:
StringHash(GetPlayerName(GetEnumPlayer())+"~-")==StringHash("作者情殇~-")

分析漏洞代码
1.这个代码位于条件判断语句,条件成立就可获得收费道具的使用权
2.条件是哈希值和哈希值比较:
左侧计算的哈希值是(获取玩家名称+固定字符串)
右侧计算的哈希值是个固定字符串(拥有使用权的玩家)
3.为什么可以利用(同一个哈希值,可能对应N个玩家名称),
4.怎么利用
   1.生成随机名称(如果名称里面有字母,必须是大写),然后和固定字符串拼接
   2.计算拼接字符串的哈希值
   3.计算哈希值(拥有使用权的玩家)
   4.两个哈希值比较,如果相同,输出:生成的随机名称
   5.注册游戏账号,玩家名称输入:生成的随机名称
   6.然后就有了对应地图的赞助使用权

批量生成名称:
[Asm] 纯文本查看 复制代码#include #include #include //获取字符串的哈希值,核心//参数一:字符串指针//参数二:字符串长度//参数三:填0就行//返回值:返回字符串的哈希值int __fastcall GetStringHash(unsigned __int8 *a1, unsigned int a2, int a3){        unsigned int v3; // eax        unsigned __int8 *v4; // edx        int v5; // ecx        unsigned int v6; // esi        int v7; // ebx        int v8; // edi        int v9; // esi        unsigned int v10; // edi        int v11; // eax        int v12; // ecx        int v13; // ebx        unsigned int v14; // esi        unsigned int v15; // edi        int v16; // ebx        unsigned int v17; // esi        unsigned int v18; // edi        bool v19; // zf        unsigned int v20; // edi        int v21; // ebx        unsigned int v22; // esi        unsigned int v23; // edi        int v24; // ebx        unsigned int v25; // esi        unsigned int v26; // edi        int v27; // ebx        unsigned int v29; // [esp+10h] [ebp-8h]        unsigned int v30; // [esp+14h] [ebp-4h]        int v31; // [esp+20h] [ebp+8h]        v3 = a2;        v4 = a1;        v29 = v3;        v5 = v3;        v30 = v3;        v6 = -1640531527;        v7 = -1640531527;        v8 = a3;        if (v3 >= 0xC)        {                v31 = v3 / 0xC;                do                {                        v9 = ((v4[5] + ((v4[6] + (v4[7]  15) ^ (v18 - v6 - v7);                        v5 = v30 - 12;                        v19 = v31-- == 1;                        v30 -= 12;                } while (!v19);                v3 = v29;        }        v20 = v3 + v8;        switch (v5)        {        case 1:                goto LABEL_16;        case 2:                goto LABEL_15;        case 3:                goto LABEL_14;        case 4:                goto LABEL_13;        case 5:                goto LABEL_12;        case 6:                goto LABEL_11;        case 7:                goto LABEL_10;        case 8:                goto LABEL_9;        case 9:                goto LABEL_8;        case 10:                goto LABEL_7;        case 11:                v20 += v4[10]  15) ^ (v26 - ((v27

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
楼主热帖
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|12558网页游戏私服论坛 |网站地图

GMT+8, 2024-5-13 17:27 , Processed in 0.140625 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表