DVWA Insecure CAPTCHA(不安全的验证码)全等级
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(不安全的验证码)全等级相关推荐
- DVWA暴力破解(Brute Force)——全等级(Low,Medium,High,lmpossible)精讲
使用phpstudy搭建渗透测试靶场环境 目录 1.Low级别 2.mediun级别 3.high级别 4.impossible级别 1.Low级别 文件源代码: <?phpif( isset( ...
- DVWA--Insecure CAPTCHA(不安全的验证码)(全难度)
DVWA–Insecure CAPTCHA(不安全的验证码) Insecure CAPTCHA,意思是不安全的验证码,CAPTCHA是Completely Automated Public Turin ...
- DVWA之Insecure Captcha
Insecure CAPTCHA Insecure CAPTCHA,意思是不安全的验证码,CAPTCHA是Completely Automated Public Turing Test to Tell ...
- DVWA全等级通关教程(完结)
Brute Force暴力破解 DVWA之Commend Injection(命令行注入) Cross Site Request Forgery (CSRF)(跨站请求伪造) File Inclusi ...
- captcha.js一个生成验证码的插件,使用js和canvas生成
一.captcha`captcha.js`是一个生成验证码的插件,使用js和canvas生成的,确保后端服务被暴力攻击,简单判断人机以及系统的安全性,体积小,功能多,支持配置. 验证码插件内容,包含1 ...
- DVWA-文件上传全等级绕过(一句话木马+中国菜刀+蚁剑)
DVWA文件上传 前言 一.low级别 1.1 一句话木马 1.2 中国菜刀使用 1.3 蚁剑 二.Medium级别 三.High级别 四.Impossible级别 前言 文件上传漏洞是对于上传文件的 ...
- DVWA 之 Insecure CAPTCHA(不安全的验证码)
目录 1.级别:Low 2.级别:Medium 3.级别:High 刚进入DVWA看见报错,意思是验证码的密钥找不到了 需要在..\..\..\DVWA-master\config\config.in ...
- 用PyTorch训练模型识别captcha库生成的验证码
目录 制作训练数据集 用Dataloader加载自定义的Dataset 训练模型 识别验证码 总结与提高 源码下载 在本节,我们将使用深度学习框架PyTorch来训练模型去识别一种难度稍大一点的数字+ ...
- php ci captcha使用,CodeIgniter框架验证码类库文件与用法示例
本文实例讲述了CodeIgniter框架验证码类库文件与用法.分享给大家供大家参考,具体如下: 折腾了我四五个小时,终于,ci的验证码类库成功的整出来了. 下面请看源码: 在application/l ...
- android 电话拦截短信验证码,全警出击,只为寻找一位正在买新手机的女士……...
5月17日12时10分,拱墅分局米市巷派出所接到预警:辖区内有人(程女士,化名)疑似接到冒充公检法诈骗电话.接到预警后,派出所领导高度重视,立即组织反诈专班警力展开相关工作. 辅警章毅立即拨打程女士本 ...
最新文章
- Android字体占有内存,android随意创建字体对象引发的应用程序运行时占用内存过大...
- JNA:JAVA调用DLL
- could not find any translatable text for key 'Search' in bundle '/cus.crm.notes/
- linux安装程序过程,linux 应用程序安装过程
- 第十节: EF的三种追踪实体状态变化方式(DBEntityEntry、ChangeTracker、Local)
- 【Liunx】Linux 文件与目录管理
- mysql++编程规范_建议收藏 - 专业的MySQL开发规范
- 超链接的其他用法,复合选择器
- 什么是一级域名?一级域名和二级域名的区别是什么?
- USGS SWB模型
- IELTS12 Test6 the population of some countries include a relatively large number of young adults
- php公益培训第2部,PHP高手之路-传世经典第二部直播课表
- 「大数据的关键思考系列」15:阿里巴巴的大数据实践(1)
- JavaScript : 对LHS和RHS两个名词的理解
- 代谢组数据:QC归一化(R语言:MetNormalizer包)
- EAS BOS 单据开发 自定义枚举+下拉列表
- goland + dlv
- js 获取浏览器高度和宽度值(兼容多浏览器)
- 腾讯敏感词汇大全_有创意的饰品店名,独一无二的饰品店名大全
- java telnet透传_透传模式DTU不能连接到TCP_Server
热门文章
- 网络定位、A-GPS和GPS的关系
- .mdf数据库恢复mysql_只有mdf文件和ldf文件,怎么恢复数据库。
- [1] Instances as Queries
- flash player 11.2 64位 linux,Adobe Flash Player 11.2.202 Beta 1支持 64位操作系统
- html图片指定refere,前端解决第三方图片防盗链的办法 - html referrer 访问图片资源 403 问题...
- xp提示计算机内存不足,虚拟内存不足怎么处理,教你电脑虚拟内存不足怎么处理...
- 玩游戏提示计算机内存不足,Win10玩吃鸡游戏提示“虚拟内存不足”怎么办?
- 全球5G无线接入网络(RAN)行业调研及趋势分析报告
- Linux scp命令复制文件报错: not a regular file
- Unterminated regular expression 和正则表达式