Pikachu上的CSRF以及NSSCTF上的[NISACTF 2022]bingdundun~、 [SWPUCTF 2022 新生赛]xff
目录
一、CSRF
CSRF(get) login
CSRF(post)
CSRF Token
二、CSRF的相关知识点
(1)什么是CSRF?
(2)工作原理
(3)CSRF漏洞形成的条件
2、用户要访问攻击者发的恶意url链接才行
(4)与XSS的区别
(5)CSRF的防御
三、NSSCTF上的题
在解这个题之前,需要先了解以下Phar伪协议
相关例题([NISACTF 2022]bingdundun~):
[SWPUCTF 2022 新生赛]xff
一、CSRF
CSRF(get) login
1.使用以受害者身份登录账号,登录账号在提示里面

2.我这里选择了vince的身份登录,发现可以修改个人信息

3. 以受害者身份点击修改个人信息的按钮,然后修改地址为china上交进行测试,发现修改成功,url也没有什么回显的信息

4. 对提交修改信息时候进行抓包,以黑客身份使用burp进行抓包,发现看到上面就是提交的get请求数据,从上面的url可见,修改用户信息的时候,是不带任何不可预测的认证信息的。那么,这里应该是可以被利用的。

5.把修改的get链接复制下来,http://ipakchu/vul/csrf/csrfget/csrf_get_edit.php?sex=boy&phonenum=18626545453&add=shanxi&email=vince%40pikachu.com&submit=submit,然后将包释放掉,发现仍然修改成功

6.以黑客身份生成一个恶意网页给用户来点击,达到修改信息的目的
方法一:抓包,浏览器访问该poc


!注意:这里必须让受害者使用同一个浏览器,并且登录状态还在生效才有用
方法二:直接手写网页代码


以受害者身份点击了恶意网站的链接,很明显的发现已经修改了信息,这里修改了地址为shanxi,第一关解决

CSRF(post)
1.第一步仍然为登录账号
2.点击提交修改信息的按钮,进行抓包,发现这一关是post提交了,无法学上一关那样直接使用URL来改参数。但抓包可知,这个表单的数据数量以及对应的字段名name,这就可以构造一个恶意表单网页来给用户点击。在抓包中的CSRF中可以改你想要修改的信息,然后进行复制

3.利用复制的html代码搭建一个恶意网站,让受害者去点击

点击之后,攻击完成,修改信息也完成,这里修改了性别和住址,第二关结束

CSRF Token
1.像上面两关一样,进行抓包,发现token

2.将包发送到Intruder,设置攻击方式以及变量,这里设置了token和住址为变量

3.像暴力破解的token那样设置,最后就行爆破,这里修改的是地址





观察到地址被修改,达到修改信息的目的

