【攻防世界】wife_wife

本题涉及Java Script原型链污染,详细可以看这个:JavaScript 原型链污染 | Drunkbaby's Blog

我只简单举个例子:

// foo是一个简单的JavaScript对象
let foo = {bar: 1}
// foo.bar 此时为1 console.log(foo.bar) // 修改foo的原型(即Object) foo.__proto__.bar = 2 // 由于查找顺序的原因,foo.bar仍然是1 console.log(foo.bar) // 此时再用Object创建一个空的zoo对象 let zoo = {} // 查看zoo.bar console.log(zoo.bar)
在这个例子中:
  1. 创建了一个对象 foo,并给它添加了一个属性 bar,值为 1。
  2. 通过修改 foo 的原型(即 Object.prototype),添加了一个新的属性 bar,值为 2。
  3. 创建了一个新的空对象 zoo
  4. 输出 zoo.bar 的值。
由于 zoo 对象没有自己的 bar 属性,JavaScript 引擎会沿着原型链向上查找,直到找到 Object.prototype 上的 bar 属性。因此,输出结果是 2,这表明 zoo 对象“继承”了 Object.prototype 上的 bar 属性。

原型链污染的实际应用

在实际应用中,原型链污染可能发生在以下情况:
  • 第三方库的漏洞:如果一个库允许用户输入被用来修改对象的原型,那么攻击者可以利用这一点来污染原型链。
  • Web 应用程序:在处理用户输入时,如果输入被用来修改对象的原型,那么攻击者可以利用这一点来执行恶意代码或访问敏感数据。

进入题目,是一个登录界面,尝试注册

 有admin的勾选,勾选后要输入邀请码,题目说不需要爆破,所以另寻他法

 抓包直接修改似乎也不行

题目没有给提示,无从下手。

使用 Wappalyzer 插件(Chrome能用,火狐我用不了)发现其后端用Node.js语言。

这里需要先学习一下Javascript原型链污染的知识:https://drun1baby.top/2022/12/29/JavaScript-原型链污染/#1-什么是原型(JavaScript-原型链继承)
利用该漏洞的前提是后端使用Node.js语言

 

利用该漏洞构造payload,成功,登录后获得flag

  flag:CatCTF{test_flag_h0w_c@n_I_l1ve_w1th0ut_nilou}

 

posted @ 2025-05-02 00:45  Antoniiiia  阅读(155)  评论(0)    收藏  举报