问题背景

起因是前段几个月有个渗透项目,对面web的后台没有验证码错误次数的校验,可以反复尝试,最终我不断获取验证码,利用FFUF天生的高并发速度直接搞到了一个账户的验证码,最终撕开web后台,进一步挖掘了后台的漏洞。当时很顺利,不超过两个小时就进入对面的web后台系统了。

我由此好奇,到底是这类攻击受到什么影响,这类攻击的成功率又如何?在现实成功的概率有多大?我们可以转化成一个数学背景,然后进行建模分析。

建模分析

  • 6 位纯数字验证码(000000-999999,共 1,000,000 种可能)。
  • 验证码 完全随机,每次获取都会变化。
  • 有效期:5 分钟(可调整)。
  • 爆破速度:1000 次/秒
  • 目标是计算 在不同时间窗口内的破解成功率,并探索 如果缩短验证码有效期而不影响 5 小时内的破解成功率

数学分析

我的大学数学计算能力已经还给数学老师了,这里就偷个懒,问问GPT,看看O3的思维链的结论:

这个它公式的结论:

这是deepseek的计算结果:

题外插曲

没想到居然是100%,不过这倒是和我早年的SRC挖掘的实践情况一致,实际上,我几年前利用这类逻辑漏洞基本上能在2个小时直接就接管这类用户。如果运气够好,甚至第一次攻击即可接管。

插一句题外故事,今年年前还有刚入门的新人在我面前吹嘘自己SRC,说自己SRC排名很高,一问是挖的什么漏洞,还说TOP10的SQL注入、XSS,我内心都直想笑。不过想来没必要揭穿人家,毕竟给新人保留一点颜面,等到他们被毒打了才知道不容易。

据我所知,BAT、主流大厂收的SRC漏洞,基本上都是逻辑漏洞为主,RCE、SQL这类漏洞早10年或许可能有?现在”新人“再找这类基本就是痴人说梦,倒是听说过有些使用小0day交SRC,也就赚个零花钱;之余SRC百万赏金,怕不是得黑客技术修炼到”化神期“,修炼10年起步的老妖怪,或是大陆的天才才能到达的层次了。

更进一步

回到我们原题,既然和验证码有效期无关,我们就更关注速率来判断成功率了,并不是什么系统都能跑到1000个并发每秒的,让AI帮我们推导一下:

这个是deepseek的答案:

这个是gork3的答案:

看起来至少有两个错了,或者都错了,大模型的幻觉依然严重,到2025年依然不擅长解答复杂数学题,或者说任何稍微复杂的问题就不懂装懂了。不是数学专业,我也无法判定到底谁对错,算是简要分析了一下之前的攻击思路在数学逻辑的可能性。

总结

这类攻击方法也就对大集团、高并发的业务场景有用。更具体来说,根据我这几年经验,一般也就出现在JAVA、GO、RUST这种默认跑的飞快的web上,基本上2000个并发起步,甚至上万,倒是不用太关心概率问题,基本上就是100%,碰上IIS、PHP这种慢的和乌龟一样的,基本不用考虑, 这些的并发维持在一两百都是烧高香了。