CATCTF wife原型链污染

2023-11-19

CATCTF wife原型链污染

原型链污染原理:https://drun1baby.github.io/2022/12/29/JavaScript-%E5%8E%9F%E5%9E%8B%E9%93%BE%E6%B1%A1%E6%9F%93/

如下代码,prototype是newClass类的一个属性。newClass 实例化的对象 newObj.__proto__ 指向 newClass 类的 prototype

function newClass() {
    this.test = 1;
}

var newObj = new newClass();

JSON 解析的情况下,__proto__ 会被认为是一个真正的“键名”,而不代表“原型”。如果是let o2 = {a: 1, "__proto__": {b: 2}}__proto__会被认为是o2的原型。如果作为键名(不会被解析)就会作为子类的原型

let o1 = {}
let o2 = JSON.parse('{"a": 1, "__proto__": {"b": 2}}')
merge(o1, o2)
console.log(o1.a, o1.b)

o3 = {}
console.log(o3.b)

merge用于合并对象

merge 操作是最常见可能控制键名的操作,也最能被原型链攻击,很多常见的库都存在这个问题。

原型链污染

CATCTF 2022 wife

靶场:https://adworld.xctf.org.cn/challenges/details?hash=e5ba95f8-884a-11ed-ab28-000c29bc20bf&task_category_id=3

注册部分的代码:

app.post('/register', (req, res) => {
    let user = JSON.parse(req.body)
    if (!user.username || !user.password) {
        return res.json({ msg: 'empty username or password', err: true })
    }
    if (users.filter(u => u.username == user.username).length) {
        return res.json({ msg: 'username already exists', err: true })
    }
    if (user.isAdmin && user.inviteCode != INVITE_CODE) {
        user.isAdmin = false
        return res.json({ msg: 'invalid invite code', err: true })
    }
    let newUser = Object.assign({}, baseUser, user)
    users.push(newUser)
    res.json({ msg: 'user created successfully', err: false })
})

json解析后,利用Object.assign()创建子类newUser,push进users

这里传入payload:"__proto__"{"isAdmin":true}造成原型链污染,生成的user用户拥有isAdmin=true
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CATCTF wife原型链污染 的相关文章

