验证码
简介
验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序
作用
- 防止恶意破解密码
- 防止暴力破解
- 刷票
- 论坛灌水
验证码绕过
设置了验证码并不是完全可靠,在很多情况存在验证码绕过的情况
- 前端验证 验证码,但是并没有后端验证
- 验证码设置了但是并没有进行校验,导致乱输验证码也能够登录
- 验证码可以重复使用
- 验证码空值绕过
- 验证码干扰过低,轻松使用脚本识别
- 验证码会在HTML页面输出
- 验证码可控制
- 验证码有规律,比如时间戳的后6位
- 万能验证码 (000000 直接绕过)
- 验证码有时藏在cookie中
- 图片验证码,类型太少,容易识别
多次登录后才出现验证码绕过
- 基于session
- 基于IP
- 基于用户:爆破用户名,而非爆破密码
密码找回漏洞
当用户忘记密码时,需要找回密码,有两种方式:
第一种:找回密码,往邮箱发送明文或密文的密码或验证码(手机短信验证就是往注册时所填写的手机号发送验证码),通过这样的方法判断是否是本人在操作
第二种:发送重置密码的链接到邮箱
第三种: 在注册之前,通过预先设定一个密保问题,忘记密码时,通过此密保进行认证,认证成功才能进入密码修改页面
- §密保问题可能容易直接被猜测 (比如很多学校的知道学号和身份证号码就可以重置校园通的密码)
- 密保问题答案页面中显示(数据包里面可能自带了密保答案,可能在JS里面)
核心:验证码代表了用户的身份
密码找回绕过
- 验证码发送给前端返回
- 验证码无次数限制可爆破
- 验证码可控
- 直接可跳转到修改密码页面
- 越权漏洞–>自己验证码通过改包然后修改他们的密码