瞎猫碰死耗子式破解某直播网站在线心跳签名
某直播网站去年上线了全新的经验值系统, 同时也变更了心跳地址, 并且加了签名校验, 同一天该网站app也更新了此功能, 而且在第二天就被破解, 所以PC端破解可有可无, 就一直搁置到了今天首先已知app端是对请求参数做了五次hash, 包括SHA256, SHA244, SHA512等, 依据此经验推断PC端也是如此, 所以最开始使用了暴力破解, 但没有成功
通过追踪JavaScript可知被加密字符串(JSON)和一个数组被传到了wasm里
因为wasm和Android上的smail一样, 绝大部分是自动生成的, 基本上人类不可读
用wabt翻译成c也看着让人头疼
所以尝试手动传入参数, 猜测一下这个wasm到底干了什么
先传入正常参数, 返回值与之前一致
说明没有使用非对称加密或者随机密钥
再逐个删减对象, 发现ua项对结果无影响
接着改变排列, 对结果无影响
说明内部有格式化操作
对参数值(value)改写,结果有变化
改变键值(key), 报错
接着改变第二个参数, 把原来的 分别改为 , , , , ,
当改为 时返回一个非hex字符串
通过观察猜测可能是格式化之后的结果, 但是字符串不包含benchmark, 应该是盐值(salt)或者密钥(key)
编写暴力破解程序
解得算法 为 HMAC-MD5
继续改变数组值, 得出 , , , , 分别为HMAC-SHA1, HMAC-SHA256, HMAC-SHA244, HMAC-SHA512, HMAC-SHA384
验证一下
可以看到服务器已经接受签名
虽然这个过程看上去很顺利, 但实际是是无奈的做法, 因为wasm调试太过复杂, 对于这种比较新的语言, 静态/动态分析工具都不成熟, 这种瞎猫碰死耗子的方法也就能碰这一次了 运气也是实力的一部分 所以是哪个网站。。 厉害呀,真是牛批 高级,不太懂 妥妥的实力派{:1_893:} 卧槽,大佬 厉害了大佬 我去,,,,牛牛牛{:1_893:} 牛啊牛啊,厉害了。