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

对象临时中间状态的条件竞争覆盖

Portswigger练兵场之条件竞争

🦄条件竞争之对象临时中间状态的条件竞争

Lab: Partial construction race conditions

🚀实验前置必要知识点

某些框架尝试通过使用某种形式的请求锁定来防止意外的数据损坏。例如,PHP 的本机会话处理程序模块一次只处理每个会话的一个请求。

许多应用程序通过多个步骤创建对象,这可能会引入可利用对象的临时中间状态。

例如,注册新用户时,应用程序可能会在数据库中创建用户,并使用两个单独的 SQL 语句设置其 API 密钥。这留下了一个用户存在的door,但其 API 密钥未初始化。

框架通常允许您使用非标准语法传入数组和其他非字符串数据结构。例如,在 PHP 中:

  • param[]=foo相当于param = ['foo']
  • param[]=foo&param[]=bar相当于param = ['foo', 'bar']
  • param[]相当于param = []

如果注册了账户之后,抢先在SQL语句赋值之前发出身份验证

🏆实验要求

本实验包含用户注册机制。争用条件使你能够绕过电子邮件验证,并使用不属于你的任意电子邮件地址进行注册。要解决实验室问题,请利用此争用条件创建一个帐户,然后登录并删除用户carlos。

⚡️渗透开始

  • 访问对应靶场界面
https://portswigger.net/web-security/race-conditions/lab-race-conditions-partial-construction
  • 启动靶场
1. 站点分析

这是SHOP类型的网站

可以查看文章信息、购买、登录、注册等功能点,根据提示我们来到注册功能点处

需要用户名、邮箱以及密码才可以注册,发现只能用推荐的邮箱注册

尝试注册账户为1,发现注册成功

再次注册1的账户发现无法注册

尝试注册账户2,用同样的邮箱发现注册成功,说明同样的邮箱可以注册复用

但是无法直接用账号密码进行登录,需要邮箱激活

在不清楚邮箱的情况下陷入了困局

2. 寻找可疑功能点(查看Burp历史记录进行分析)

正常的流程为
前端注册 → 后端发送邮件并在数据库中预注册用户的账户/密码信息 → 用户激活邮箱 → 后端分配权限给用户 → 用户可以正常访问

注册发送数据包

在此处条件竞争获取的账号也是没有权限的,毫无用处🤔

在翻阅的过程中发现了一处可疑的js

const createRegistrationForm = () => {const form = document.getElementById('user-registration');const usernameLabel = document.createElement('label');usernameLabel.textContent = 'Username';const usernameInput = document.createElement('input');usernameInput.required = true;usernameInput.type = 'text';usernameInput.name = 'username';const emailLabel = document.createElement('label');emailLabel.textContent = 'Email';const emailInput = document.createElement('input');emailInput.required = true;emailInput.type = 'email';emailInput.name = 'email';const passwordLabel = document.createElement('label');passwordLabel.textContent = 'Password';const passwordInput = document.createElement('input');passwordInput.required = true;passwordInput.type = 'password';passwordInput.name = 'password';const button = document.createElement('button');button.className = 'button';button.type = 'submit';button.textContent = 'Register';form.appendChild(usernameLabel);form.appendChild(usernameInput);form.appendChild(emailLabel);form.appendChild(emailInput);form.appendChild(passwordLabel);form.appendChild(passwordInput);form.appendChild(button);
}const confirmEmail = () => {const container = document.getElementsByClassName('confirmation')[0];const parts = window.location.href.split("?");const query = parts.length == 2 ? parts[1] : "";const action = query.includes('token') ? query : "";const form = document.createElement('form');form.method = 'POST';form.action = '/confirm?' + action;const button = document.createElement('button');button.className = 'button';button.type = 'submit';button.textContent = 'Confirm';form.appendChild(button);container.appendChild(form);
}
3. Js分析 | 对行为进行基准测试

json中命名大致了解

  • 函数createRegistrationForm通过操作DOM创建注册表单
  • 函数confirmEmail用于创建确认电子邮件功能。

在确认电子邮件功能中 访问的是POST请求的/confirm端点,拼接的参数是token

该创建的表单会获取token并确认提交

4./confirm端点分析 | 对行为进行基准测试

token为空被禁止

token为1,证明验证了令牌为0不正确

如果是刚注册的用户通常为空,可以发现被禁止了,尝试数组没被禁止

5.完成实验 | 证明概念

