当前位置: 首页 > wzjs >正文

自己怎么做百度网站百度系app

自己怎么做百度网站,百度系app,二级域名怎么做网站备案,做网站用dw还是vs文中涉及操作均来自靶场,切勿用于非授权渗透测试! 一、JavaScript原型链基础 要理解原型污染漏洞,首先需要掌握JavaScript中原型(prototype)和原型链(prototype chain)的基本概念。 1.1 什么是原型 JavaScript是一种基于原型的语言&#…

文中涉及操作均来自靶场,切勿用于非授权渗透测试!

一、JavaScript原型链基础

要理解原型污染漏洞,首先需要掌握JavaScript中原型(prototype)和原型链(prototype chain)的基本概念。

1.1 什么是原型

JavaScript是一种基于原型的语言,每个对象都有一个原型对象,对象以其原型为模板,从原型继承方法和属性。原型对象也可能拥有原型,并从中继承方法和属性,这种关系被称为原型链。

function Person(name, age) {this.name = name;this.age = age;
}let p1 = new Person('Alice', 25);
console.log(p1);

在这个例子中,p1Person构造函数的一个实例,它拥有nameage属性,同时还有一个__proto__属性指向Person.prototype

原型链关系验证

console.log(p1.__proto__ === Person.prototype);  // true ✅

console.log(p1.__proto__.__proto__ === Object.prototype);  // true ✅

console.log(p1.__proto__.__proto__.__proto__);  // null ✅

原型链图示

关键点说明

第一层:p1.__proto__ 指向 Person.prototype,这是构造函数为所有实例提供的共享原型对象

第二层:Person.prototype 本身也是一个对象,它的 __proto__ 自然指向 JavaScript 的根原型 Object.prototype

终点:所有原型链最终都会通过 Object.prototype.__proto__ 指向 null,这是原型链的终点

特别说明

在ES6中更推荐使用 Object.getPrototypeOf() 而不是直接访问 __proto__

console.log(Object.getPrototypeOf(p1) === Person.prototype); // true

构造函数本身的 __proto__ 指向 Function.prototype(这是另一个独立的原型链):

console.log(Person.__proto__ === Function.prototype); // true

1.2 所有函数都是 Function 的实例

Person 是构造函数

当你定义 function Person() {}Person 就是一个用于创建对象的构造函数。

但它同时也是一个函数对象,因此它继承自 Function.prototype

console.log(Person.__proto__ === Function.prototype); // true

Function 自身也是构造函数

Function 是 JavaScript 内置的构造函数,用于创建所有函数(包括它自己!)。

有趣的是,Function__proto__ 也指向 Function.prototype

console.log(Function.__proto__ === Function.prototype); // true

这是 JavaScript 中唯一一个 __proto__ 指向自身 prototype 的构造函数。

1.3 Object 的构造函数角色

Object 是顶级构造函数

Object 是所有对象的基类(包括函数对象)。

普通对象(如 {}new Person())的原型链最终都会指向 Object.prototype

ObjectFunction 的关系

Object 本身是一个函数(构造函数),因此它也继承自 Function.prototype

console.log(Object.__proto__ === Function.prototype); // true

Function.prototype 本身是一个对象,它的 __proto__ 又指向 Object.prototype

console.log(Function.prototype.__proto__ === Object.prototype);

1.4 完整的原型链关系图

function Person() {}
const p1 = new Person();// 1. 实例的原型链
console.log(p1.__proto__ === Person.prototype);          // true
console.log(p1.__proto__.__proto__ === Object.prototype); // true
console.log(p1.__proto__.__proto__.__proto__ === null);   // true// 2. 构造函数的原型链
console.log(Person.__proto__ === Function.prototype);     // true
console.log(Function.__proto__ === Function.prototype);   // true (特殊!)
console.log(Object.__proto__ === Function.prototype);     // true// 3. 原型对象的原型链
console.log(Function.prototype.__proto__ === Object.prototype); // true
console.log(Person.prototype.__proto__ === Object.prototype);   // true
终极关系总结(关键记忆点)
对象	              __proto__ 指向	        说明
p1 (实例)	          Person.prototype	    实例指向构造函数的原型
Person (函数)	      Function.prototype	  所有函数继承自 Function
Person.prototype	  Object.prototype	    默认构造函数的原型继承自 Object
Function	          Function.prototype	  唯一自引用的构造函数
Object	            Function.prototype	  Object 本身是函数
Function.prototype	Object.prototype	    函数原型的父级是对象原型
Object.prototype	  null	                原型链的终点

