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

热门文章

  1. Android9.0默认将开发者选项中的OEM锁开关打开
  2. 使用pymysql将excel表格的数据导入mysql数据库(CRUD)(附代码)
  3. 聊天记录:李维、左轻侯、周爱民谈Diamondback
  4. Java安装详细步骤(win10)
  5. 苹果xr配置_iPhone11和XR到底谁性价比高?一文看懂
  6. 挖藕!模拟sql抓取qq密码
  7. OpenMARI 开源指标体系和效能提升指南之GQM从入门到精通
  8. Matplotlib——散点图_多种自定义
  9. VUE如何快速做一个轮播图
  10. 怎么在LinkedIn领英安全添加到3万个好友?