【攻防世界】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)
在这个例子中:
-
创建了一个对象
foo,并给它添加了一个属性bar,值为 1。 -
通过修改
foo的原型(即Object.prototype),添加了一个新的属性bar,值为 2。 -
创建了一个新的空对象
zoo。 -
输出
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}


浙公网安备 33010602011771号