当我注册账号之后,如果存在两句SQL语句,我可不可以抢先在应用程序赋值token之前给予账号空的token,这样就可以绕过用户注册的邮箱验证机制

构造创建用户的枚举,同时并发token为空验证的条件竞争机制成功获取了用户

用户信息a4016:111111

登录账号

打开管理面板删除用户后完成实验

相关文章:

对象临时中间状态的条件竞争覆盖

Portswigger练兵场之条件竞争 🦄条件竞争之对象临时中间状态的条件竞争 Lab: Partial construction race conditions🚀实验前置必要知识点 某些框架尝试通过使用某种形式的请求锁定来防止意外的数据损坏。例如,PHP 的本机会话处理程序模块…...

Nodejs 第十四章(process)

process 是Nodejs操作当前进程和控制当前进程的API,并且是挂载到globalThis下面的全局API API 介绍 1. process.arch 返回操作系统 CPU 架构 跟我们之前讲的os.arch 一样 arm、arm64、ia32、mips、mipsel、ppc、ppc64、s390、s390x、以及 x64 2. process.cwd() …...

数据分析因子评分学习

当多个因素影响一个结果时,我们需要综合考虑这些因素分别对结果德影响。因子评分就是用于比较其对结果德影响程度。 文章目录 前言一、案例背景二、解决方案(一)分析思路(二)剔除无关数据(三)求…...

【postgresql 基础入门】数据库服务的管理

数据库服务管理 ​专栏内容: postgresql内核源码分析手写数据库toadb并发编程 ​开源贡献: toadb开源库 个人主页:我的主页 管理社区:开源数据库 座右铭:天行健,君子以自强不息;地势坤&#xff…...

githubPage部署Vue项目

github中新建项目 my-web (编写vue项目代码) myWebOnline(存放Vue打包后的dist包里面的文件) 发布流程 (假设my-web项目已经编写完成)Vue-cli my-web vue.config.js文件中 const { defineConfig } require(vue/cli-service)…...

【网络编程】网络原来这么简单(更新中)

故事背景:有一天小胖和他的朋友细狗出去吃饭,聊着聊着就聊到了网络,小胖是学校里的编程大佬,而细狗只是个空有求知欲的编程小白。 细狗:胖儿啊,你说计算机是怎么通信的我感觉好抽象啊。为啥别人给我发个消息…...

监控系统典型架构

监控系统典型架构如下: 从左往右看: 采集器是负责采集监控数据的,采集到数据之后传输给服务端,通常是直接写入时序库。 对时序库的数据进行分析和可视化。 告警引擎产生告警事件之后交给告警发送模块做不同媒介的通知。 可视化比…...

jsp 新能源汽车论坛网Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 新能源汽车论坛网是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0…...

Code Snippet的使用

文章目录 前言Code Snippet:就是咱们在VS中敲的prop、propfull、ctol【构造器快捷键】、for等快捷键,然后按tab键自动生成代码1.VS自带的:prop、propfull、ctol【构造器快捷键】、for等快捷键,直接使用2.自定义Snippet: 巨人的肩膀…...

华为云云服务器评测|华为云耀云L搭建zerotier服务测试

0. 环境 - Win10 - 云耀云L服务器 1. 安装docker 检查yum源,本EulerOS的源在这里: cd /etc/yum.repos.d 更新源 yum makecache 安装 yum install -y docker-engine 运行测试 docker run hello-world 2. 运行docker镜像 默认配…...

企业电脑文件加密系统 / 防泄密软件——「天锐绿盾」

「天锐绿盾」是一种公司文件加密系统,旨在保护公司内网数据安全,防止信息泄露。该系统由硬件和软件组成,其中包括服务端程序、控制台程序和终端程序。 PC访问地址: isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c…...

单条视频涨粉50w,逃出大英博物馆背后的逻辑是什么?

为洞察小红书平台的内容创作趋势及品牌营销策略,新红推出8月月度榜单,从创作者、品牌、品类多方面入手,解析月榜数据,为从业者提供参考。 一条视频涨粉50w 情感共鸣是爆火的核心 据8月的『涨粉排行榜』TOP500数据显示&#xff0c…...

AIGC(生成式AI)试用 1 -- 基本文本查询

