MD5是一种常见的加密算法,它可以将任意长度的信息进行加密并生成一个固定长度的哈希值(通常是128位)。MD5加密算法是不可逆的,即无法通过哈希值还原出原始数据。它被广泛应用于对密码、数字签名等敏感信息的加密处理。
接口签名指的是对接口参数进行加密处理,以确保请求和响应数据的安全性和完整性,防止数据被篡改或伪造。接口签名通常通过对请求参数进行加密生成一个签名值,并将签名值作为请求参数的一部分发送给服务器,服务器通过验证签名值的正确性来判断请求的合法性。具体作用和意义如下:
游戏类的,一般都是当分数高到一定程度时,就可以过关
开启bp进行抓包看看
发现:当我们游戏结束时,网页会发送一个包
点击看看
尝试直接修改 score的值
很明显,是不行的。说明有其他的参数来验证分数的真实性;这个参数可能是 sign或者可能在 cookie里。
解决:多次发送包(多次玩游戏,保持不同的值),对比不同的值
很明显,当分数不同时不同的包差距在于 score和 sign
对比sign发现 sign是由 zM + **** + == 构成
将第一个包中符合条件的四位数拿去cmd5解密,发现,这个就是我们的分数
因此确定了 sign = zM + base64(score) + ==
因此 我们要改分数,就需要将 score = 999999 并且sign = zM+ base64(999999) + ==
base64(999999) 这个具体的值可以去cmd5进行加密
数据包如下
成功拿到flag