Insecure CAPTCHA,意思是不安全的验证码,
CAPTCHA是Completely Automated Public Turing Test to Tell Computers and Humans Apart (全自动区分计算机和人类的图灵测试)的简称。
reCAPTCHA验证流程
这一模块的验证码使用的是Google提供reCAPTCHA服务,下图是验证的具体流程。
简单版:
1.查看代码:
可以看到,服务器将改密操作分成了两步:
第一步检查用户输入的验证码,验证通过后,服务器返回表单。
第二步客户端提交post请求,服务器完成更改密码的操作。
但是,这其中存在明显的逻辑漏洞,服务器仅仅通过检查Change、step 参数来判断用户是否已经输入了正确的验证码。
1.通过构造参数绕过验证过程的第一步:
2.修改step参数为2
;
修改成功
中等版:
1.查看源代码:
medium级别的代码在第二步验证时,参加了对参数passed_captcha的检查,如果参数值为true,则认为用户已经通过了验证码检查。
2.抓包,设置参数,同时添加passed_captcha
困难版:
1.查看源代码:
服务器的验证逻辑是当$resp(这里是指谷歌返回的验证结果)是false,并且参数recaptcha_response_field不等于hidd3n_valu3(或者http包头的User-Agent参数不等于reCAPTCHA)时,就认为验证码输入错误,反之则认为已经通过了验证码的检查。
2.抓包,
3.改参数recaptcha_response_field以及http包头的User-Agent: