手机短信验证是企业给消费者(用户)的一个凭证,通过手机短信内容的验证码来验证身份。主要用来用户注册,找回密码,用户登录等等作为强身份认证。

目前验证码的格式主要是数字,从4位到6位不等。一般来说验证码都有有效周期2~10分钟,甚至更长,超过有效周期验证码自动失效。

那么如果要想在有效的时间里爆破验证码必须多线程。假设验证码是4位,从0000~9999的10000种可能用多线程在3分钟内跑完并不是很难。

用到的工具是burpsuit。该工具属于轻量级渗透工具,在kali-linux的300多种工具中,一直top10之内。

首先找到一个验证码是4位的网站。(4位数的手机验证码在很多网站中继续被使用)

该网站有做验证,但是改验证措施只是对验证码发送量做控制作用,防止无限制触发发送验证码。对我们破解它的验证码丝毫无影响。

使用burpsuit工具对它进行抓包,结果如下:

POST /api/check_telcode.php?mobile=18XXXXXXXXX HTTP/1.1
Accept: application/json, text/javascript, */
; q=0.01
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: https://user.xxxxxxxxxx.html
Accept-Language: zh-CN
UA-CPU: AMD64
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; Trident/7.0; rv:11.0) like Gecko
Host: user.xxxx.com
Content-Length: 23
DNT: 1
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: PHPSESSID=qreb11hclishnh0i24odm7la27; _uab_collina=155081416244717379002547; nb-referrer-hostname=user.XXXXX.com; nb-start-page-url=https%3A%2F%2Fuser.XXXXX.com% .....etc.....
param=9999&name=telcode*

抓包之后,使用intruder功能对其进行暴力破解。分析完请求数据后发现,这一步的post请求只有两个参数。

param=9999&name=telcode

param=9999是我们刚才输入的错误的验证码(此时正确的验证码虽已发送,但我们并不知道),name字段就可以忽略了。
在intrude界面中Positions选项卡,设置爆破点:

根据验证码的规则,设置爆破数据。(如果是爆破登陆密码,可以从网上下载密码库文件。比如SecLists-master就收录了top100-top1000000的常用弱密码)因为是从0000~9999的纯数字。所以设置如下:

设置线程为5:

开始破解,结果如下:

所有其他验证码返回length都是477,唯独只有一个length是401。

凭直觉,这个数据应该就是验证码了。这时候再看手机上收到的验证码作为一个验证。

发现和收到的验证码完全一致。而整个破解过程其实很快还没等所有数据跑完。就基本能确定验证码是多少了。
爆破时间还不到1分钟。

到这一步就没再继续了。

总结:
1. 四位数的验证码10000位,而六位数的验证码1000000位。单从爆破时间上来看就比4位数的多100被。所以在验证码的有效期内基本很小概率能破解验证码。
2. 尽可能的缩短验证码的有效时间降低破解风险。四位数的验证码全部爆破完基本超不过5分钟。
3. 增加验证码校验的验证,上述案例中虽然有验证。但并不是针对验证码的验证。
4. 对访问请求的控制。短时间内如果出现同一Ip的大量请求,可以将其尽可能的控制。

