0

javascript原型链污染

 2 years ago
source link: https://suyumen.github.io/2021/11/11/2021-11-11-javascript%E5%8E%9F%E5%9E%8B%E9%93%BE%E6%B1%A1%E6%9F%93/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

javascript原型链污染 · SUYUMEN

avatar.jpg
suyumen
目前主要在学习web相关

javascript原型链污染

Word count: 357 | Reading time: 1min

这个知识点涉及到的是好久以前的某些题,但是我压根就没看,不是因为我懒的看,而是因为那些比赛好多题,我都不会,所以都轮不到它们。


js原型链污染

文章参考:https://www.leavesongs.com/PENETRATION/javascript-prototype-pollution-attack.html

为了创建类方法,使用原型prototype。可以视原型prototype是类的一个属性,而所有此类实例化的对象,都将拥有这个属性中的所有内容,包括变量和方法。

通过类名.prototype可以访问类的原型;类的实例通过对象名.__proto__访问类的原型。

原型链继承

JavaScript使用prototype链实现继承机制,在调用对象属性时,如果该对象没有,将调用.__proto__继续向原型查找,直到得到属性或者null

原型链污染

原型链污染指的是:如果能够控制并修改一个对象的原型,那么将可以影响所有和这个对象来自同一个类、父祖类的对象。

在可以设置__proto__的值的情况下,就可以完成原型链污染。

找到能够控制数组(对象)的“键名”的操作比如:

1.对象merge:

2.对象clone

构造类似如下代码段:

JSON.parse('{"a": 1, "__proto__": {"b": 2}}')
global.process.mainModule.constructor._load('child_process').execSync

Site by Hexo | theme Cxo

907 | 1293

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK