微信第三方投票平台刷票思路浅析

目录 HACK

移动互联网时代,有很多有意思的产物,比如微信拉票,成了一部分人维系社交关系的纽带。因为身处其中,接触到各类投票活动,大多是在微信上传播的第三方投票平台活动,百度”微信投票”,搜索结果很丰富:

image

出于学术研究的目的,对少量几家进行了调查,发现均存在可刷票的情况,由于是学术研究,未利用、未深入,此文仅记录有限的思路。

投票的流程大致分为以下几步:

关注(可选) –> 点击活动链接 –> 点击目标选手,为其投票

通常是无需第一步关注的,也就是点进活动链接,直接投票,分析投票的请求包,有几个通用参数:

1、活动ID

2、目标选手ID

3、投票人ID

其中活动ID和目标选手ID是固定的,遇到了以下几种情况:

1、条件竞争:多线程并发同时发送大量请求,导致可以刷超出限制的票。

2、越权遍历:遍历投票人ID,固定活动ID和目标选手ID,服务端仅通过投票人ID判断投票的用户,就会造成很多人在给同一选手投票的假象,大部分平台是这种情况。

3、验证字段提前获取:遇到有一个平台,稍微复杂一点,在2步请求里有多个校验逻辑,不过都可以突破。第一步请求活动页面时,会校验一个ID,同一个客户端的ID固定,在该字段中添加一个随机数就可以绕过了。主要是第二步,客户端ID、投票人ID和token都是在第一步的响应包中获取,服务端会判断这3个字段的有效性,并且以这个投票人ID进行计数,第二步的绕过方法就是获取第一步响应包中的那3个字段,拼接到第二步的请求即可。通过几行代码,在第一步的请求中插入随机数,然后从第一步的响应包中获取几个字段,拼接到第二步的请求中,再执行第二步请求,即可完成一次刷票。

4、cookies篡改:遇到服务端是通过统计cookies中某个字段,来限制投票次数,这种情况可篡改该字段,在其中插入一个随机数,或者直接把这个字段删掉。

以上是我遇到的几种情况,除了第3种,其它基本没费什么力气就绕过了,而对于第3种,也只要耐心分析下业务逻辑即可绕过。我认为第三方平台是很难防止通过伪造请求刷票的,即使提高投票的门槛,比如注册、关注,也仅是提高攻击成本,所以很多投票平台在后台带了一些数据分析的功能,从请求的地理位置、投票时间、ID的关联性等等,把一些分析刷票的数据展示给用户,或者直接阻断一些特征明显的刷票行为。另外还发现一些平台,发现刷票会直接取消目标选手的参赛资格,那么问题来了,恶意竞争时不用给自己刷票,给对手刷就行了。

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注