渗透实战PortSwigger Labs AngularJS DOM XSS利用详解

article/2025/6/30 22:47:38

本Lab学习到关于AngularJS的 xss 漏洞利用
直接输入回显页面,但是把<>进了 html 编码了

当我们输入{{1+1}},没有当作字符处理,而是执行了

{{}} 是多种前端框架(如 Vue、Angular、Django 模板等)中常见的模板插值语法,主要用于将数据动态绑定到视图,双花括号 {{1+1}} 包裹的表达式会执行运算。
测试{{alert()}},因为存在沙箱机制过滤了危险字符

这里用到新的绕过方法{{ $eval.constructor('alert()')() }}

下面分析为什么这样可以执行alert()

创建 AngularJS 代码

<!DOCTYPE html>
<html><head><title>AngularJS</title><!-- 引入AngularJS库(1.6.9版本) --><script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script></head><!-- 定义Angular应用(模块名为myApp)和控制器(myCtrl)的作用域 --><body ng-app="myApp" ng-controller="myCtrl"><!-- 双向数据绑定:显示$scope.firstName的值 -->{{ firstName }}<!-- 表达式计算:直接输出1+1的结果2 -->{{ 1+1 }}            </body><script>// 创建AngularJS模块(名为myApp),空数组表示无依赖模块var app = angular.module("myApp", []);// 定义控制器myCtrl,注入$scope服务app.controller("myCtrl", function($scope) {// 在$scope上定义firstName属性,初始值为"John"$scope.firstName = "John";});</script>
</html>

当我们在代码中加入{{ $eval.constructor('alert()')() }},通过构造函数执行alert()


创建一个<p id="test"></p>
angular.element(document.getElementById('test')).scope();获取的作用域对象
$id=2是子作用域

任何时候我们创建 javascript 对象,都会从原型Prototype继承一些默认属性,例如$eval$on

在这里插入图片描述
$id=1是根作用域,来自Prototype
在这里插入图片描述

我们可以定义一个函数function test(),最后通过test()调用这个函数执行打印输出Hello world!

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/Function手册中查看关于Function() Constructor

虽然这是创建函数的方式,但不推荐这样做

根据上面的方法重新写一个函数

若不将函数赋给某个变量,将不会执行

记住前面说的

我们直接在后面加()即可调用函数

所以此时再看本次Lab解题 payload最后这个()就是在调用前面通过构造函数创建的函数

这次我们直接看下test()函数的构造函数,就是Function()构造函数,因为它可以创建Function对象

在AngularJS中,$onScope对象的方法,用于监听事件。作为函数,它本身是Function的实例,因此其constructor属性指向Function构造函数

$on.constructor('alert()') 等价于 Function('alert()'),生成一个匿名函数,再通过 () 调用该函数,于是就形成了最终的 payload

为什么不能直接{{Function('alert()')()}},因为有防护机制,所以要用scope对象的方法的构造函数传入 payload 执行

PortSwigger 靶场实战持续更新中

echo "Quermeinhumike+8mmh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS92aWRlby9CVjE4cDdyejhFaDgv
P3ZkX3NvdXJjZT0zMGU4ODFmYzYxYjJkYWFjMDVmYWFkN2RmZjAyMjMxZgo="|base64 -d

http://www.hkcw.cn/article/tqmbhIQaqR.shtml

相关文章

配置刷新技术

FPGA 片上三模冗余( TMR) 设计结合配置刷新( Scrubbing) 的防护方法能够有效地提高系统的抗单粒子翻转性能。 三模冗余的方法利用模块三冗余及三取二自动表决来掩蔽错误&#xff0c;但是如果错误积累到一定程度&#xff0c;导致同时有两个或两个以上模块发生翻转错误&#xff0…

计算机科技笔记: 容错计算机设计05 n模冗余系统 其他复杂结构

目录 NMR变体动态冗余系统混合冗余系统筛除新系统 NMR变体 V是表决器 动态冗余系统 优点像N模并行系统&#xff0c;后边加一个故障检测和系统重构百分之90以上的故障都是瞬时故障&#xff0c;检测到故障重新运行即可如果出现老化&#xff0c;可以用Spare-1替代 混合冗余系…

HealthBench医疗AI评估基准:技术路径与核心价值深度分析(上)

引言:医疗AI评估的新范式 在人工智能技术迅猛发展的当下,医疗AI系统已逐渐从实验室走向临床应用。然而,医疗领域的特殊性要求这些系统不仅需要在技术指标上表现出色,更需要在实际临床场景中展现出可靠、安全且有效的性能。长期以来,医疗AI评估领域面临着三个核心挑战:评…

中国就业人口现状分析与未来趋势预测

目录 1、核心摘要 2、就业人口总量与趋势 就业人口规模 产业结构变化 3、未来就业趋势 2030年就业变革 人口结构影响 技能需求变化 4、年龄结构与老龄化影响 老龄化现状 抚养比变化 6、老龄化经济影响 消费结构变化 创新活力 7、行业分布与数字经济 行业就业结…

三种经典算法优化无线传感器网络(WSN)覆盖(SSA-WSN、PSO-WSN、GWO-WSN),MATLAB代码实现

三种经典算法优化无线传感器网络(WSN)覆盖&#xff08;SSA-WSN、PSO-WSN、GWO-WSN&#xff09;&#xff0c;MATLAB代码实现 目录 三种经典算法优化无线传感器网络(WSN)覆盖&#xff08;SSA-WSN、PSO-WSN、GWO-WSN&#xff09;&#xff0c;MATLAB代码实现效果一览基本介绍程序设…

SQL Transactions(事务)、隔离机制

