Pikachu上的CSRF以及NSSCTF上的[NISACTF 2022]bingdundun~、 [SWPUCTF 2022 新生赛]xff

目录

一、CSRF

[CSRF(get) login](#CSRF(get) login)

CSRF(post)

[CSRF Token](#CSRF Token)

二、CSRF的相关知识点

(1)什么是CSRF?

(2)工作原理

(3)CSRF漏洞形成的条件

1、用户要在登录状态(即浏览器保存了该用户的cookie)

2、用户要访问攻击者发的恶意url链接才行

(4)与XSS的区别

(5)CSRF的防御

三、NSSCTF上的题

在解这个题之前,需要先了解以下Phar伪协议

[相关例题([NISACTF 2022]bingdundun~):](#相关例题([NISACTF 2022]bingdundun~):)

[[SWPUCTF 2022 新生赛]xff](#[SWPUCTF 2022 新生赛]xff)


一、CSRF

CSRF(get) login

1.使用以受害者身份登录账号,登录账号在提示里面

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

  1. 以受害者身份点击修改个人信息的按钮,然后修改地址为china上交进行测试,发现修改成功,url也没有什么回显的信息
  1. 对提交修改信息时候进行抓包,以黑客身份使用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

  1. 上传这个压缩包
  1. 构造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:它的作用是指示一个请求是从哪里链接过来,那么当一个请求并不是由链接触发产生的,那么自然也就不需要指定这个请求的链接来源。

相关推荐
腾讯TNTWeb前端团队5 小时前
helux v5 发布了,像pinia一样优雅地管理你的react状态吧
前端·javascript·react.js
范文杰8 小时前
AI 时代如何更高效开发前端组件?21st.dev 给了一种答案
前端·ai编程
拉不动的猪8 小时前
刷刷题50(常见的js数据通信与渲染问题)
前端·javascript·面试
拉不动的猪8 小时前
JS多线程Webworks中的几种实战场景演示
前端·javascript·面试
FreeCultureBoy9 小时前
macOS 命令行 原生挂载 webdav 方法
前端
uhakadotcom10 小时前
Astro 框架:快速构建内容驱动型网站的利器
前端·javascript·面试
uhakadotcom10 小时前
了解Nest.js和Next.js:如何选择合适的框架
前端·javascript·面试
uhakadotcom10 小时前
React与Next.js:基础知识及应用场景
前端·面试·github
uhakadotcom10 小时前
Remix 框架:性能与易用性的完美结合
前端·javascript·面试
uhakadotcom10 小时前
Node.js 包管理器:npm vs pnpm
前端·javascript·面试