随机推荐

  • 卓越性能代码_「Win」被隐藏起来的卓越性能模式,为何不想让人发现?

    前言 众所周知 电脑电源管理中包含三大模式 分别是 节能模式 平衡模式 高性能模式 其对电脑的性能影响还是比较大的 但是今天所说的 卓越性能模式 应该很多人都没听说过 又是何方神圣 其为何要隐藏起来不想被人发现 如何开启 卓越性能 模式 右
  • LLaMA微调记录

    本文基于开源代码https github com Lightning AI lit llama tree main执行微调 其他参考链接 Accelerating LLaMA with Fabric A Comprehensive Guid
  • 实验二:使用KMP算法实现字符串的匹配

    1 实验目的 熟练的掌握数据结构中串这种数据类型 学会使用相较于朴素的模式识别算法更加先进的KMP算法进行识别和匹配 同时 在数据结构试验之中熟悉和了解串的性质和使用方法 2 实验要求 输入 通过命令行参数输入原字符串和模式字符串 输出 1
  • 全排列问题

    问题描述 给定一个由不同的小写字母组成的字符串 输出这个字符串的所有全排列 我们假设对于小写字母有 a lt b lt lt y lt z 而且给定的字符串中的字母已经按照从小到大的顺序排列 输入 输入只有一行 是一个由不同的小写字母组成的
  • 超详细Vue Devtools的下载和安装——Vue的调试工具

    在使用 Vue 时 我们推荐在浏览器上安装 Vue Devtools Vue Devtools 是 Vue 官方发布的调试浏览器插件 可以安装在 Chrome 和 Firefox 等浏览器上 直接内嵌在开发者工具中 使用体验流畅 Vue D
  • 哪些行业是离散制造?哪些是流程制造?他们有什么区别?

    一 离散制造业 定义 产品往往由多个零件经过一系列并不连续的工序的加工最终装配而成 典型的离散制造行业主要包括机械制造 电子电器 航空制造 汽车制造等行业 大批量生产 如 汽车 多品种小批次 如 航空 95 企业属于多品种小批次 客户需求多
  • C# .NET万能数据库访问封装类(ACCESS、SQLServer、Oracle)

    在app config文件中写上数据库中连接信息
  • 2023年华为笔试面试机考真题100道(C/C++语言)

    1 字符串比较 给定字符串A B和正整数V A的长度与B的长度相等 请计算A中满足如下条件的最大连续子串的长度 1 该连续子串在A和B中的位置和长度均相等 2 该连续子串 A i B i 之和小于等于V 其中 A i B i 表示两个字母A
  • CTF BugKu平台——Crypto篇刷题记录(后续更新)

    CTF BugKu平台 Crypto篇 前言 抄错的字符 聪明的小羊 ok lt gt 把猪困在猪圈里 你喜欢下棋吗 小山丘的秘密 EN 气泡 你以为是md5吗 Math English easy crypto 黄道十二官 一段新闻 7 1
  • FPGA project : water_led

    module water led parameter MAX CNT 25 d25 000 000 input wire sys clk input wire sys rst n output wire 03 00 led signal r
  • “getaddrinfo failed: 在数据库查找中出现一个不可恢复的错误”的解决方法

    原因是winsock损坏了 使用命令 netsh winsock reset 然后重启即可修复 参考资料 http support microsoft com kb 811259
  • 正大国际:正确的交易与趋势无关只与系统的入场信号有关对吗?

    趋势的方向根本就和你的成功无任何关联 什么看外盘 听消息 问专家 这些除了使自己更加焦虑以外 对我们的成功交易没有丝毫的帮助 只要系统显示的是做空信号 哪怕全世界的人都看多 我们也只能做空 严格的按照系统操作才能保证亏损最小化 利润最大化
  • pip命令-Fatal error in launcher: Unable to create process using ...迁移虚拟环境后出错如何解决?

    目录 一 背景 二 解决问题日志 搜索历程 三 因迁移环境造成的该异常 之解决思路 一 背景 python版本3 8 因为作者刚开始学python时不懂虚拟环境 所以将虚拟环境安装在了一个临时文件夹中 现在 我想要把这个已经下载了大量包库的
  • python 爬虫 报错 求救

    raise JSONDecodeError Expecting value s err value from None json decoder JSONDecodeError Expecting value line 1 column 1
  • window server 2019环境下将nginx配置为开机自启动服务

    公司window服务器上面有个nginx在跑 重启服务器后没有自动启动 需要手动运行nginx 如果是非正常重启业务可能就中断了1 下载WinSW window service wraper 地址 https github com kohs
  • MATLAB实现函数拟合

    目录 一 理论知识 1 拟合与插值的区别 2 几何意义 3 误差分析 二 操作实现 1 数据准备 2 使用cftool 拟合工具箱 三 函数拟合典例 四 代码扩展 一 理论知识 1 拟合与插值的区别 通俗的说 插值的本质是根据现有离散点的信
  • Unity 动画系统 Animation 和 Animator 联系与区别

    返回目录 引言 在unity的老版本中我们只有Animation组件 在4 6版本以后则增添了Animator组件 如果只是控制一个动画的播放我们则用Animaton组件 如果是很多动画之间相互转换则使用Animator组件 它们两者的区别
  • 传统优化算法VS智能优化算法

    传统优化算法VS智能优化算法 传统优化算法优点 传统优化算法缺点 遗传算法的优点 遗传算法的缺点 特点的比较 传统优化算法优点 1 利用了解空间的特性 如可微等 2 理论较为完善 计算量小 3 收敛速度快 4 具有确定的终止准则 传统优化算
  • 高德地图逆地理编码Geocoder的getlocation获取不到位置信息

    问题 原生定位接口定位失败 则status返回error事件或回调error信息 获取不到位置信息 产生原因 逆编码方法使用不了原因是使用的高德地图的应用方向web服务 而Geocoder属于web端 var geocoder new AM
  • CATCTF wife原型链污染

    CATCTF wife原型链污染 原型链污染原理 https drun1baby github io 2022 12 29 JavaScript E5 8E 9F E5 9E 8B E9 93 BE E6 B1 A1 E6 9F 93 如下