题目给了源码,主要漏洞点在这
1 | const merge = (a, b) => { |
可以看到很明显的原型链污染,跟进Game.dealWithAttacks
1 | this.dealWithAttacks = function (sekiro, solution) { |
很明显,可以命令执行,只需要污染sekiro.attackInfo.additionalEffect,使其拼接到代码里就可以了,接下来看怎么进入if内
1 | this.attacks = [ |
只要找有additionalEffect属性的时候进行原型链污染就好了,exp如下,多跑几次就有了
1 | import requests |