Web

hackjs

考点:qs数组原型链污染,hasOwnProperty覆盖 image.png 通过审计第三方包可以大致猜出要考什么 确定明确方向 https://github.com/n8tz/CVE-2022-24999 有效负载将创建这种“邪恶”数组:

categories[_proto__]&categories[_proto__]&categories[length]=100000000

所有继承了 Object 的对象都会继承到 hasOwnProperty 方法。这个方法可以用来检测一个对象是否含有==特定的自身属性==;和 in 运算符不同,该方法会忽略掉那些从原型链上继承到的属性 通过将它==设置为一个字符串==,venom.hasOwnProperty("text")的调用将会失败,因为hasOwnProperty已不再是一个函数。所以进入catch

Object.keys(venom).length来获取venom对象中的属性数量,==但是不包括原型链上的其他父属性== 可以通过原型链污染实现属性的控制

为什么考虑venom[text]进行POST传参(少见) ==参考用例== image.png 调试分析发现qs数组原型链污染 仅有在第一个传参是是[__proto__]才起作用 如果不是第一个 没有成功污染父类属性 image.png 如果是第一个 image.png 就可以污染成功了 神奇

venom[__proto__][welcome]=159753&venom[text]=flag&venom[hasOwnProperty]=J1rrY

image.png