欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

新手指南:DVWA-1.9全级别教程之Insecure CAPTCHA

来源:本站整理 作者:佚名 时间:2016-11-23 TAG: 我要投稿

目前,最新的DVWA已经更新到1.9版本(http://www.dvwa.co.uk/),而网上的教程大多停留在旧版本,且没有针对DVWA high级别的教程,因此萌发了一个撰写新手教程的想法,错误的地方还请大家指正。
DVWA简介
DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助web开发者更好的理解web应用安全防范的过程。
DVWA共有十个模块,分别是
Brute Force(暴力(破解))
Command Injection(命令行注入)
CSRF(跨站请求伪造)
File Inclusion(文件包含)
File Upload(文件上传)
Insecure CAPTCHA (不安全的验证码)
SQL Injection(SQL注入
SQL Injection(Blind)(SQL盲注)
XSS(Reflected)(反射型跨站脚本)
XSS(Stored)(存储型跨站脚本)
需要注意的是,DVWA 1.9的代码分为四种安全级别:Low,Medium,High,Impossible。初学者可以通过比较四种级别的代码,接触到一些PHP代码审计的内容。

 
DVWA的搭建
Freebuf上的这篇文章《新手指南:手把手教你如何搭建自己的渗透测试环境》(http://www.freebuf.com/sectool/102661.html)已经写得非常好了,在这里就不赘述了。
之前模块的相关内容
Brute Force
Command Injection
CSRF
File Inclusion
File Upload
本文介绍Insecure CAPTCHA模块的相关内容,后续教程会在之后的文章中给出。
Insecure CAPTCHA
Insecure CAPTCHA,意思是不安全的验证码,CAPTCHA是Completely Automated Public Turing Test to Tell Computers and Humans Apart (全自动区分计算机和人类的图灵测试)的简称。但个人觉得,这一模块的内容叫做不安全的验证流程更妥当些,因为这块主要是验证流程出现了逻辑漏洞,谷歌的验证码表示不背这个锅。

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

 
服务器通过调用recaptcha_check_answer函数检查用户输入的正确性。
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:有人也许会问,那这个模块的实验是不是需要科学上网呢?答案是不用,因为我们可以绕过验证码)
下面对四种级别的代码进行分析。
Low
服务器端核心代码:
 if( isset( $_POST[ 'Change' ] ) && ( $_POST[ 'step' ] == '1' ) ) {     // Hide the CAPTCHA form     $hide_form = true;     // Get input     $pass_new  = $_POST[ 'password_new' ];     $pass_conf = $_POST[ 'password_conf' ];     // Check CAPTCHA from 3rd party     $resp = recaptcha_check_answer( $_DVWA[ 'recaptcha_private_key' ],         $_SERVER[ 'REMOTE_ADDR' ],         $_POST[ 'recaptcha_challenge_field' ],         $_POST[ 'recaptcha_response_field' ] );     // Did the CAPTCHA fail?     if( !$resp->is_valid ) {         // What happens when the CAPTCHA was entered incorrectly         $html     .= "
The CAPTCHA was incorrect. Please try again.";         $hide_form = false;         return;     }     else {         // CAPTCHA was correct. Do both new passwords match?         if( $pass_new == $pass_conf ) {             // Show next stage for the user             echo "                
You passed the CAPTCHA! Click the button to confirm your changes.                                                           {$pass_new}\" />                     {$pass_conf}\" />                                      ";         }         else {             // Both new passwords do not match.             $html     .= "

[1] [2] [3] [4] [5] [6]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载