验证码业务逻辑漏洞

31 篇文章 0 订阅
9 篇文章 0 订阅

简单学习了一下php的gd库,也就是图形处理,主要是验证码相关的。

验证码可以有效防止暴力破解,也可以用来防止恶意灌水、广告贴等,原理就是生成验证码的时候也会生成一个字符串到session中,然后用户根据图片进行输入、提交,再判断是否能和session中的值匹配上,通常验证码图片会加入一些噪点、干扰线等。验证码的机器识别大概分为四个步骤,取出字模、二值化、计算特征、对照样本,可以采用让验证码更“乱”的方式提高安全性,比较高级的是通过神经网络进行识别,但是这样学习成本太高。

另外,如果验证码仅仅为4位纯数字这样,也是非常容易被暴力破解,尝试10000次一定能破解一个验证码,利用爆破工具,设置上几十个线程,破解只需要几分钟,建议采用非纯数字且6位的验证码。

空验证码突破:大多数验证码的生命周期是这样的:用户访问页面,生成code并保存到session中,用户提交验证码,服务端进行对比。试想,如果我们不去访问页面,二十直接提交表单,这个时候服务端是没有产生code的,当我们提交表单的验证码为空,正好和服务端对应,php是弱类型语言,就绕过了验证码。就像下面这个逻辑:

<?php
    if($_POST["code"]!=$_SESSION["code"]){
        unset($_SESSION["code"]);
        return['status'=>false,'msg'=>'验证失败'];
    }
return['status'=>'ture','msg'=>'验证成功'];

它在验证失败以后把session里的code删掉了,而这个时候我们直接repeat,就可以打这个漏洞。

另外还有一个逻辑漏洞,就是很多网站为了方便用户,在他们第一次登录无需验证码,如果这个“第一次”的判断条件是我们可控的,比如cookie,我们删掉以后就可以绕过。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MUNG东隅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值