渗透测试===使用BURPSUIT暴力破解某网站的手机验证码的更多相关文章

  1. 使用visual studio测试功能进行暴力破解

    web项目上线前需要做访问压力测试,奈何对这方面不懂,所以自己网上搜索了下相关工具没有找到合适的,就自己研究了下visual studio 2013中的测试项目,发现还挺好使的,结合数据库还能用做暴力 ...

  2. burp暴力破解之md5和绕过验证码

    Burpsuite是一个功能强大的工具,也是一个比较复杂的工具 本节主要说明一下burp的intruder模块中的2个技巧 1.md5加密 我们在payload Processing中的add选项可以 ...

  3. 转载过来的参考内容---常规36个WEB渗透测试漏洞描述及修复方法----很详细

        常规WEB渗透测试漏洞描述及修复 --转自:http://www.51testing.com/html/92/n-3723692.html (1). Apache样例文件泄漏 漏洞描述 apa ...

  4. python 暴力破解密码脚本

    python 暴力破解密码脚本 以下,仅为个人测试代码,环境也是测试环境,暴力破解原理都是一样的, 假设要暴力破解登陆网站www.a.com 用户 testUser的密码, 首先,该网站登陆的验证要支 ...

  5. web渗透测试

    信息收集 网络搜索 目录遍历:site:域名 intitle:index.of 配置文件泄露:site:域名 ext:xml | ext:conf | ext:cnf | ext:reg | ext: ...

  6. 教你用免费的hihttps开源WEB应用防火墙阻止暴力破解密码

    教你用免费的hihttps开源WEB应用防火墙阻止暴力破解密码 很多企业都有自己的网站,需要用户登录后才能访问,但有大量的黑客攻击软件可以暴力破解网站密码,即使破解不了也非常恶心.有没有免费的解决办法 ...

  7. 网络安全初级实战笔记(一):owasp zap 暴力破解

    网络安全里装着好多人的侠客梦.但是不能触碰铁律,所以,只小小的自娱自乐. 自己练习,大都会用到DVWA,一个很好的安全测试平台,自己搭建(很简单,傻瓜式搭建),自己设置安全级别,自己验证各种漏洞攻击方 ...

  8. 关于暴力破解的一些学习笔记(pikachu)

    这几天的笔记都懒得发博客都写在本地了,随缘搬上来 什么是暴力破解 就是在攻击者不知道目标账号密码情况下的,对目标系统的常识性登陆 一般会采用一些工具+特定的字典 来实现高效的连续的尝试性登陆 一个有效 ...

  9. 《11招玩转网络安全》之第三招:Web暴力破解-Low级别

    Docker中启动LocalDVWA容器,准备DVWA环境.在浏览器地址栏输入http://127.0.0.1,中打开DVWA靶机.自动跳转到了http://127.0.0.1/login.php登录 ...

随机推荐

  1. ldap禁止匿名用户登录

    此处默认ldap已经安装完成,安装文档传送门:https://www.cnblogs.com/crysmile/p/9470508.html openldap默认安装完成,是允许匿名用户登录的,因此需 ...

  2. P2461 [SDOI2008]递归数列

    题目描述 一个由自然数组成的数列按下式定义: 对于i <= k:ai = bi 对于i > k: ai = c1ai-1 + c2ai-2 + ... + ckai-k 其中bj 和 cj ...

  3. P2325 [SCOI2005]王室联邦

    题目描述 “余”人国的国王想重新编制他的国家.他想把他的国家划分成若干个省,每个省都由他们王室联邦的一个成员来管理. 他的国家有n个城市,编号为1..n.一些城市之间有道路相连,任意两个不同的城市之间 ...

  4. The Dominator of Strings HDU - 6208(ac自动机板题)

    题意: 就是求是否有一个串 是其它所有串的母串 解析: 把所有的串都加入到trie数中  然后用最长的串去匹配就好了 emm..开始理解错题意了...看成了只要存在一个串是另一个的母串就好.. 然后输 ...

  5. Day22-Django之Form组件验证

    1. Django里面的Form专门用来做验证. 用Form创建一个类,把用户发来的数据放到request.POST里面发给这个类,这个类会帮忙做验证. 返回3个结果:是否验证成功了,所有的正确信息, ...

  6. 【BZOJ4140】共点圆加强版(二进制分组)

    [BZOJ4140]共点圆加强版(二进制分组) 题面 BZOJ 题解 我卡精度卡了一天.... 之前不强制在线的做法是\(CDQ\)分治,维护一个凸壳就好了. 现在改成二进制分组,每次重建凸壳就好了. ...

  7. webservice 菜鸟探索之旅

    项目背景 接到的任务是通过调用其他平台厂商提供的webservice接口来获取他们的图片数据把图片下载下来录入我司平台.之前没有接触过webservice,所以开始了这次webservice的菜鸟之旅 ...

  8. 【bzoj2754】【scoi2012】喵星球上的点名

    题解们: 1.首先可以被很多暴力给搞过去:我以前也是这样水过去的 2.ac自动机 2.1 抽离fail树 对点名建自动机,建$fail$树的时候只保留询问节点: 对于一个喵,子串==在自动机里匹配到的 ...

  9. c动态分配结构体二维数组

    这个问题我纠结了蛮久了,因为前面一直忙(自己也懒了点),所以没有能好好研究这个.希望这篇文章能够帮助你们. #include <stdio.h> #include <stdlib.h ...

  10. tp5.1 insert 返回id, 不等于符号

    $insertId = Db::name('user_address')->insertGetId($data); //add=>insert, insert 返回值不再是插入的id; i ...