验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。
可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式,我们利用比较简易的方式实现了这个功能。 这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答CAPTCHA的问题,所以回答出问题的用户就可以被认为是人类。
验证码五花八门,有中文字,纯数字,点击字符、数学运算…… [其实还有另一种验证码]
设置了验证码并不是完全可靠,在很多情况存在验证码绕过的情况(举例是在登录处)
一、前端验证验证码,并没有后端验证。直接抓包然后进行跑数据包,反正有没有验证码的阻碍 二、验证码设置了但是并没有效验,乱输验证码也能够成功的登录(估计老板没给开发工资吧) 三、验证码可以重复使用,比如现在的验证码1111,然后虽然你登录失败后验证码会变,但是你输入1111他却判定你验证码正确(常见)
实例:https://www.uedbox.com/post/14207/
四、验证码空值绕过,比如,我们现在抓一个包,发现登录参数是user=admin&password=admin&yzm=4123。 yzm验证码参数,但是我们如果去掉yzm的传参我们就可以绕过验证码机制,直接传参user=admin&password=admin,验证码就失效了
实例:https://www.uedbox.com/post/22266/五、验证码干扰过低,轻松使用脚本识别https://www.uedbox.com/post/10085/六:验证码会在HTML页面输出。https://www.uedbox.com/post/16869/七、验证码可控制,比如他的验证码包含在URL里面,是一个URL传参,我们可以把URL设置定,那么验证码可控制 https://www.uedbox.com/post/29913/
八、验证码有规则,比如是时间戳的后6位(rand函数进行随机数)
九、有万能验证码,验证码无论是什么,只要输入000000就能直接绕过
十、验证码有的时候会藏在cookie里面,分析一下是不是存在验证码的参数
十一、图片验证码,类型太少,容易识别 https://www.uedbox.com/post/24112/多次登录后才出
现验证码绕过:
基于session:https://www.uedbox.com/post/22043/
基于ip: https://www.uedbox.com/post/28442/
基于用户: 爆破用户名,而非爆破密码
第一种就是找回密码,往邮箱发送明文或密文的密码或者验证码(手机短信验证就是往你手机号码发验证码)通过这样的方法来判断是否是本人。
第二种发送一个重置密码的链接到邮箱。
上述的密码找回方法会有什么样的漏洞呢? 1.验证码发送后前端返回(https://www.uedbox.com/post/13890/) 2.验证码无次数限制可爆破(https://www.uedbox.com/post/15675/) 3.验证码可控(https://www.uedbox.com/post/26992/) 4.直接修改密码页面(https://www.uedbox.com/post/35739/) 5.越权漏洞-->自己验证码通过改包然后修改他们密码 https://www.uedbox.com/post/24098/https://www.uedbox.com/post/42136/
在注册之前,通过预先设定一个密保问题,忘记密码时,通过此密保进行认证,认证成功进入密码修改页面。
密保问题可能容易直接被猜测 (比如很多学校的知道学号和身份号码就可以重置校园通的密码) 密保问题答案页面中显示(数据包里面可能自带了密保答案,可能在JS里面)