Insecure CAPTCHA(不安全的验证码)

目录:

  • Insecure CAPTCHA(不安全的验证码)
    • 1. Low
    • 2.Medium
    • 3. High
    • 4.Impossible

加载验证码需要向Google申请验证码API。由于大陆地区访问不了Google,所以无法获取到验证码,所以需要耐心等待访问Google超时时间才能做本题。

1. Low

可以看到,服务器将改密操作分成了两步,第一步检查用户输入的验证码,验证通过后,服务器返回表单,第二步客户端提交post请求,服务器完成更改密码的操作。但是,这其中存在明显的逻辑漏洞,服务器仅仅通过检查Change、step 参数来判断用户是否已经输入了正确的验证码。

查看源码关键判断点

 if( isset( $_POST[ 'Change' ] ) && ( $_POST[ 'step' ] == '2' ) )

发现服务器由step参数判断用户是否通过了验证码校验,所以可以直接修改发送的数据包修改step值,进而绕过验证码校验。

如图:

密码已经成功被修改

该漏洞可以配合CSRF来利用,原理都是一样的,这里不在赘述。

2.Medium

查看源码发现服务端要校验passed_captcha参数,step=2和passed_captcha为true才能修改密码,继续修改数据包来绕过验证

3. High

源码:

<?phpif( isset( $_POST[ 'Change' ] ) ) {// 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' ],$_POST['g-recaptcha-response']);if ($resp || ($_POST[ 'g-recaptcha-response' ] == 'hidd3n_valu3'&& $_SERVER[ 'HTTP_USER_AGENT' ] == 'reCAPTCHA')){// CAPTCHA was correct. Do both new passwords match?if ($pass_new == $pass_conf) {$pass_new = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $pass_new ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));$pass_new = md5( $pass_new );// Update database$insert = "UPDATE `users` SET password = '$pass_new' WHERE user = '" . dvwaCurrentUser() . "' LIMIT 1;";$result = mysqli_query($GLOBALS["___mysqli_ston"],  $insert ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );// Feedback for userecho "<pre>Password Changed.</pre>";} else {// Ops. Password mismatch$html     .= "<pre>Both passwords must match.</pre>";$hide_form = false;}} else {// What happens when the CAPTCHA was entered incorrectly$html     .= "<pre><br />The CAPTCHA was incorrect. Please try again.</pre>";$hide_form = false;return;}((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}// Generate Anti-CSRF token
generateSessionToken();?>

第18行要验证$resp的逻辑值,因为此参数由Google传递,所以不可控

第20行要验证g-recaptcha-response的值为hidd3n_valu3,可控

第21行要验证HTTP_USER_AGENT的值为reCAPTCHA,可控

修改HTTP_USER_AGENT的值和POST传递g-recaptcha-response的值即可绕过验证直接修改密码

首先抓取一个数据包

然后修改g-recaptcha-response参数以及User-Agent

再查看网站发现已经修改成功

4.Impossible

查看源码发现加入了Check Anti-CSRF token 防御CSRF攻击

使用了PDO技术防御SQL注入

还必须输入就密码才能修改密码,所以本题暂无解决思路。

DVWA Insecure CAPTCHA(不安全的验证码)全等级相关推荐

  1. DVWA暴力破解(Brute Force)——全等级(Low,Medium,High,lmpossible)精讲

    使用phpstudy搭建渗透测试靶场环境 目录 1.Low级别 2.mediun级别 3.high级别 4.impossible级别 1.Low级别 文件源代码: <?phpif( isset( ...

  2. DVWA--Insecure CAPTCHA(不安全的验证码)(全难度)

    DVWA–Insecure CAPTCHA(不安全的验证码) Insecure CAPTCHA,意思是不安全的验证码,CAPTCHA是Completely Automated Public Turin ...

  3. DVWA之Insecure Captcha

    Insecure CAPTCHA Insecure CAPTCHA,意思是不安全的验证码,CAPTCHA是Completely Automated Public Turing Test to Tell ...

  4. DVWA全等级通关教程(完结)

    Brute Force暴力破解 DVWA之Commend Injection(命令行注入) Cross Site Request Forgery (CSRF)(跨站请求伪造) File Inclusi ...

  5. captcha.js一个生成验证码的插件,使用js和canvas生成

    一.captcha`captcha.js`是一个生成验证码的插件,使用js和canvas生成的,确保后端服务被暴力攻击,简单判断人机以及系统的安全性,体积小,功能多,支持配置. 验证码插件内容,包含1 ...

  6. DVWA-文件上传全等级绕过(一句话木马+中国菜刀+蚁剑)

    DVWA文件上传 前言 一.low级别 1.1 一句话木马 1.2 中国菜刀使用 1.3 蚁剑 二.Medium级别 三.High级别 四.Impossible级别 前言 文件上传漏洞是对于上传文件的 ...

  7. DVWA 之 Insecure CAPTCHA(不安全的验证码)

    目录 1.级别:Low 2.级别:Medium 3.级别:High 刚进入DVWA看见报错,意思是验证码的密钥找不到了 需要在..\..\..\DVWA-master\config\config.in ...

  8. 用PyTorch训练模型识别captcha库生成的验证码

    目录 制作训练数据集 用Dataloader加载自定义的Dataset 训练模型 识别验证码 总结与提高 源码下载 在本节,我们将使用深度学习框架PyTorch来训练模型去识别一种难度稍大一点的数字+ ...

  9. php ci captcha使用,CodeIgniter框架验证码类库文件与用法示例

    本文实例讲述了CodeIgniter框架验证码类库文件与用法.分享给大家供大家参考,具体如下: 折腾了我四五个小时,终于,ci的验证码类库成功的整出来了. 下面请看源码: 在application/l ...

  10. android 电话拦截短信验证码,全警出击,只为寻找一位正在买新手机的女士……...

    5月17日12时10分,拱墅分局米市巷派出所接到预警:辖区内有人(程女士,化名)疑似接到冒充公检法诈骗电话.接到预警后,派出所领导高度重视,立即组织反诈专班警力展开相关工作. 辅警章毅立即拨打程女士本 ...

最新文章

  1. Android字体占有内存,android随意创建字体对象引发的应用程序运行时占用内存过大...
  2. JNA:JAVA调用DLL
  3. could not find any translatable text for key 'Search' in bundle '/cus.crm.notes/
  4. linux安装程序过程,linux 应用程序安装过程
  5. 第十节: EF的三种追踪实体状态变化方式(DBEntityEntry、ChangeTracker、Local)
  6. 【Liunx】Linux 文件与目录管理
  7. mysql++编程规范_建议收藏 - 专业的MySQL开发规范
  8. 超链接的其他用法,复合选择器
  9. 什么是一级域名?一级域名和二级域名的区别是什么?
  10. USGS SWB模型
  11. IELTS12 Test6 the population of some countries include a relatively large number of young adults
  12. php公益培训第2部,PHP高手之路-传世经典第二部直播课表
  13. 「大数据的关键思考系列」15:阿里巴巴的大数据实践(1)
  14. JavaScript : 对LHS和RHS两个名词的理解
  15. 代谢组数据:QC归一化(R语言:MetNormalizer包)
  16. EAS BOS 单据开发 自定义枚举+下拉列表
  17. goland + dlv
  18. js 获取浏览器高度和宽度值(兼容多浏览器)
  19. 腾讯敏感词汇大全_有创意的饰品店名,独一无二的饰品店名大全
  20. java telnet透传_透传模式DTU不能连接到TCP_Server

热门文章

  1. 网络定位、A-GPS和GPS的关系
  2. .mdf数据库恢复mysql_只有mdf文件和ldf文件,怎么恢复数据库。
  3. [1] Instances as Queries
  4. flash player 11.2 64位 linux,Adobe Flash Player 11.2.202 Beta 1支持 64位操作系统
  5. html图片指定refere,前端解决第三方图片防盗链的办法 - html referrer 访问图片资源 403 问题...
  6. xp提示计算机内存不足,虚拟内存不足怎么处理,教你电脑虚拟内存不足怎么处理...
  7. 玩游戏提示计算机内存不足,Win10玩吃鸡游戏提示“虚拟内存不足”怎么办?
  8. 全球5G无线接入网络(RAN)行业调研及趋势分析报告
  9. Linux scp命令复制文件报错: not a regular file
  10. Unterminated regular expression 和正则表达式