免费获取订阅服务的黑客技术解析
背景
目标应用是一个娱乐平台,提供付费和免费视频内容,用户需要购买订阅才能观看付费内容。该应用只允许特定国家的手机号注册,也可以通过社交媒体账号登录,但仍需手机验证。
挑战
由于没有目标国家的手机号,且不使用社交媒体登录(仍需手机验证),我无法创建账户。
思路与过程
绕过手机验证
首先尝试用任意手机号注册。注册时需要验证6位验证码,但可以通过操纵验证请求的响应来绕过验证:
- 输入随机手机号和6位验证码
- 拦截验证请求
- 修改响应代码以绕过验证
成功绕过验证后,就可以使用任意手机号创建账户,并可以添加邮箱地址(尽管没有直接的邮箱注册选项)。
绕过订阅付费
登录后遇到订阅弹窗。由于使用Stripe支付网关,直接绕过支付很困难,因此转向攻击平台API来激活订阅。
通过抓取API端点,发现了提供订阅计划信息的端点。分析后发现,虽然在现有账户中添加订阅不可行(受支付网关限制),但在注册请求中有一个有趣的字段:"cunsumerSubscription": null。
于是创建新账户时,在注册请求中注入从订阅信息API获取的订阅数据:
|
|
通过精心构造上述请求,可以创建已附加订阅的账户,绕过付费墙。更妙的是,通过修改durationDays、subscriptionStartDateTime和subscriptionEndDateTime值,可以延长订阅期限,甚至创建无限期订阅。
总结
通过深入研究看似无用的功能,成功绕过了付费订阅系统。这种方法不仅绕过了订阅验证,还能创建带有无限订阅的账户。
给黑客的建议
- 从多个角度审视目标
- 寻找能提供信息的API端点
- 学会在没有API文档的情况下构建请求
- 不要因错误而气馁
给开发者的建议
- 不要通过API泄露关键信息(如密钥、订阅信息等)
- 不要让客户通过API更新不必要的信息
- 正确验证OTP
“有时候,黑客攻击只是某人在某件事上花费了比常人预期更多的时间”