dvwa-insecure CAPTCHA

前言

insecure CAPTCHA,翻译过来是不安全的验证码。CAPTCHA是Completely Automated Public Turing Test to Tell Computers and Humans Apart (全自动区分计算机和人类的图灵测试)的简称。

reCAPTCHA验证流程

这一模块的验证码使用的是Google提供reCAPTCHA服务,下图是验证的具体流程。

1.png

服务器通过调用recaptcha_check_answer函数检查用户输入的正确性。

1
recaptcha_check_answer($privkey,$remoteip, $challenge,$response)

参数$privkey是服务器申请的private key ,$remoteip是用户的ip,$challenge 是recaptcha_challenge_field 字段的值,来自前端页面 ,$response是 recaptcha_response_field 字段的值。函数返回ReCaptchaResponse class的实例,ReCaptchaResponse 类有2个属性 :

$is_valid是布尔型的,表示校验是否有效,

$error是返回的错误代码。

(ps:有人也许会问,那这个模块的实验是不是需要科学上网呢?答案是不用,因为我们可以绕过验证码)

​ —-摘自https://www.freebuf.com/articles/web/119692.html

low

因为没有翻墙,so 我在这里确实是没有看见验证码

如果我直接提交的话,就会

不如我们抓个包来看看

step?现在是1,我没有输入验证码,那如果step=2时,就是已输入正确的验证码,那不就可以实现绕过了吗?

改成了step=2后,放包,修改成功

medium

和刚才一样的操作,抓包

和low一样?应该不可能,比较二者源码后发现,多了

且这一段在change前面,改包试一下

放包,等等,step没改,改完后放包

????wtf

换个位置,再试一次

成功,所以前面的问题(不愧是我,打错了。。。。

high

核心代码应该是在这里了

如果验证码不正确,代码就会进一步检查g-recaptcha-response和HTTP_USER_AGENT,倘若正确,即可绕过验证码

抓包伪造吧

修改成功

impossible

源代码这里就不放了(太长了)

Impossible级别的代码增加了Anti-CSRF token 机制防御CSRF攻击,利用PDO技术防护sql注入,验证过程终于不再分成两部分了,验证码无法绕过,同时要求用户输入之前的密码,进一步加强了身份认证。