xss-lab靶場基礎詳解第1~3關

第一關

我去,還是得多學基礎啊

http://127.0.0.1/xss-labs/level1.php?name=<u>a</u>

這個看他的網站源碼,可以看到他沒有過濾,沒有被編碼

然后在name=<script>alert(1)</script>,就算過關了

第二關

這個是查看前端的源代碼,可以看出來被實體化編碼了,這個應該是前端編碼的

前端點屬性也能看到他是否實體化編碼,

經過嘗試,他直接將尖括號給實體化編碼了,好像本來就是啊,有點廢話了......

?看了答案才知道他有兩個輸出,就是說我輸入了一個,他返回了兩個,第一個是被實體化了,但是第二個沒有被實體化,但是被雙引號括起來的,就是當做文本處理了,

為什么會有兩個輸出,只需要看瀏覽器頁面就能夠發現

思路:閉合雙引號,重新寫標簽

但是有一點我非常疑惑的,到現在還是沒有搞清楚,如果今天把這個搞清楚就下播

就是說我直接閉合了雙引號,他還是沒有下劃線

<u>a</u>標簽:給a字母下劃線的意思

然后我想的是,會不會是閉合單引號,但是我只是閉合了單引號,我還在input標簽內,所以就不能執行<u>標簽

思路:閉合單引號,還要閉合標簽,最后在自己輸入<script>alert(1)</script>標簽,就好了

所以最后答案是"><script>alert(1)</script>

第三關

也是想第二關一樣的界面,我以為是和第二關一樣的,其實不然

好像將雙引號實體化編碼了,我直接愣住了

這里我頂不住了,看答案發現,審查元素看字符是否被實體化有點不規范,而且也不能具體知道是用什么單引號,或者雙引號括起來的,具體我也不知道為啥,

所以,之后建議直接審查網頁源代碼,也就是如下

例如,我輸入的是"><script>alert(1)</script>,審查源代碼的情況如下

這發現,他的閉合方式是單引號,而不是前端審查元素那個雙引號!!!!這里是將雙引號實體化編碼成&quot;,然后單引號是不會被實體化的,我是看答案知道的,

繼續閉合單引號,然后仔細的發現就是,單引號未被實體化,

<>尖括號被實體化了

意味著:標簽不能用了,因為標簽要有尖括號,但是標簽里面的事件不需要尖括號啊(尋找<input>標簽的其他事件)

繼續測試,ok啊,還是大意了,雖然onfocus沒有尖括號,但是有雙引號,雙引號也被實體化編碼了,

?' οnfοcus="alert('xss');"???????? 這個不行,因為雙引號被轉義了,五個單引號也無法正確的進行匹配? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 的,單引號應該成對進行匹配,我是這么理解的,錯了幫忙指正
' οnfοcus=alert('xss');???????? 這個也不行,我也不知道為啥,應該是單引號匹配問題

這里我看答案還有很多知識盲區,那就是

答案一

' οnfοcus='alert(xss);

' οnfοcus='alert(xss)? ? //有無分號均可,ai說的

理解(從網頁源碼理解)

關鍵源碼如下:

<input name=keyword value=' ' onlick=&quot;alert('xss');&quot;'>

我直接將答案復制到源碼里,便于理解

<input name=keyword value=' ' onlick='alert(xss)'>

去掉部分,便于觀看,這就是完整的攻擊代碼

<input? value=' ' onlick='alert(xss)'>

答案二

' οnfοcus=javascript:alert() '

一樣的我直接拼接到源代碼里面去

<input name=keyword value=' ' οnfοcus=javascript:alert() ' '>

仔細思考他的原理是什么,看了答案大概知道了

先看onfocus事件的整個處理流程

onfocus事件就是當輸入框被點擊的時候,就會觸發myFunction()函數,然后我們再配合javascript偽協議來執行javascript代碼

myfunction()函數可以替換成alert(1),這個就是執行alert(1),直接彈窗1,

也可以替換成javascript:alert(1),他的意思就是執行javascript:alert(1),也就是說用javascript來執行alert(1),也就是用js來執行alert(1)

區別:

<input name=keyword value=' ' οnfοcus=javascript:alert() ' '>

? ? ? ? ? onfocus的語法規則,點擊輸入框會執行myfunction函數,也就是執行javascript:alert(1),

? ? ? ? ? 而javascript又使用偽協議(js語言)執行alert(1),也就是用js語言處理alert(1)
<input name=keyword value=' ' οnfοcus='alert(1) '>

? ? ? ? 屬于input的語法規則,直接執行alert(1)

兩者都差不多,換個形式而已

拓展思考

思考一:

<input value=' ' οnfοcus='alert(xss)'>? ? ? ?//這是錯誤的xss語句,因為xss沒加雙引號,但是我還是? ? ? ? ? ? ? ?用這個通關了,我加了雙引號,但是按理來說,他將雙引號實體化編碼之后,應該不識別? ? ? ? ? ? ? ?雙引號才對啊,

<input? value=' ' onlick='alert(xss)'>? ? ? //正確的xss語句,xss里面不需要加雙引號,就可以執行

