滲透實戰PortSwigger Labs AngularJS DOM XSS利用詳解

本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.pswp.cn/bicheng/85717.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/85717.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/85717.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Ubuntu 多網卡安全路由配置(SSH 不斷線版)

Ubuntu 多網卡路由配置筆記&#xff08;內網 外網同時通&#xff09;&#xff08;SSH斷線版&#xff09;文章瀏覽閱讀386次&#xff0c;點贊4次&#xff0c;收藏5次。本文介紹了Ubuntu 如何配置雙網卡設備的路由規則&#xff0c;使默認流量走外網&#xff08;192.168.2.0/24&a…

基于昇騰NPU部署llamafactory單機多卡微調Qwen3教程

1. 進入華為云 華為云首頁 點擊右上角控制臺 2.進入ModelArts 點擊搜索框->搜索“ModelArts”->選擇AI開發平臺ModelArts->進入平臺后點擊開發者空間 3.創建Notebook 3.1在開發者空間中點擊Notebook->在西南貴陽一下點擊創建Notebook 3.2進入創建Notebook頁…

關于XES文件格式諸多問題

1. 格式類型是什么&#xff1f; case:concept:name (案例ID) - 必須是字符串類型concept:name (活動名稱) - 字符串類型time:timestamp - 必須是datetime類型 2. 如何修改&#xff1f; data[case:concept:name] data[case:concept:name].astype(str)data[concept:name] data…

數據融合平臺有哪些?在數據治理中發揮什么作用?

目錄 一、常見的數據融合平臺 &#xff08;一&#xff09;傳統數據融合平臺 &#xff08;二&#xff09;實時數據融合平臺 &#xff08;三&#xff09;云數據融合平臺 二、數據融合平臺在數據治理中的作用 &#xff08;一&#xff09;提升數據質量 &#xff08;二&#…

??Linux:XFS 文件系統擴容完整指南

???問題背景?? 在擴展 Linux 根目錄 / 時,我遇到了一個錯誤: sudo resize2fs /dev/uos/root resize2fs: 超級塊中的幻數有錯 嘗試打開 /dev/uos/root 時找不到有效的文件系統超級塊。 經過排查,發現根本原因是 ??文件系統類型是 XFS??,而 resize2fs 僅適用于 e…

網絡安全之CTF專題賽RE題解

easyre hap文件改成zip格式然后解壓去反編譯abc文件即可拿到源碼 這里推薦一個網站.abcD 蠻好用的 下載反編譯結果&#xff0c;解壓后用vscode打開分析。 這里可以看到一些目錄結構&#xff0c;我們先看看flag目錄 x_2_2.count位1000000的時候就會輸出flag那么大概率是一個點…

a padding to disable MSIE and Chrome friendly error page

問題 a padding to disable MSIE and Chrome friendly error page 解決 nginx 代理地址 配錯了

71、C# Parallel.ForEach 詳解

Parallel.ForEach 是 .NET Framework 4.0 引入的并行編程功能的一部分&#xff0c;位于 System.Threading.Tasks 命名空間中。它允許你對集合中的元素進行并行處理&#xff0c;可以顯著提高處理大量數據時的性能。 基本用法 using System; using System.Collections.Generic;…

生產者-消費者模式在不同操作系統上的行為差異

在多線程編程中&#xff0c;生產者-消費者模式是一種常見的設計模式&#xff0c;用于解決線程間的數據同步問題。最近&#xff0c;我在 Linux 和 macOS 上運行同一個生產者-消費者模式的程序時&#xff0c;發現它們表現出不同的行為。本文將介紹這個現象、分析其原因&#xff0…

【JS-4.1-DOM獲取元素操作】深入理解DOM操作:高效獲取頁面元素的方法與實踐

在現代Web開發中&#xff0c;DOM&#xff08;文檔對象模型&#xff09;操作是前端工程師的必備技能。而DOM操作的第一步&#xff0c;往往是從頁面中獲取我們需要操作的元素。本文將全面介紹各種獲取頁面元素的方法&#xff0c;分析它們的性能特點&#xff0c;并提供最佳實踐建議…

