dvwa靶场通关(三)

news2024/9/30 15:26:56

第三关:CSRF(跨站请求伪造)

csrf跨站请求伪造:是一种对网站的恶意利用。尽管听起来像跨站脚本,但它与xss非常不同,xss利用站点内受信任用户,而csrf则通过伪造来自受信任用户的请求来利用受信任的网站,与xss攻击相比,csrf则通过伪装来自受信任用户的请求来利用受信任的网站。与xss攻击相比,csrf攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比xss更具危险性。

本质来说就是在你访问网站信息的同时,盗用你的cookie,用你的身份进行一些非法操作。

危害:

攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做到的事情包括:以你的名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。

low

这是一个修改密码的页面 

 先试试修改密码为123,提交后可以看到url中带有我们修改的密码,所以是以get方式发送请求

我们把这个url复制下来,然后修改url里的密码为我们想要的,比如123456,再把这个修改过的url缩短(网上有工具),不然太长而且很轻易看出来内容,容易被看穿。

 然后打开一个新页面,把缩短的url输入,就会跳转到这个页面,显示密码已经修改了

现实攻击场景下,这种方法需要事先在公网上传一个攻击页面,诱骗受害者去点击我们构造的url从而访问我们的攻击页面,受害者会误认为是自己点击的是一个失效的url,但实际上已经遭受了CSRF攻击,密码已经被修改了,真正能够在受害者不知情的情况下完成CSRF攻击。

我们可以在本地构造一个404错误页面

桌面创建test.txt文件,打开输入如下代码

<img src="http://dvwa.com/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#" border="0" style="display:none;"/>
<h1>404<h1>
<h2>file not found.<h2>

 其中的url就是上面复制下来的url,刚开始修改的密码是123,现在我们把密码修改成123456,保存后,改文件后缀名为.html  然后用正在登录dvwa的浏览器打开这个我们构造的404错误页面

 这样,密码已经被我们修改成功了

 medium

不知道与low有什么区别,看一下源码,发现多了stripos()函数

 stripos() 函数查找字符串在另一字符串中第一次出现的位置(不区分大小写)

语法

stripos(string,find,start)

参数 描述
string 必需。规定被搜索的字符串。
find 必需。规定要查找的字符。
start 可选。规定开始搜索的位置。

代码检查了保留变量HTTP_REFERER (http包头部的Referer字段的值,表示来源地址)是否包含SERVER_NAME(http包头部的 Host 字段表示要访问的主机名)。

即用户的请求头中的Referer字段必须包含了服务器的名字

 我们尝试一下抓包看看,referer字段确实包含host字段的主机名

 我们尝试打开上一关构造的攻击页面,打开抓包,没有referer字段

 没有修改成功

 

 在重发器里,我们添加referer字段后,修改成功,这样子我们就绕过了对referer字段的检测

high

先看源码,可以看到,High级别的代码加入了Anti-CSRF token机制,用户每次访问改密页面时,服务器都会返回一个随机的token,当浏览器向服务器发起请求时,需要提交token参数,而服务器在收到请求时,会优先检查token,只有token正确,才会处理客户端的请求。这里因为对请求的token进行了验证,所以比上两个等级的更加的安全。

 可以看到,当修改密码时,token会放在url中以get方式提交,所以我们要想办法获取到用户的token。

 我们先抓包,发送到重发器

 

 这里可以配合存储型xss来获取token在xss(store)high等级下,输入以下代码

<iframe src="../csrf/" οnlοad=alert(frames[0].document.getElementsByName('user_token')[0].value)></iframe>

 但是输入被限制了长度

 f12打开开发者模式,搜索txtname,把maxlength改大一点,这样我们就可以完整输入代码了

 得到token

 把token复制到重发器里的token,模拟攻击者得到token,构造恶意url诱导用户点击,密码被修改

 impossible

不仅检查了token,还要输入当前的密码,黑客无法知道用户之前的密码,所以无法进行CSRF攻击。这是比较安全的

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/585615.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Springboot +spring security,认证方式---Form表单认证的实现(二)