以一个字起,依次加一个字构成新句,不断加字使句子越来越长,也许越来越有趣。 1. 使用不同的生成AI提问,提取结果(全部 或 第一句),对比结果,个人评价更喜欢哪个(绿色底色…...

php如何处理高并发请求

PHP 处理高并发请求的方法: 使用异步框架:通过使用异步处理方式,可以有效地降低 PHP 处理请求的响应时间,避免因为 IO 操作而导致的等待阻塞。常用的异步框架有ReactPHP和Swoole等。 使用缓存:使用缓存可以减少每个请求…...

控制台实现汽车租赁系统

汽车租赁系统需求:(基于控制台实现,适合基础小白练习使用) 1、包含汽车租赁和汽车管理两个模块 2、汽车租赁需要包含汽车租赁天数以及汽车租金结算功能 3、汽车管理需要包含租赁汽车的添加、删除、修改、查询功能 代码如下&#…...

机器学习和数据挖掘03-模型性能评估指标

Accuracy(准确率) 概念:模型正确预测的样本数量与总样本数量的比例。 公式:Accuracy (TP TN) / (TP TN FP FN) TP (True Positives):正确预测为正例的样本数。即模型正确地将正例判定为正例。 TN (True Negati…...

PageNumberPagination、LimitOffsetPagination、CursorPagination

数据 from django.db import modelsclass User(models.Model):username models.CharField(max_length64, verbose_name用户名)password models.CharField(max_length64, verbose_name密码)# 用户类型user_type models.IntegerField(choices((1, 菜鸟用户), (2, 普通用户), …...

怎么把视频转换成mp4格式

怎么把视频转换成mp4格式?如今,随着科技的不断发展,我们在工作中接触到的多媒体视频格式也越来越多。其中,MP4作为一种广泛兼容的视频格式,在许多软件中都能轻松播放,并且成为了剪辑与裁剪视频时大家常用的…...

正则判断字符是否包含手机号

字符前后不能是数字,满足手机号标准 String msg "19009098989";String mobliePattern "((?<!\\d))(mobile|手机号|)(|\\[|\\\":\\\"|:|&#xff1a;||:|)(1)([3-9]{1}\\d{1})(\\d{4})(\\d{4})(\\]|\\\"||)((?!\\d))";String mobileR…...

OSCP系列靶场-Esay-Sumo

OSCP系列靶场-Esay-Sumo 总结 getwebshell : nikto扫描 → 发现shellshock漏洞 → 漏洞利用 → getwebshell 提 权 思 路 : 内网信息收集 → 内核版本较老 →脏牛提权 准备工作 启动VPN 获取攻击机IP → 192.168.45.194 启动靶机 获取目标机器IP → 192.168.190.87 信息收…...

本地电脑搭建web服务器、个人博客网站并发布公网访问 【无公网IP】(1)

文章目录 前言1. 安装套件软件2. 创建网页运行环境 指定网页输出的端口号3. 让WordPress在所需环境中安装并运行 生成网页4. “装修”个人网站5. 将位于本地电脑上的网页发布到公共互联网上 前言 在现代社会&#xff0c;网络已经成为我们生活离不开的必需品&#xff0c;而纷繁…...

Python基础List列表定义与函数

如何定义一个非空的列表&#xff1f; name_list ["liming","xiaohong",15,{"hobby":"basketball"}] 列表的特点&#xff1a; 1.列表是有序的 2.可以存放多个元素 3.每个元素可以是任何数据类型 定义一个空列表 name_list [] 访…...

typeScript--[数据定义]

一.安装ts 1.命令行运行如下命令&#xff0c;全局安装 TypeScript&#xff1a; npm install -g typescript2.安装完成后&#xff0c;在控制台运行如下命令&#xff0c;检查安装是否成功 tsc -V 二.创建ts文件 1.创建一个day01.ts文件&#xff0c;随便在里面码一点代码&…...

【常见相机模型】

常见相机模型 enum class Type {kPinhole 0,kUnifiedProjection 1,kOmni 2, //optimize_on_spherekEqFisheye 3};其余类型optimize_on_plane这4种类型的相机模型具有以下差异&#xff1a; kPinhole (针孔相机模型)&#xff1a;这是最基本和常见的相机模型。它假设光线通过…...

大数据-玩转数据-Flink状态编程(上)

一、Flink状态编程 有状态的计算是流处理框架要实现的重要功能&#xff0c;因为稍复杂的流处理场景都需要记录状态&#xff0c;然后在新流入数据的基础上不断更新状态。 SparkStreaming在状态管理这块做的不好, 很多时候需要借助于外部存储(例如Redis)来手动管理状态, 增加了编…...

主动获取用户的ColaKey接口

主动获取用户的ColaKey接口 一、主动获取用户的ColaKey接口二、使用步骤1、接口***重要提示:建议使用https协议,当https协议无法使用时再尝试使用http协议***2、请求参数 三、 请求案例和demo1、请求参数例子&#xff08;POST请求&#xff0c;参数json格式&#xff09;2、响应返…...

C#写一个UDP程序判断延迟并运行在Centos上

服务端 using System.Net.Sockets; using System.Net;int serverPort 50001; Socket server; EndPoint client new IPEndPoint(IPAddress.Any, 0);//用来保存发送方的ip和端口号CreateSocket();void CreateSocket() {server new Socket(AddressFamily.InterNetwork, SocketT…...

Kafka核心原理第二弹——更新中

架构原理 一、高吞吐机制&#xff1a;Batch打包、缓冲区、acks 1. Kafka Producer怎么把消息发送给Broker集群的&#xff1f; 需要指定把消息发送到哪个topic去 首先需要选择一个topic的分区&#xff0c;默认是轮询来负载均衡&#xff0c;但是如果指定了一个分区key&#x…...

巨人互动|游戏出海H5游戏出海规模如何?

H5游戏出海是指将H5游戏推广和运营扩展到国外市场的行为&#xff0c;它的规模受到多个因素的影响。本文小编讲一些关于H5游戏出海规模的详细介绍。 1、市场规模 H5游戏出海的规模首先取决于目标市场的规模。不同国家和地区的游戏市场规模差异很大&#xff0c;有些市场庞大而成…...

【爬虫】实验项目三:验证码处理与识别

目录 一、实验目的 二、实验预习提示 三、实验内容 实验要求 基本要求&#xff1a; 改进要求A&#xff1a; 改进要求B&#xff1a; 四、实验过程 基本要求 五、源码如下 六、资料 一、实验目的 部分网站可能会使用验证机制来阻止用户无效登录或者是验证用户不是用程…...

湖南省城乡与住房建设厅网站/网站推广策略

原文&#xff1a;http://coolketang.com/staticPhotoshop/5a98d383d50eee266a9fe316.html 1. 本节课程将为您演示&#xff0c;如何使用[注释工具]&#xff0c;给文档添加说明信息。首先在工作区的空白处双击&#xff0c;弹出[打开]窗口。 2. 在弹出的[打开]窗口中&#xff0c;双…...

文山北京网站建设/网站优化培训学校

正则表达式(通用)目录文章目录1、概述1.1、序言1.2、作用2、正则字符3、元字符3.1、普通字符3.2、特殊字符:2.4、位置限定5、转义字符5.1、普通转义字符5.2、转义字符&#xff08;范围字符&#xff09;6、(&#xff09;、[]、{}作用7、量词7.1、数字量词7.2、符号量词7.3、懒惰…...

用什么软件做动漫视频网站好/线上营销模式有哪些

2019独角兽企业重金招聘Python工程师标准>>> RestTemplate可以使用loadBalanced&#xff0c;但加上了oauth2的restTemplate 就识别不到服务名称了。 这个是个蛋疼的问题。 查了一天的github&#xff0c;发现了这是一个bug。 spring-cloud-security问题 看了半天也没…...

选择锦州网站建设/网站是怎么做出来的

1.无外部包引用时用通常方法即可&#xff1b; 2.有外部包引用时&#xff0c;最好使用 fat jar eclipse plug-in&#xff0c;可以自己去下&#xff0c;zip文件解压后&#xff0c;将net.sf.fjep.fatjar_0.0.25文件夹放入eclipse的plugins文件 夹中&#xff0c;然后将里面的fatjar…...

织梦做网站利于优化/铜川网站seo

泻药首选给予观点&#xff1a;牛&#xff0c;不是很牛牛1&#xff0c;400台&#xff0c;土豪&#xff01;而且从节目来看&#xff0c;其实是有统一的后台指令操控的&#xff0c;通讯做的也不错牛2&#xff0c;数量才能展示质量&#xff01;目测跳舞过程中没有摔跤的&#xff0c…...

男女做爰网站19/乔拓云智能建站系统

介绍如何使用机密消息解码器 检查Visual Studio Code是否已准备好执行消息解码 在计算机上创建用于代码的文件玩意儿。文件夹命名为Sleuth。 鼠标放在Sleuth文件夹&#xff0c;右键点击“在终端中打开”。 输入命令行&#xff1a; 打开Visual Studio Code 创建文件&#xff0c;…...