资料参考:pikache靶场通关——CSRF攻击_pikachu靶场-csrf-CSDN博客
二、CSRF的相关知识点
(1)什么是CSRF?
CSRF,跨站域请求伪造,通常攻击者会伪造一个场景(例如一条链接),来诱使用户点击,用户一旦点击,黑客的攻击目的也就达到了,他可以盗用你的身份,以你的名义发送恶意请求。CSRF攻击的关键就是利用受害者的cookie向服务器发送伪造请求。
CSRF利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(如转账、改密码等)。CSRF与XSS最大的区别就在于,CSRF并没有盗取cookie而是直接利用。
(2)工作原理
(3)CSRF漏洞形成的条件
通过上面的讲解我们知道CSRF形成的必要条件是
1、用户要在登录状态(即浏览器保存了该用户的cookie)
2、用户要访问攻击者发的恶意url链接才行
(4)与XSS的区别
CSRF(Cross-site request forgery)和XSS(Cross-site scripting)都是Web应用程序中常见的安全漏洞,但它们攻击方式、作用目标和防御手段不同。
攻击方式:XSS主要是通过在受害者浏览器上运行的恶意脚本来实现攻击,而CSRF通常利用验证机制的缺陷,使得攻击者通过操纵受害者的账户来执行非法操作。
作用目标:XSS主要影响用户端浏览器,导致被攻击网站或应用程序上存在的漏洞,可以被恶意脚本攻击并获取用户数据。而CSRF则主要影响服务端,攻击者可以伪造请求和数据来欺骗服务器程序执行不安全或有害的操作(如购买产品、更改密码等)。
防御手段:XSS漏洞可以采用输入过滤、转义输出等手段进行防御;而避免CSRF漏洞则需要采用Token、Referer、SameSite Cookie属性等措施。
综上所述,虽然两种漏洞都危害严重,但是他们的侧重点不同,因此相应的防御也有所不同。
(5)CSRF的防御
- 验证Referer字段
- 添加Token验证
- 二次验证:在关键操作之前,再输入密码或者验证码。
- HttpOnly:某些情况下禁止JS 脚本访问Cookie 信息。
- SameSite:Cookie 属性,浏览器自带的安全机制。
资料参考:https://zhuanlan.zhihu.com/p/398601816
https://www.cnblogs.com/yblackd/p/14533436.html
三、NSSCTF上的题
在解这个题之前,需要先了解以下Phar伪协议
用于将多个 PHP 文件、类、库、资源(如图像、样式表)等打包成一个单独的文件。这个归档文件可以像其他 PHP 文件一样被包含(include)或执行。PHAR 归档提供了一种方便的方式来分发和安装 PHP 应用程序和库,尤其是当它们包含许多文件和目录时
1.phar 伪协议无论读取什么文件,都会将其视为压缩包进行解压缩,然后作为 php 代码执行,在文件上传类漏洞中经常被用到。
2.Phar伪协议是PHP的一个特性,它允许直接从Phar归档中读取文件,而不需要将Phar文件解压。这样可以直接从Phar文件运行PHP脚本,而无需在服务器上物理地提取文件。
例如,如果你有一个名为example.phar的Phar归档文件,你可以通过以下URL运行其中的PHP脚本:
phar://example.phar/somefile.php
在这个URL中,phar://是协议,example.phar是Phar文件的名称,somefile.php是Phar文件中的一个PHP文件。
相关例题([NISACTF 2022]bingdundun~):
1.进入页面,观察到url有参数bingdundun,根据提示,随便上传一个jpg文件,发现url变成了上传php文件


那么猜测前面在输入 ?bingdundun=upload 时会自动添加 .php 后缀名,因为两种 URL 指向同一个页面,说明 ?bingdundun= 包含的就是 upload.php 文件。fuzz 一下,发现确实只能上传图片和压缩包。那么猜测是用 phar 伪协议进行文件包含
注意:phar 伪协议无论读取什么文件,都会将其视为压缩包进行解压缩,然后作为 php 代码执行,在文件上传类漏洞中经常被用到。
2.建立一个有一句话木马的php文件,将它压缩成一个zip
3. 上传这个压缩包

4. 构造payload,利用phar伪协议,因为此页面会自动加上.php后缀,所以这里没写
?bingdundun=phar://102bf3460d121e159ba5d237f8dadd32.zip/shell
5.使用蚁剑链接,连接成功在根目录下找到flag

[SWPUCTF 2022 新生赛]xff
1.进入页面,发现必须从小红的电脑上访问

2.根据题目的提示,抓包进行修改XFF

3.修改XFF,发现回显,必须从主页跳转,于是添加Referer,得到flag