一.简介 这篇文章来学习下security的认证方式其中的Form表单认证 二.Spring Security的认证方式 2.1什么是认证 认证: 就是用来判断系统中是否存在某用户&#xff0c;并判断该用户的身份是否合法的过程&#xff0c;解决的其实是用户登录的问题。认证的存在&#xff0c;是为…

【Java-10】深入浅出线程安全、死锁、状态、通讯、线程池

主要内容 线程安全线程死锁线程的状态线程间通讯线程池 1 线程安全 1.1 线程安全产生的原因 多个线程在对共享数据进行读改写的时候&#xff0c;可能导致的数据错乱就是线程的安全问题了 问题出现的原因 : 多个线程在对共享数据进行读改写的时候&#xff0c;可能导致的数据…

有哪些辅助计算机开发的工具推荐?

以下是一些辅助计算机开发的工具推荐&#xff1a; 集成开发环境&#xff08;Integrated Development Environment&#xff0c;IDE&#xff09;&#xff1a; 常用的IDE包括Visual Studio、Eclipse、IntelliJ IDEA、PyCharm等&#xff0c;它们提供了代码编辑器、调试器、构建工…

TDengine 集成 EMQX 通过规则引擎实现设备数据直接入库

背景 曾使用过 IoTDB 自带的 MQTT Broker 实现了设备数据入库&#xff0c;那么使用 TDengine 时&#xff0c;我们可以借助 EMQX &#xff08;一款优秀的国产开源 MQTT Broker &#xff09;的规则引擎结合 TDengine 的 RESTful API 完成设备数据的路由与入库。 用到的工具 TD…

chatgpt赋能python:Python下载Module的指南

Python下载Module的指南 作为一门高级编程语言&#xff0c;Python凭借其简单易学、高效便捷的特点&#xff0c;越来越受到广大程序员的喜爱。Python社区也逐渐发展壮大&#xff0c;丰富的第三方Module为我们提供了更多功能强大、用途广泛的工具。本篇文章将介绍Python下载Modu…

从汇编代码的角度去理解C++多线程编程问题

目录 1、多线程问题实例 2、理解该多线程问题的预备知识 2.1、二进制机器码和汇编代码 2.2、多线程切换与CPU时间片 2.3、多线程创建与线程函数 3、从汇编代码的角度去理解多线程问题 4、问题解决办法 5、熟悉汇编代码有哪些用处&#xff1f; 5.1、在代码中插入汇编代…

信号处理与分析-傅里叶

目录 一、引言 二、傅里叶级数 1. 傅里叶级数的定义 2. 傅里叶级数的性质 三、傅里叶变换 1. 傅里叶变换的定义 2. 傅里叶变换的性质 四、离散傅里叶变换 1. 离散傅里叶变换的定义 2. 离散傅里叶变换的性质 五、应用实例 1. 信号处理 2. 图像处理 六、总结 一、引…

Revit中窗族的默认窗台高度与底高度是一样?

​  一、窗族的默认窗台高度与底高度是一样的吗? 窗族的系统设定中有一个自带的参数就是默认窗台高度&#xff0c;指的是窗户放置的时候窗户最底端离墙的最底端高度。 当我们创建一个建筑样板将我们创建好的窗族放置好的时候&#xff0c;这个参数就在窗的类型属性中&#xf…

2023年上半年 软件设计师答案解析

前言&#xff1a;2023年上半年软考已经落幕了&#xff0c;学长整理了一下软件设计师的题目以及个人理解的答案&#xff08;仅供参考&#xff09;希望能够帮助参加软考的各个小伙伴能够清晰的估分&#xff0c;希望大家都能通过考试~ 目录 2023年上半年 软件设计师 上午试卷 2023…

C Primer Plus第十二章编程练习答案

