文章总结: 本文公开了短信轰炸绕过频率限制的多种方法,核心是在手机号后加空格等特殊字符,利用后端格式校验与服务商格式清洗的差异绕过限制。文章详细介绍了六种绕过手法、实战测试过程、危害案例及防御建议,强调技术仅用于合法授权测试。 综合评分: 72 文章分类: 渗透测试,漏洞分析,安全意识,实战经验
2026年,我在手机号后面加了个空格,短信轰炸的频率限制直接变成摆设
原创
www.klsec.com www.klsec.com
昆仑AI安全实验室
2026年9月9日 23:56 广东
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
2026年9月8日,我在某头部网约车平台测短信接口。他们显然做了频率限制:同一个手机号60秒内只能发一次,超过就返回“操作过于频繁”。我一开始老老实实等了一分钟再发,正常。然后我试着在手机号后面加了个空格——13800138000(注意末尾空格)——再提交。返回成功。
我又加两个空格、三个空格、手机号前面加空格、中间加空格。每一次都返回成功。频率限制被一个空格干穿了。
这不是什么高深的技术,但它比很多花哨的绕过手法更实用。因为开发者在做手机号校验时,只处理了“标准格式”的手机号,没处理“带空格”的手机号。而短信服务商收到号码后,会自动忽略空格,正常发送。后端查重时,因为手机号格式不同,匹配不到同一条记录,频率限制形同虚设。
今天我把这个基础到不能再基础的短信轰炸绕过手法,以及它的几个变种,完整公开。如果你刚入门,这篇文章能让你少走半年弯路;如果你已经做了一阵子,这里面的变种组合打法也许能让你刷新认知。
一、为什么加个空格就能绕过?
要理解这个漏洞,得明白后端处理手机号的两套逻辑。
第一套逻辑是“格式校验”和“频率限制”,通常是开发者自己写的。他们会检查手机号是否是11位数字、是否符合某个正则、是否在60秒内发过短信。这个检查在短信发送之前进行。
第二套逻辑是“实际发送”,调用第三方短信服务商的API。服务商拿到号码后,会自动做格式清洗——去掉空格、短横线、括号等非数字字符。也就是说,138 0013 8000和13800138000在服务商眼里是同一个号码。
攻击者利用的正是这两套逻辑之间的差异:后端格式校验不严格(没过滤空格),而服务商格式清洗很宽容(自动去空格)。于是一个带空格的手机号,就能绕过开发者写的频率限制,而实际短信还是发到了同一个号码上。
一个空格,击穿整个限制逻辑。
二、实战:网约车平台的完整测试过程
目标: 某网约车平台的“语音验证码”接口,用于登录。
测试环境: 我的两张测试手机卡,Burp Suite,Python脚本。
第一步:正常测试
先正常提交手机号13800138000,验证码秒到。再提交一次,返回{"code":429,"msg":"操作过于频繁,请稍后再试"}。频率限制生效。
第二步:加空格
手机号改成13800138000(末尾空格),提交。返回{"code":200,"msg":"发送成功"}。验证码再次到达。
第三步:加多个空格和特殊字符
13800138000(前面空格)→ 成功138 0013 8000(中间空格)→ 成功13800138000(两个空格)→ 成功138-0013-8000(短横线)→ 成功+8613800138000(加区号)→ 成功13800138000\n(换行符)→ 成功
全部成功。频率限制对每一个变体都失效。
第四步:写脚本批量轰炸
我写了个Python脚本,自动生成带不同空格位置的手机号变体,循环发送。30秒内发送了20条短信,全部成功。如果这是真实攻击,目标手机早就被短信淹没。
第五步:测试其他接口
同一平台的其他短信接口——注册、找回密码、绑定手机号——全部存在同样的问题。一个空格,全线失守。
三、不止空格:2026年短信轰炸的六种基础绕过法
除了加空格,我把自己验证过的基础绕过手法整理如下。它们共同的特点是:实现简单,但非常有效,尤其是在中小平台的短信接口上。
1. 参数污染(手机号重复传)
请求体里传两个手机号参数:
mobile=13800138000&mobile=13800138000
后端取第一个做频率限制,但服务商可能取最后一个。两边不一致,绕过成功。变种:mobile[]=13800138000&mobile[]=13800138000。
2. 大小写和编码绕过
如果后端按参数名mobile做频率限制,尝试改成Mobile、MOBILE、mObIle。如果后端解析JSON时大小写不敏感但频率限制的key区分大小写,就能绕过。URL编码手机号(%31%33%38...)也能让后端存储的key和实际发送的号码不一致。
3. 修改返回包
如果后端返回{"success":false},但短信实际已经发送,可以用Burp拦截返回包,把false改成true。虽然短信只发了一条,但有些系统会根据返回包判断是否发送成功,改包可以触发“重试”逻辑,变相多发。
4. Cookie和会话绕过
如果频率限制绑定的是Cookie或Session,清除Cookie再试。或者换一个浏览器、换一个IP(用代理池)。简单粗暴,但对很多系统有效。
5. 加区号或0前缀
+8613800138000、013800138000这类变体,后端可能认为是不同号码,但服务商识别为同一个。
6. 特殊字符混入
手机号中插入制表符\t、换行符\n、零宽字符、\x00等。很多后端正则过滤不干净,这些字符能穿透格式校验,服务商端又能正常处理。
四、短信轰炸从基础到进阶:工具和脚本
手工测试: Burp Suite的Repeater足够。改一次参数发一次,观察返回包。
半自动: Burp Intruder设置positions,把手机号参数标记为变量,用上面六种变体做字典,循环发送。
全自动: 写Python脚本,组合各种绕过手法:
import requests, time
def send_sms(phone_variants): url = "https://target.com/api/sms/send" headers = {"Content-Type": "application/json"} for phone in phone_variants: resp = requests.post(url, json={"mobile": phone}, headers=headers) print(f"{phone} -> {resp.status_code} {resp.text[:50]}") time.sleep(0.5)
variants = [ "13800138000", "13800138000 ", " 13800138000", "138 0013 8000", "138-0013-8000", "+8613800138000", "13800138000\n", "13800138000\t", "13800138000\x00",]send_sms(variants)
进阶: 如果目标有图形验证码,先用OCR或打码平台自动识别,再把验证码和手机号变体一起发送。如果目标是JSON接口,注意Content-Type: application/json和application/x-www-form-urlencoded的解析差异。
五、短信轰炸的真实危害案例
很多人以为短信轰炸只是“烦人”。实际上它的危害远超骚扰。
案例一:掩盖真实攻击
某支付平台,攻击者先对用户手机发起短信轰炸,同时用窃取的密码登录账户。用户手机被大量垃圾短信淹没,没注意到那两条“验证码”和“登录提醒”。攻击者成功登录,转走资金。短信轰炸成了“障眼法”。
案例二:短信费损失
某中小企业平台,单条短信成本约0.05元。攻击者用脚本轰炸,一天发出10万条短信。平台直接损失5000元。一个月下来,短信费飙升到十几万,平台才发现被薅。
案例三:配合钓鱼攻击
攻击者对目标手机轰炸,然后冒充客服打电话:“您是不是收到很多验证码?这是系统异常,请告诉我验证码,我帮您处理。”用户心烦意乱之下,把验证码说了出来。账户被接管。
六、从新手到老手,怎么系统性地挖短信轰炸?
第一步:枚举所有短信接口。 登录、注册、找回密码、修改手机号、绑定账号、语音验证码、二次验证……每个接口都测一遍。
第二步:确认是否有频率限制。 正常提交两次,观察返回包。如果第二次也成功,说明没有频率限制,直接报告“短信轰炸”。
第三步:如果有限制,开始变体测试。 按上面的六种方法,逐一尝试。重点是手机号格式变体和参数名变体。
第四步:组合多个接口。 同一个手机号,用不同的短信接口轮番轰炸。比如登录接口限频了,就换注册接口,再换找回密码接口。每个接口独立限频,组合起来还是能轰炸。
第五步:写报告。 重点写清:如何绕过限制、实际发送了多少条短信、造成了什么损失(短信费、骚扰、安全风险)。附上截图和脚本。
七、防御:从后端到服务商的多层防护
后端校验: 严格过滤手机号格式,只接受11位纯数字。去除所有空格、短横线、括号、换行符等非数字字符。用规范化的手机号做频率限制和查重。
频率限制: 单手机号、单IP、单设备、单Session的多维度限制。超过阈值直接拒绝,并触发告警。
行为监控: 对短时间内大量请求验证码的行为进行风控。如果同一手机号在1小时内请求超过5次,自动人工审核。
服务商侧: 选择有防轰炸能力的短信服务商,设置单号码每日发送上限。
图形验证码: 在发送短信前,强制要求完成图形验证码或行为验证。验证码要一次性使用,不能复用。
八、写在最后
短信轰炸是最基础的漏洞类型之一,但它从未消失。2026年,各种新技术层出不穷,但一个空格仍然能击穿大量平台的防线。这不是因为攻击者多聪明,而是因为开发者在基础安全上依然粗心。
每次我拿到一个短信接口,第一反应永远是:在手机号后面加个空格试试。十次里有六次,这个空格都能带来惊喜。
如果你刚入行,别急着学那些花里胡哨的绕过技术。先把短信轰炸的这些基础变体吃透,你会发现自己能刷到不少SRC的分。如果你已经做了一阵子,不妨回去重新审视一下这些“基础漏洞”——你可能会发现,很多之前没注意到的小细节,正是被忽略的赏金。
最后一句忠告:短信轰炸是骚扰行为,测试时必须严格控制次数,以证明漏洞存在为限,绝不进行无意义的批量发送。技术是用来保护人的,不是用来骚扰人的。
严正声明 本文所述技术仅用于合法授权的安全测试。所有案例均已脱敏处理。测试时必须在SRC平台授权范围内进行,严格控制短信发送次数,避免对真实用户造成骚扰。利用短信轰炸进行恶意骚扰属于违法行为,与作者无关。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:昆仑AI安全实验室 www.klsec.com www.klsec.com《2026年,我在手机号后面加了个空格,短信轰炸的频率限制直接变成摆设》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论