手机上怎么买彩票双色球 微信上有人推荐买彩票 能合买彩票的平台 夫妻买彩票狂中30亿 买彩票心态 买彩票就买大乐透开奖结果 哪个平台买彩票安全吗 买彩票有买一个号的吗 怎么看走势图买彩票 如何在电脑上买彩票 美国几岁可以买彩票? 福彩工作人员买彩票 彩客网买彩票 能在微信上买彩票吗 怎么买彩票容易中

JavaScript 原型链污染

来源£º本站整理 作者£º佚名 时间£º2019-04-22 TAG£º 我要投稿

0x01 前言
最近看到一篇原型链污染的文章£¬自己在这里总结一下
 
0x02 javascript 原型链
js在ECS6之前没有类的概念£¬之前的类都是用funtion来声明的¡£如下

可以看到b在实例化为test对象以后£¬就可以输出test类中的属性a了¡£这是为什么呢£¿
原因在于js中的一个重要的概念£º?#22363;小?br/> 而?#22363;?#30340;整个过程就称为该类的原型链¡£
在javascript中,每个对象的都有一个指向他的原型(prototype)的内部链接£¬这个原型对象又有它自己的原型£¬直到null为止
function i(){
    this.a = "test1";
    this.b = "test2";}

可以看到其父类为object£¬且里面还有许多函数£¬这就解释了为什么许多变量可以调用?#25215;?#26041;法¡£
在javascript中一切皆对象£¬因为所有的变量£¬函数£¬数组£¬对象 都始于object的原型即object.prototype¡£同时£¬在js中只有类才有prototype属性£¬而对象却没有£¬对象有的是__proto__和类的prototype对应¡£且二者是等价的

当我们创建一个类时

原型链为
b -> a.prototype -> object.prototype->null
创建一个数组时

原型链为
c -> array.prototype -> object.prototype->null
创建一个函数时

原型链为
d -> function.prototype -> object.prototype->null
创建一个日期

原型链为
f -> Data.prototype -> object.prototype->null
所以£¬测试之后会发现£ºjavascript 一切皆对象£¬一切皆始于 object.prototype
原型链变量的搜索
下面先看一个例子£º

我们实例要先于在i中添加属性£¬但是在j中也有了c属性¡£这是为什么呢
答£º
当要使?#27809;?#36755;出一个变量时£º首先会在本层中搜索相应的变量£¬如果不存在的话£¬就会向上搜索£¬即在自己的父类中搜索£¬当父类中也没有时£¬就会向祖父类搜索£¬直到指向null£¬如果此时还没有搜索到£¬就会返回 undefined
所以上面的过程就很好解释了£¬原型链为
j -> i.prototype -> object.prototype -> null
所以对象j调用c属性时£¬本层并没有£¬所以向上搜索£¬在上一层找到了我们添加的test3,所以可以输出¡£
 
prototype 原型链污染
先看一个小例子£º
mess.js
----
(function()
{
    var secret = ["aaa","bbb"];
    secret.forEach();
})();
attach.html

结果£º

在mess.js中我们声明了一个数组 secret,然后该数组调用了属于 Array.protottype的foreach方法,如下

但是£¬在调用js文件之前£¬js代码中将Array.prototype.foreach方法进行了重写£¬而prototype链为secret -> Array.prototype ->object.prototype,secret中无 foreach 方法£¬所以就会向上检索£¬就找到了Array.prototype 而其foreach方法已经被重写过了£¬所以会执行输出¡£
这就是原型链污染¡£很明显£¬原型链污染就是£º在我们想要利用的代码之前的赋值语句如果可控的话£¬我们进行 ——__proto__ 赋值£¬之后就可以利用代码了
 
如何应用£¿
在javascript中可以通过 test.a or test['a'] 对数组的元素进行访问£¬如下£º

同时对对象来说说也是一样的

[1] [2] [3] [4]  下一页

  • 最新更新
    • 相关阅读
      • 本类热门
      • 最近下载
      ¹ºÂò²ÊƱȨÍþÍøÖ·
      手机上怎么买彩票双色球 微信上有人推荐买彩票 能合买彩票的平台 夫妻买彩票狂中30亿 买彩票心态 买彩票就买大乐透开奖结果 哪个平台买彩票安全吗 买彩票有买一个号的吗 怎么看走势图买彩票 如何在电脑上买彩票 美国几岁可以买彩票? 福彩工作人员买彩票 彩客网买彩票 能在微信上买彩票吗 怎么买彩票容易中