UE5錯誤 Linux離線狀態下錯誤 請求失敗libcurl錯誤:6無法解析主機名

UE5錯誤 Linux離線狀態下錯誤 請求失敗libcurl錯誤&#xff1a;6無法解析主機名 完整描述問題解析解決方法 完整描述 loghttp&#xff1a;warning&#xff1a;ox015cba21400:request failed libcurl error :6 (couldn’t resolve host name ) 問題解析 這是因為在離線狀態下…

深度學習實戰111-基于神經網絡的A股、美股、黃金對沖投資策略(PyTorch LSTM)

文章目錄 一、A股與美股對沖互補投資方案1. 現象與邏輯2. 對沖互補投資思路3. 資金分配樣例4. 最大化收益的關鍵二、對沖互補投資思路1. 資金分配原則2. 動態調整機制3. 對沖操作三、投資方案樣例1. 初始資金分配(假設總資金10萬元)2. 動態調整舉例情景一:美股進入牛市,A股…

在線教育平臺敏捷開發項目

項目背景 產品名稱&#xff1a;LearnFlow&#xff08;在線學習平臺&#xff09; 核心目標&#xff1a;6個月內上線MVP&#xff08;最小可行產品&#xff09;&#xff0c;支持課程學習、進度跟蹤、測驗功能。 團隊構成&#xff1a; 產品負責人&#xff08;PO&#xff09;1人 S…

C++面試題(35)-------找出第 n 個丑數(Ugly Number)

操作系統&#xff1a;ubuntu22.04 IDE:Visual Studio Code 編程語言&#xff1a;C11 題目描述 我們把只包含質因子 2、3 和 5 的數稱作丑數&#xff08;Ugly Number&#xff09;。例如 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 個丑數。 請編寫一個函數&#xff0c;找出第 n …

Day03_數據結構(手寫)

01.數據結構畫圖 02. //11.按值查找返回位置 int search_value(node_p H,int value) { if(HNULL){ printf("入參為空.\n"); return -1; …

【Java學習筆記】Collections工具類

Collections 工具類 基本介紹 &#xff08;1&#xff09;Collections 中提供了一系列靜態方法對集合元素進行排序&#xff0c;查詢和修改等操作 &#xff08;2&#xff09;操作對象&#xff1a;集合 常用方法一覽表 方法描述reverse(List<?> list)反轉 List 中元素…

spring-webmvc @ResponseBody 典型用法

典型用法 基本用法&#xff1a;返回 JSON 數據 GetMapping("/users/{id}") ResponseBody public User getUser(PathVariable Long id) {return userService.findById(id); }Spring 自動使用 Jackson&#xff08;或其他 HttpMessageConverter&#xff09;將 User 對…

AI-調查研究-08-跑步分析研究 潛在傷害與預防 不同年齡段與性別的情況

點一下關注吧&#xff01;&#xff01;&#xff01;非常感謝&#xff01;&#xff01;持續更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持續更新中&#xff01;&#xff08;長期更新&#xff09; 目前2025年06月16日更新到&#xff1a; AI煉丹日志-29 - 字節…

AI任務相關解決方案9-深度學習在工業質檢中的應用:基于DeepLabv3+模型的NEU-seg數據集語義分割研究

大家好我是微學AI,今天給大家介紹一下AI任務相關解決方案9-深度學習在工業質檢中的應用:基于DeepLabv3+模型的NEU-seg數據集語義分割研究。DeepLabv3+模型在NEU-seg數據集上實現了高達87.65%的平均交并比(mIoU),為金屬表面缺陷的高精度檢測提供了有力工具。本文將詳細探討Dee…

mysql JSON_EXTRACT JSON_UNQUOTE 函數

在處理mysql 有存儲的json字段&#xff0c;需要提取時候發現JSON_EXTRACT函數&#xff0c;發現此函數提取后會帶有引號&#xff0c;組合使用JSON_UNQUOTE 可去掉引號&#xff01; JSON_EXTRACT 函數概述 JSON_EXTRACT是MySQL中用于從JSON文檔中提取數據的函數&#xff0c;語法…