suyumen
目前主要在学习web相关

javascript原型链污染

2021-11-11 js原型链污染
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

构造类似如下代码段:

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

Author: suyumen

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/

Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.

< PreviousPost
小记
NextPost >
2021祥云杯cralwer_z
CATALOG
  1. 1. 前言
  2. 2. js原型链污染
    1. 2.1. 原型
    2. 2.2. 原型链继承
    3. 2.3. 原型链污染