二、原型污染漏洞原理

2.1 什么是原型污染

原型污染是指攻击者通过某种手段修改JavaScript对象的原型(通常是Object.prototype),从而影响所有基于该原型的对象的行为。

在Lodash的案例中,某些函数(如defaultsDeep)未能正确处理特殊属性(如constructor__proto__),导致攻击者可以通过精心构造的输入修改Object.prototype

2.2 Lodash漏洞示例

Lodash的defaultsDeep函数用于递归合并对象的属性。在4.17.12之前的版本中,它存在原型污染漏洞:

 const payload = '{"constructor": {"prototype": {"vuln": true}}}';_.defaultsDeep({}, JSON.parse(payload));if({}.vuln === true) {alert('lodash 存在原型污染漏洞!');}else{console.log('no vuln!');}

2.3 解析_.defaultsDeep 为何会导致漏洞

当执行_.defaultsDeep({}, JSON.parse(payload));,递归地将 payload 的属性合并到空对象 {} 中。Lodash 未对特殊属性名(constructorprototype)做安全过滤。

执行流程:
1. 创建恶意对象
const payload = '{"constructor": {"prototype": {"vuln": true}}}';
2. _.defaultsDeep({}, JSON.parse(payload))的过程

_.defaultsDeep(object, sources) 是 Lodash 提供的一个递归合并方法,用于将 sources(源对象)的属性深度合并到 object(目标对象)中,但仅当目标对象的对应属性为 undefined 时才覆盖。

JSON.parse(payload)解析 JSON 字符串,生成 JavaScript 对象

源对象 sources:{ constructor: { prototype: { vuln: true } } }

目标对象 object: 空对象 {}(所有属性初始为 undefined

关键点:constructor.prototype 是 JavaScript 中访问 Object.prototype 的路径。

  1. 合并过程

检查目标对象的 constructor 属性 → undefined,直接合并源对象的 constructor

递归检查 constructor.prototype → 目标对象无此属性,继续合并。

最终将 { vuln: true } 赋值到 Object.prototype(即 constructor.prototype 指向的原型对象)。

2.4 漏洞危害

原型污染可能导致多种安全问题:

属性注入:向全局对象注入恶意属性

拒绝服务(DoS):覆盖关键方法导致应用崩溃

远程代码执行(RCE):在某些特定环境下可导致代码执行

安全机制绕过:可能绕过输入验证或其他安全控制

## 感谢您的关注

echo "QmlsaWJpbGkgc2VhcmNoICdQZW5UZXN0M3JfWmVybGsnIGZvciBtb3JlIHZpZGVvLCBUaGFuayB5
b3UgZm9yIHlvdXIgc3VwcG9ydCEK"|base64 -d

http://www.dtcms.com/wzjs/441576.html

相关文章:

  • 做网站需要多久杭州seo代理公司
  • 哈尔滨网站建设效果好网站关键词优化教程
  • 邪恶东做图网站茶叶推广软文
  • 网站设计网站制作手机一键优化
  • 销售网站建设怎么做seo公司软件
  • 制作简单网页教程武汉seo关键词排名
  • 素材网站怎么做关键词优化简易
  • 安阳交友网站开发公司厦门关键词排名seo
  • 做百度网站费用整合营销传播最基础的形式是
  • 厦门网站建设制作工具百度人气榜
  • 网站收录查询入口网站应该如何推广
  • 网站建设相关法律网站域名查询ip
  • 正式做网站站点怎么新建企业宣传推广怎么做
  • 如何用discuz做网站无线网络优化是做什么的
  • 网站 扩展我要发布信息
  • 昆明专业网站建设的公司深圳广告公司
  • 网站 配色网络营销技巧和营销方法
  • 做一个网站做少多少钱2021年重大新闻事件
  • 做外汇那个网站好一键优化免费下载
  • 惠安规划局建设局网站seo关键词推广
  • 团购网站建设目的今日全国最新疫情通报
  • 网站建设页面搜什么关键词能搜到好片
  • 大连网站搜索优名风seo软件
  • 深圳网站建设网络推广福州百度seo代理
  • 网站开发做账seo人员工作内容
  • 太原建设网站公司防恶意点击软件
  • 网站建设简述2023年8月份新冠症状
  • 腾讯广告投放端提供的建站工具有搜索引擎营销的内容有哪些
  • 自己做网站的域名免费下载百度到桌面
  • 山东外贸网站建设app拉新渠道商