目录 Why Transactions? Example: Bad Interaction Transactions ACID Transactions COMMIT ROLLBACK How the Transaction Log Works How Data Is Stored Example: Interacting Processes Interleaving of Statements Example: Strange Interleaving Fixing the…

Linux(10)——第二个小程序(自制shell)

目录 ​编辑 一、引言与动机 &#x1f4dd;背景 &#x1f4dd;主要内容概括 二、全局数据 三、环境变量的初始化 ✅ 代码实现 四、构造动态提示符 ✅ 打印提示符函数 ✅ 提示符生成函数 ✅获取用户名函数 ✅获取主机名函数 ✅获取当前目录名函数 五、命令的读取与…

MySQL:视图+用户管理+访问+连接池原理

一、视图 视图是一个虚拟表&#xff0c;其内容由查询定义。同真实的表一样&#xff08;相当于是把查询的内容当成一个临时表来使用&#xff09;&#xff0c;视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表&#xff0c;基表的数据变化也会影响到视图。 1.1 为…

【2025年B卷】华为OD-100分-字符串重新排列、字符串重新排序

专栏订阅🔗 -> 赠送OJ在线评测 字符串重新排列、字符串重新排序 问题描述 给定一个字符串 s s s,

LearnOpenGL-笔记-其十三

PBR(Physically Based Rendering) 什么是基于物理的渲染&#xff1f;简单地说&#xff0c;还记得我们之前学习的法线贴图的内容吗&#xff1f;我们希望不修改物体实际几何形状的前提下去修改表面的法线方向来实现不同的光照效果&#xff0c;实现这个内容的基础就是我们的光照效…

微软PowerBI考试 PL-300学习指南

微软PowerBI考试 PL-300学习指南 Microsoft Power BI 数据分析师学习指南 昨天的投票情况&#xff1a; 技能概览 准备数据 (25-30%) 数据建模 (25-30%) 可视化和分析数据 (25-30%) 管理和保护 Power BI (15–20%) 准备数据 (25-30%) 获取或连接到数据 确定并连接到数据源…

机器学习——集成学习

一、集成学习概念 集成学习: (Ensemble Learning)是一种机器学习范式&#xff0c;它通过构建并结合多个模型来完成学习任务,获得更好的泛化性能。 核心思想&#xff1a;通过组合多个弱学习器来构建一个强学习器。 bagging思想&#xff1a;有放回的抽样&#xff1b;平权投票…

ResNet改进(46):Ghost-ResNet优化卷积神经网络

1.创新点分析 引言 在计算机视觉领域,ResNet是里程碑式的架构,但其计算量较大限制了在资源受限环境的应用。 华为诺亚方舟实验室提出的Ghost模块通过"廉价操作"生成冗余特征图,显著降低了计算成本。 本文将深入解析基于Ghost模块的ResNet实现,展示如何在不显著…

光伏功率预测 | LSTM多变量单步光伏功率预测(Matlab完整源码和数据)

光伏功率预测 | MATLAB实现基于LSTM长短期记忆神经网络的光伏功率预测 目录 光伏功率预测 | MATLAB实现基于LSTM长短期记忆神经网络的光伏功率预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 光伏功率预测 | LSTM多变量单步光伏功率预测&#xff08;Matlab完整源码和…

langGraph多Agent

目录 子图&#xff08;Subgraphs&#xff09;使用子图共享状态模式&#xff08;Shared state schemas&#xff09;不同状态模式&#xff08;Different state schemas&#xff09;添加持久化查看子图状态流式获取子图输出 多智能体系统&#xff08;Multi-agent systems&#xff…

OVD开放词汇检测中COCO数据集的属性

前面的文章介绍了在Detic中基于COCO数据集实现OVD检测的操作方法&#xff0c;但是要在其他数据集上迁移&#xff0c;还是要了解COCO数据集是如何被利用的&#xff0c;这里针对数据集的属性进行说明。 COCO数据集的标签形式做过目标检测的应该都很熟悉&#xff0c;图像名称、宽…

构建高性能风控指标系统

一、引言 在金融风控领域&#xff0c;指标是风险识别的核心依据。风控平台核心系统之一--规则引擎的运行依赖规则、变量和指标&#xff0c;一个高性能的指标系统非常重要&#xff0c;本文将深入探讨风控平台指标系统的全链路技术实现&#xff0c;涵盖从指标配置到查询优化的完…

【LLM】Agent综述《Advances And Challenges In Foundation Agents》

note 拥有完善的认知架构仅仅只是第一步。Foundation Agent 的核心特征之一在于其自进化 (Self-Evolution) 的能力&#xff0c;即 Agent 能够通过与环境的交互和自我反思&#xff0c;不断学习、适应和提升自身能力&#xff0c;而无需持续的人工干预。自进化机制&#xff1a;优…

《Pytorch深度学习实践》ch3-反向传播

------B站《刘二大人》 1.Introduction 在神经网络中&#xff0c;可以看到权重非常多&#xff0c;计算 loss 对 w 的偏导非常困难&#xff0c;于是引入了反向传播方法&#xff1b; 2.Backward 这里模型为 y x * w&#xff0c;所以要计算的偏导数为 loss 对 w&#xff1b; …

房产销售系统 Java+Vue.js+SpringBoot,包括房源信息、房屋户型、房源类型、预约看房、房屋评价、房屋收藏模块

房产销售系统 JavaVue.jsSpringBoot&#xff0c;包括房源信息、房屋户型、房源类型、预约看房、房屋评价、房屋收藏模块 百度云盘链接&#xff1a;https://pan.baidu.com/s/1Ku27fPWwc47z2aSO_dow6w 密码&#xff1a;da1g 房产销售系统 摘 要 随着科学技术的飞速发展&#xf…