ok,我懂了,

字符必須要加雙引號,然后數字可以不加雙引號,和onfocus和onclick無關

onclick和onfocus區別不大

思考二:

為啥javascript:alert(1),不加單引號,而οnfοcus='alert(1)'加了單引號,?

οnfοcus='alert(1)' 中的引號解釋

? ? ? ? 可以不加引號,也就是onfocus后面的內容(屬性值)有+-號,需要加引號,以免瀏覽器不識別,

javascript:alert(1)

? ? ? ? 這里為啥不加引號,看了a我的理解是不符合html規范,ai建議加引號 javascript:"alert(1)"

????????

思考三:

單引號的區別,οnfοcus="alert('xss')"? ?

這里的單雙引號的用途都是一樣的,也就是為了區分屬性值和字符串常量的,也就是單雙引號可以互換,這樣也行οnfοcus='alert("xss")',

但是不能兩個雙引號一起寫,這樣瀏覽器會選擇就近閉合,引發錯誤,如:οnfοcus='alert('xss')'

里面的字符換成數字的話,里面的雙/單引號可以省略,如:οnfοcus='alert(1)'

其實外面的也可以省略的,也可以執行,但是少了代碼的健壯性,所以最好加上單引號而已

如:οnfοcus=alert(1),也能執行

但是里面如果是字符或者字符串,里面就必須加引號,不然程序運行不了,因為這不符合語法規則

如:<input οnfοcus=alert(xss)>,執行錯誤

參考文章:

xss-labs靶場實戰全通關詳細過程(xss靶場詳解)-CSDN博客

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

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

相關文章

【MySQL】聚合查詢 和 分組查詢

個人主頁&#xff1a;?喜歡做夢 歡迎 &#x1f44d;點贊 ?關注 ??收藏 &#x1f4ac;評論 目錄 &#x1f334; 一、聚合查詢 &#x1f332;1.概念 &#x1f332;2.聚合查詢函數 COUNT&#xff08;&#xff09; SUM&#xff08;&#xff09; AVG&#xff08;&…

計算機啟動流程中,都干了啥事。比如文件掛在,操作系統加載,中斷向量表加載,磁盤初始化在哪階段。

建議在電腦上看&#xff0c;手機上格式有點問題&#xff0c;認真讀&#xff0c;這方面沒問題的&#xff0c;肝了一天。 目錄.計算機啟動詳解 一.計算機啟動直觀圖二.步驟詳解前置準備磁盤初始化1.開機階段2.執行BIOS階段3.執行引導記錄&#xff08;MBR&#xff09;階段4.操作系…

后端開發技術之Log日志框架

第一章 日志原理 1.1 log發展歷史 從JDK1.4開始提供java.until.logging&#xff0c;后來大佬發現JUL太難用了&#xff0c;就自己手擼了個log4j&#xff0c;后來log4j發現安全漏洞&#xff0c;加上代碼結構問題難以維護&#xff0c;于是從1.2就停止更新log4j&#xff0c;并又重…

美麗天天秒鏈動2+1源碼(新零售商城搭建)

什么是鏈動21模式&#xff1f; 鏈動21主要是建立團隊模式&#xff0c;同時快速提升銷量。是目前成員中速度最快的裂變模式。鏈動21模式合理合規&#xff0c;同時激勵用戶 公司的利潤分享機制&#xff0c;讓您在享受購物折扣的同時&#xff0c;也能促進并獲得客觀收益。 鏈動21模…

Python10天沖刺-設計模型之策略模式

策略模式是一種行為設計模式&#xff0c;它允許你在運行時動態地改變對象的行為。這種模式的核心思想是將一組相關的算法封裝在一起&#xff0c;并讓它們相互替換。 下面是使用 Python 實現策略模式的一個示例&#xff1a; 示例代碼 假設我們有一個簡單的購物車系統&#xf…

【CTFer成長之路】XSS的魔力

XSS闖關 level1 訪問url&#xff1a; http://c884a553-d874-4514-9c32-c19c7d7b6e1c.node3.buuoj.cn/level1?usernamexss 因為是xss&#xff0c;所以對傳參進行測試&#xff0c;修改?username1&#xff0c;進行訪問 會發現username參數傳入什么&#xff0c;welcome之后就…

自主機器人模擬系統

一、系統概述 本代碼實現了一個基于Pygame的2D自主機器人模擬系統&#xff0c;具備以下核心功能&#xff1a; 雙模式控制&#xff1a;支持手動控制&#xff08;WASD鍵&#xff09;和自動導航模式&#xff08;鼠標左鍵設定目標&#xff09; 智能路徑規劃&#xff1a;采用改進型…

快速上手非關系型數據庫-MongoDB

簡介 MongoDB 是一個基于文檔的 NoSQL 數據庫&#xff0c;由 MongoDB Inc. 開發。 NoSQL&#xff0c;指的是非關系型的數據庫。NoSQL有時也稱作Not Only SQL的縮寫&#xff0c;是對不同于傳統的關系型數據庫的數據庫管理系統的統稱。 MongoDB 的設計理念是為了應對大數據量、…

