记录一次微信公众号拉票/点赞破解记录:
image.png
- 看到页面第一反应是使用抓包工具找到点赞请求,我使用的是charles,很容易找到了请求:
image.png
- 对方接口是否有做过登录验证?没做的话就可以循环调接口来“点赞”。尝试使用postman直接请求,发现提示需要登录:
image.png
从抓包那个截图可以看出,点赞请求需要传一个token。对方接口是否有校验过token正确性呢?尝试修改token、使用常用方式解码token,无果。
开始尝试从前端代码里找token源头,通过抓包,找到了js的地址,发现这里是经过压缩的,这里需要注意最后一行,如果map文件没删,也许可以通过map文件反编译出js源码?
image.png
- 尝试反编译map文件,这里使用reverse-sourcemap,前端使用的vue开发。将各个map文件反编译后,基本得到了整个项目的目录结构和源码:
image.png
-
继续寻找token来源,token是通过
user/wx_login
接口获取
image.png
image.png
-
openid
和unionid
是什么,这里不多说明了,可以自行百度。现在尝试调用user/wx_login
接口,看看接口有没有验证openid
和unionid
的正确性:
image.png
发现果然没有校验,到这里已经成功了!=。=
所以刷赞的步骤如下:
1、先拿不同的openid
和unionid
请求user/wx_login
接口获取token
2、用token请求index/praise?new_id=18513
接口点赞
Over,总结一下平时开发中需要注意的地方:
1、前端线上发布时,不可使用source-map
2、后端接口需要校验各种token/id真实性,防止伪造
ps:最后并没有刷赞,只是出于好奇,尝试找一下对方网站是否有漏洞。