学完C语言之后&#xff0c;我就去阅读《C Primer Plus》这本经典的C语言书籍&#xff0c;对每一章的编程练习题都做了相关的解答&#xff0c;仅仅代表着我个人的解答思路&#xff0c;如有错误&#xff0c;请各位大佬帮忙点出&#xff01; 1.不使用全局变量&#xff0c;重写程序…

网络连接中的舔狗协议

舔狗网络协议 &#xff08;discard protocol) 最近互联网上&#xff0c;“舔狗” 这个词语很火&#xff0c;也衍生出来很多梗&#xff08;快速说出互联网 4 大舔狗&#xff01;&#xff01;&#xff01;&#xff09;。然后今天偶然间看到了一个 RFC 文档&#xff0c; 发现了一…

用户需求分析工具:Y模型

用户需求分析工具&#xff1a;Y模型 《人人都是产品经理》作者苏杰提出 阿里巴巴产品经理多年 趣讲大白话&#xff1a;有个框框好同频 【趣讲信息科技180期】 **************************** 很多交流就是鸡同鸭讲 沟通的背景、动机、目的、方式、高度等严重不同 如果有一个模型…

服务器端安装jupyter notebook并在本地使用与环境配置一条龙服务【服务器上跑ipynb】

linux服务器端安装jupyter notebook并在本地使用 1.生成配置文件:2.配置Jupyter notebook密码3,修改配置文件~/.jupyter/jupyter_notebook_config.py4. 本地访问远端的服务器的jupyter1.首先在Linux服务器上启动Jupyter notebook2.然后在本地转发端口 为jupyter notebook配置co…

【云原生|探索 Kubernetes 系列 6】从 0 到 1,轻松搭建完整的 Kubernetes 集群

前言 大家好&#xff0c;我是秋意零。 前面一篇中&#xff0c;我们介绍了 kubeadm 的工作流程。那么今天我们就实际操作一下&#xff0c;探索如何快速、高效地从 0 开始搭建一个完整的 Kubernetes 集群&#xff0c;让你轻松驾驭容器化技术的力量&#xff01;&#xff01; &am…

json和pickle模块

目录 ❤ json和pickle模块 序列化 json pickle python从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129328397?spm1001.2014.3001.5502 ❤ json和pickle模块 序列化 把对象(变量)从内存中变成可存储或传输的过程称之为序列化&am…

3D EXPERIENCE“热知识” | 如何使用3D EXPERIENCE平台上的问题管理?

3D EXPERIENCE 平台上的问题管理对任何组织都是有用的工具&#xff0c;无论其规模大小。无论是使用它来标记和分发PDF还是在车间和工程部门之间分享想法&#xff0c;问题管理都可以简化日常活动。简而言之&#xff0c;它会根据权限列出现有问题&#xff0c;并让用户创建新问题&…

软件测试----软件测试四大测试过程

1、测试分析 &#xff08;1&#xff09;要点 1&#xff09;软件需求分析 2&#xff09;测试需求项的提取 3&#xff09;用户使用场景分析 4&#xff09;测试工具的调研和选取 5&#xff09;测试缺陷分析 &#xff08;2&#xff09;分工 1&#xff09;测试人员&#xff1a;提…

09:mysql---事务

目录 1:事务简介 2:事务操作 3:事务四大特性 4:并发事务问题 5:事务隔离级别 1:事务简介 事务 是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&…

周赛347(模拟、思维题、动态规划+优化)

文章目录 周赛347[2710. 移除字符串中的尾随零](https://leetcode.cn/problems/remove-trailing-zeros-from-a-string/)模拟 [2711. 对角线上不同值的数量差](https://leetcode.cn/problems/difference-of-number-of-distinct-values-on-diagonals/)模拟 [2712. 使所有字符相等…

索引下推(Index Condition Pushdown)

使用一张用户表t_user&#xff0c;表里创建联合索引&#xff08;name, age&#xff09;。 如果现在有一个需求&#xff1a;检索出表中名字第一个字是张&#xff0c;而且年龄是10岁的所有用户。那么&#xff0c;SQL语句是这么写的&#xff1a; 复制代码 select * from tuser w…