性能優化實踐:啟動優化方案

性能優化實踐&#xff1a;啟動優化方案 在Flutter應用開發中&#xff0c;啟動性能是用戶體驗的第一印象&#xff0c;也是應用性能優化的重要環節。本文將從理論到實踐&#xff0c;深入探討Flutter應用的啟動優化方案。 一、Flutter應用啟動流程分析 1. 啟動類型 冷啟動&…

在文本廢墟中打撈月光

在文本廢墟中打撈月光 ----再讀三三的《山頂上是海》之“暗室”所理 今天是2025年5月1日&#xff0c;傳統的“五一”小長假。當我早飯后“坐”在衛生間的那幾分鐘里&#xff0c;閨女和兒子就騎著家中僅有的兩輛電動車去了圖書館。我是該做些什么&#xff1f; 于是我左手拿著三…

C++之類和對象基礎

?向對象三?特性&#xff1a;封裝、繼承、多態 類和對象 一.類的定義1. 類的定義格式2.類域 二.實例化1.對象2.對象的大小 三.this指針 在 C 的世界里&#xff0c;類和對象構成了面向對象編程&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;的核心框架&…

計算機網絡——HTTP/IP 協議通俗入門詳解

HTTP/IP 協議通俗入門詳解 一、什么是 HTTP 協議&#xff1f;1. 基本定義2. HTTP 是怎么工作的&#xff1f; 二、HTTP 協議的特點三、HTTPS 是什么&#xff1f;它和 HTTP 有啥區別&#xff1f;1. HTTPS 概述2. HTTP vs HTTPS 四、HTTP 的通信過程步驟詳解&#xff1a; 五、常見…

使用 Java 實現一個簡單且高效的任務調度框架

目錄 一、任務調度系統概述 &#xff08;一&#xff09;任務調度的目標 &#xff08;二&#xff09;任務調度框架的關鍵組成 二、任務狀態設計 &#xff08;一&#xff09;任務狀態流轉設計 &#xff08;二&#xff09;任務表設計&#xff08;SQL&#xff09; 三、單機任…

基于GPT 模板開發智能寫作輔助應用

目錄 項目說明 1. 項目背景 2. 項目目標 3. 功能需求 4. 技術選型 項目結構 詳細代碼實現 前端代碼(client) client/src/main.js client/src/App.vue client/src/components/HistoryList.vue 后端代碼(server) server/app.js server/routes/api.js server/mo…

linux 使用nginx部署next.js項目,并使用pm2守護進程

前言 本文基于&#xff1a;操作系統 CentOS Stream 8 使用工具&#xff1a;Xshell8、Xftp8 服務器基礎環境&#xff1a; node - 請查看 linux安裝node并全局可用pm2 - 請查看 linux安裝pm2并全局可用nginx - 請查看 linux 使用nginx部署vue、react項目 所需服務器基礎環境&…

使用huggingface_hub需要注意的事項

在安裝huggingface_hub的時候要注意如果你的python是放在c盤下時記得用管理員模式命令行來安裝huggingface_hub&#xff0c;否則安裝過程會報錯&#xff0c;之后也不會有huggingface-cli命令。 如果安裝時因為沒有用管理員權限安裝而報錯了&#xff0c;可以先卸載huggingface-…

Spring MVC @RequestHeader 注解怎么用?

我們來詳細解釋一下 Spring MVC 中的 RequestHeader 注解。 RequestHeader 注解的作用 RequestHeader 注解用于將 HTTP 請求中的**請求頭&#xff08;Request Headers&#xff09;**的值綁定到 Controller 方法的參數上。 請求頭是 HTTP 請求的一部分&#xff0c;包含了關于…

Rust 學習筆記:關于結構體的例題

Rust 學習筆記&#xff1a;關于結構體的例題 Rust 學習筆記&#xff1a;關于結構體的例題下面的程序能通過編譯嗎&#xff1f;下面的程序能通過編譯嗎&#xff1f;下面的程序能通過編譯嗎&#xff1f;哪種說法最能描述 Display 和 Debug 特質之間的區別&#xff1f;下面哪個選項…

STM32 SPI通信協議

1. SPI協議概述 1.1 什么是SPI&#xff1f; SPI&#xff08;Serial Peripheral Interface&#xff09;是由摩托羅拉公司于1980年代提出的同步串行通信協議&#xff0c;主要用于短距離高速芯片間通信。作為四線制全雙工通信協議&#xff0c;它以簡單的硬件實現和高效的傳輸速率…

92.一個簡單的輸入與顯示示例 Maui例子 C#例子

一、關于項目命名的注意事項 在開發.NET MAUI項目時&#xff0c;項目命名是一個不可忽視的細節。如果你習慣了在C#控制臺或WPF項目中使用中文項目名稱&#xff0c;那么在.NET MAUI中&#xff0c;你可能會遇到一些問題。我之前就因為使用中文項目名稱而導致項目無法直接運行&am…