手机号归一化缺失导致的批量刷积分

admin 2026-09-02 05:29:12 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文披露手机号归一化缺失导致的批量刷积分漏洞。根因是短信下发、注册落库与奖励判定三链路对手机号归一化不一致,攻击者利用前导零或国家码变体绕过首注判定,造成资损。建议所有用户输入统一归一化处理,并加强活动风控。 综合评分: 82 文章分类: 漏洞分析,渗透测试,web安全,实战经验


手机号归一化缺失导致的批量刷积分

游山玩水 游山玩水

山水SRC

2026年9月1日 09:16 河南

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

免责声明

本公众号分享的所有渗透测试技术文章仅面向合法授权的安全测试、学习交流与研究用途。读者必须确保自身行为符合《网络安全法》等相关法律法规,严禁将其用于任何未授权攻击等非法活动。因不当使用或传播相关内容所引发的任何法律责任与风险,由行为人自行承担,本公众号(或本人)概不负责

测试流程

测试前提

  1. 平台支持手机号注册,且有”新号注册送积分/优惠券”类营销活动。
  2. 奖励发放逻辑以”手机号是否首次出现”为判定依据(如 phone唯一索引或 is_first=1)。
  3. 服务端在注册落库 / 奖励校验时未对手机号做归一化(如去前导零、去空格、国家码统一 +86处理),导致 13800138000与 013800138000被当成两个不同手机号。
  4. 短信验证码下发接口与注册接口对手机号的归一化处理不一致(或验证码接口做了去零、注册接口没做),使得 +0变种仍能收到码并完成注册。

测试流程

  1. 用手机号 A = 13800000000注册账号 A,完成短信校验,进入平台,确认首注积分已到账(基线:首号得奖)。
  2. 再发起一次注册,手机号填 0A = 013800000000(A 前加前导零),请求短信,确认能收到验证码(说明下发侧把 0A和 A都路由到同一 SIM,或下发侧也缺归一化)。
  3. 用 0A完成注册,得到账号 B。
  4. 查账号 B 的积分/优惠券:
  • 若 B 也拿到了”新号首注”积分 → 漏洞成立
  1. (变体)试 +86A0086AA(尾部空格)、A\n等,看是否都能过且都得奖。

根因一句话

手机号在”短信下发 → 注册落库 → 奖励判定”三条链路上归一化不一致:138xxxx和 0138xxxx在电信侧是同一 SIM(能收同一个码),但业务侧被当成两个用户,奖励首注判定被绕过。本质是输入规范化(Input Canonicalization)缺失——所有用户输入进系统第一件事必须是归一化,手机号尤甚(+86/前导零/空格/分隔符 -)。

危害

  1. 资损(核心):攻击者用一个真实手机号 + 前导零/国家码变体,可刷 N 份首注积分、优惠券、试用 VIP,营销预算被薅穿。
  2. 可批量放大:买一段号段(13800000000–13800009999),每个号试 原号 / +86 / 0086 / 0前缀四种变体 → 理论 4 倍账号量。
  3. 破坏活动模型:”一手机号一新人”的运营假设被打破,活动 ROI 失真,财务对账困难。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:山水SRC 游山玩水 游山玩水《手机号归一化缺失导致的批量刷积分》

评论:0   参与:  0