腾讯3366小游戏站算法被破解

简要描述:

对于这样一个网站来说.积分算法被破解.就等于可以随意修改自己的分数.严重程度可想而知.

详细说明:

某日和我家程序员一起出差去做一个项目.然后夜里俩人打赌,谁先破解出来3366的算法,输的人第二天就要请胜利者足疗.于是乎便有了下面的故事.最终的结果是我家伟大的程序员取得了整场比赛的胜利!恭喜她,她就是verkey!!!!!

好,下面我来分析下整个算法的破解过程.

我在3366.com上选取了一款玩的人最多的积分游戏.

名字叫做彩色砖块,由于我水平太差,第一盘只得了31分,如下图

1.对上图数据抓包得到以下内容

qzversion=0&platform=1&key=bgvbapy1c89f901d0cdf89334b994e429c0100992e3b90692abe6fadd&submit=true&uin=2443199410&score=31&act=set&pid=1000132

可以看到分数为31分,key值为bgvbapy1c89f901d0cdf89334b994e429c0100992e3b90692abe6fadd



2.去掉这个key值的后48位

得到bgvbapy1c



3、剩余key值的第一位:

如果是a,则从第2位开始计算。

如果是b,则从第3位开始计算。

....依次类推。

对应如下:

a-2

b-3

c-4

d-5

e-6

f-7

.....

该key的第一位为b,所以从第3位开始计算,第3位为v.



3、计算剩余key的长度,按照如下对应关系,取有效计算范围。

如剩余key值长度为9,那么取1位计算。

如剩余key值长度为10,那么取2位计算。

如剩余key值长度为11,那么取3位计算。

如剩余key值长度为12,那么取4位计算。

.....

剩余的key值的长度为9,那么从第3位"v"开始,取1位,即"v"。



4、计算"v"的值,怎么计算呢?

其实分数的算法为36进制,0-9,a-z等36个数字字符构成如下对应关系:

0-0

1-1

2-2

3-3

4-4

5-5

6-6

7-7

8-8

9-9

a-10

b-11

c-12

d-13

e-14

f-15

g-16

h-17

i-18

j-19

k-20

l-21

m-22

n-23

o-24

p-25

q-26

r-27

s-28

t-29

u-30

v-31

w-32

x-33

y-34

z-35

.....

从z之后,再往下推,可得到:

10 36

11 37

12 38

13 39

14 40

15 41

16 42

17 43

18 44

19 45

1a 46

1b 47

1c 48

1d 49

1e 50

1f 51

1g 52

1h 53

1i 54

1j 55

1k 56

1l 57

1m 58

1n 59

1o 60

1p 61

1q 62

1r 63

1s 64

1t 65

1u 66

1v 67

1w 68

1x 69

1y 70

1z 71

由上得知v等于31

那么更大一点的数字呢?

比如说"1a"这样的值呢?

这样推导太麻烦,怎么用公式进行计算呢?

其实很简单,看如下示例:

1a=1*36+a=36+10=46



再看几个例子相信你就会推导了:

9位长度的key:

ad5x7lsyb 1d79f349cc25551adff77cbdf5768509acf99812b656119c

计算:d=13

c1imrwe0d 36443325bec5f7f4f1b0b56b04804bee90f25ecf931c2c08

计算:m=22



10位长度的key:

a3dfcfdqvc 36443325bec5f7f4f1b0b56b04804bee90f25ecf931c2c08

计算:3d=3*36+d=108+13=121

b53h20htmd c829da8e21bc82ea9b964a6094bb7d92f9f7f50aa04e5fc7

计算:3h=3*36+h=108+17=125



11位长度的key:

b38p4nvtb6e eec693296a4a49131ed70461f5e354f2018f6cf5ccb8957e

计算:8p4=((8*36)+p)*36+4=313*36+4=11272

a9662iq0u4d eec693296a4a49131ed70461f5e354f2018f6cf5ccb8957e

计算:966=((9*36)+6)*36+6=(324+6)*36+6=11880+6=11886



依次类推。。。。





截断.修改数据包就可以改你的游戏分数了.

但是貌似key的长度不能变.



破解算法无恶意,只做研究.发出来大家学习下.

摘自:http://www.wooyun.org/bugs/wooyun-2010-04488

更多安全文章:http://edu.pkav.net/#subject

原文地址:https://www.cnblogs.com/milantgh/p/3645689.html