XFF:告诉服务器当前请求者的最终IP。在一些情况下,攻击者可能会尝试伪造X-Forwarded-For字段来隐藏其真实IP地址,因此在使用XFF时需要谨慎验证其真实性。
Referer:它的作用是指示一个请求是从哪里链接过来,那么当一个请求并不是由链接触发产生的,那么自然也就不需要指定这个请求的链接来源。
相关文章:
Pikachu上的CSRF以及NSSCTF上的[NISACTF 2022]bingdundun~、 [SWPUCTF 2022 新生赛]xff
目录 一、CSRF CSRF(get) login CSRF(post) CSRF Token 二、CSRF的相关知识点 (1)什么是CSRF? (2)工作原理 (3)CSRF漏洞形成的条件 1、用户要在登录状态(即浏览器保存了该…...
大数据分析-二手车用户数据可视化分析
项目背景 在当今的大数据时代,数据可视化扮演着至关重要的角色。随着信息的爆炸式增长,我们面临着前所未有的数据挑战。这些数据可能来自社交媒体、商业交易、科学研究、医疗记录等各个领域,它们庞大而复杂,难以通过传统的数据处…...
AI训练Checkpoint对存储的影响
检查点(Checkpoints)是机器学习和深度学习训练过程中的一个重要机制,旨在定期保存训练状态,以便在训练过程中遇到失败或中断时能够从中断处恢复训练,而无需从头开始。 随着模型参数量的剧增,Checkpoint文件…...
Python笔记 - 正则表达式
正则表达式(Regular Expression,简称regex)是一种强大的工具,用于匹配字符串模式。在Python中,正则表达式通过re模块提供。本文将带你深入了解Python中的正则表达式,从基础概念到高级用法。 1. 什么是正则…...
安卓网络通信(多线程、HTTP访问、图片加载、即时通信)
本章介绍App开发常用的以下网络通信技术,主要包括:如何以官方推荐的方式使用多线程技术,如何通过okhttp实现常见的HTTP接口访问操作,如何使用Dlide框架加载网络图片,如何分别运用SocketIO和WebSocket实现及时通信功能等…...
Virtual Memory Primitives for User Program翻译
Virtual Memory Primitives for User Program 安德鲁阿普尔(Andrew Appel)和李凯(Kai Li) 普林斯顿大学计算机科学系 摘要 传统上,内存管理单元(MMUS)被操作系统用于实现磁盘分页的虚拟内存…...
网络基础2
目录 应用层HTTP协议认识URLurlencode和urldecode HTTP协议格式http请求格式http响应格式 HTTP的方法GET与POST的区别 HTTP的状态码HTTP常见HeaderCookie与Session 传输层在谈端口号端口号范围划分认识知名端口号netstatpidof UDP协议UDP协议端格式UDP的特点面向数据报UDP的缓冲…...
C# 下载文件2
从服务下载压缩包 过程 发起请求 HttpWebRequest 断点续传 HttpWebRequest.AddRange() 获取服务资源的响应 HttpWebResponse 设置下载进度条 解压压缩包 ZipFile using System; using System.IO; using System.IO.Compression; using System.Net;namespace Test01 {clas…...
Unity | Tilemap系统
目录 一、准备工作 1.插件导入 2.资源导入 二、相关组件介绍 1.Grid组件 2.Tilemap组件 3.Tile 4.Tile Palette 5.Brushes 三、动态创建地图 四、其他功能 1.移动网格上物体 2.拖拽缩放地图 Unity Tilemap系统为2D游戏开发提供了一个直观且功能强大的平台ÿ…...
CSS选择符和可继承属性
属性选择符: 示例:a[target"_blank"] { text-decoration: none; }(选择所有target"_blank"的<a>元素) /* 选择所有具有class属性的h1元素 */ h1[class] { color: silver; } /* 选择所有具有hre…...
C++升级软件时删除老版本软件的桌面快捷方式(附源码)
删除桌面快捷方式其实是删除桌面上的快捷方式文件,那我们如何去删除桌面快捷方式文件呢?软件可能已经发布过多个版本,其中的一些版本的快捷方式文件名称可能做了多次改动,程序中不可能记录每个版本的快捷方式名称,没法直接去删除快捷方式文件。本文就给出一种有效的处理办…...
github国内加速访问有效方法
这里只介绍实测最有效的一种方法,修改主机的Hosts文件,如果访问github网站慢或者根本无法访问的时候可以采用下面方法进行解决。 1、搜索一个IP查询网站 首先百度搜索选择一个IP查询的网站,这里我用下面这个网站(如果该网站失效…...
如何处理JavaScript中的浮点数精度问题
在开发过程中,特别是涉及到金额计算或需要精确比较的场景,浮点数精度问题是一个常见而重要的挑战。本文将介绍在JavaScript中如何识别、理解和解决这些问题,并提供一些实用的技巧和建议。 1. 问题背景 JavaScript中的浮点数采用IEEE 754标准…...
ASPICE标准与ASPICE认证:提升汽车软件开发质量与效率的关键途径
在当今日新月异的科技时代,软件产品的质量和可靠性成为了企业赢得市场的关键。而ASPICE(Automotive SPICE)标准,作为汽车行业中软件过程评估的国际通用标准,正逐渐引起行业的广泛关注。那么,ASPICE标准究竟…...
easyexcel的简单使用(execl模板导出)
模板支持功能点 支持列表支持自定义头名称支持自定义fileName支持汇总 模板示例 操作 pom引入 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>${easyexcel.version}</version></dep…...
代码随想录算法训练营第39天|● 62.不同路径 ●63. 不同路径 II
不同路径 62. 不同路径 - 力扣(LeetCode) 1.确定dp数组(dp table)以及下标的含义 dp[i][j] :表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径。 2.确定递推公式 …...
【DevOps】 什么是容器 - 一种全新的软件部署方式
目录 引言 一、什么是容器 二、容器的工作原理 三、容器的主要特性 四、容器技术带来的变革 五、容器技术的主要应用场景 六、容器技术的主要挑战 七、容器技术的发展趋势 引言 在过去的几十年里,软件行业经历了飞速的发展。从最初的大型机时代,到后来的个人电脑时代,…...
使用pnpm创建vue3项目
https://pnpm.io/zh/ 全局安装: npm install -g pnpm 检查版本: pnpm -v 创建vue3项目: pnpm create vuelatest 项目装包: pnpm install 运行项目: pnpm dev 命令行: https://pnpm.io/zh/pnpm-cli pnpm …...
【软件测试】43个功能测试点总结
🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试…...
Python — — GPU编程
Python — — GPU编程 要想将Python程序运行在GPU上,我们可以使用numba库或者使用cupy库来实现GPU编程。 壹、numba Numba 是一个开源的 JIT (Just-In-Time) 编译器,它可以将 Python 代码转换成机器代码以提高性能。Numba 特别适用于需要高性能计算的…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...
《信号与系统》第 6 章 信号与系统的时域和频域特性
目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...
el-amap-bezier-curve运用及线弧度设置
文章目录 简介示例线弧度属性主要弧度相关属性其他相关样式属性完整示例链接简介 el-amap-bezier-curve 是 Vue-Amap 组件库中的一个组件,用于在 高德地图 上绘制贝塞尔曲线。 基本用法属性path定义曲线的路径,可以是多个弧线段的组合。stroke-weight线条的宽度。stroke…...
从0开始学习R语言--Day17--Cox回归
Cox回归 在用医疗数据作分析时,最常见的是去预测某类病的患者的死亡率或预测他们的结局。但是我们得到的病人数据,往往会有很多的协变量,即使我们通过计算来减少指标对结果的影响,我们的数据中依然会有很多的协变量,且…...
[KCTF]CORE CrackMe v2.0
这个Reverse比较古老,已经有20多年了,但难度确实不小。 先查壳 upx压缩壳,0.72,废弃版本,工具无法解压。 反正不用IDA进行调试,直接x32dbg中,dump内存,保存后拖入IDA。 这里说一下…...
JS面试常见问题——数据类型篇
这几周在进行系统的复习,这一篇来说一下自己复习的JS数据结构的常见面试题中比较重要的一部分 文章目录 一、JavaScript有哪些数据类型二、数据类型检测的方法1. typeof2. instanceof3. constructor4. Object.prototype.toString.call()5. type null会被判断为Obje…...
