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

Linux权限提升—定时任务、环境变量、权限配置不当、数据库等提权

Linux权限提升—定时任务、环境变量、权限配置不当、数据库等提权

  • 1. 前言
    • 1.1. 如何找编译好的EXP
  • 2. 定时任务提权
    • 2.1. 查看定时任务
    • 2.2. 通配符注入提权
      • 2.2.1. 创建执行脚本
      • 2.2.2. 创建定时任务
      • 2.2.3. 查看效果
      • 2.2.4. 提权操作
        • 2.2.4.1. 切换普通用户
        • 2.2.4.2. 执行命令
        • 2.2.4.3. 查看效果
        • 2.2.4.4. 提权执行
      • 2.2.5. 总结
        • 2.2.5.1. 执行成功的
        • 2.2.5.2. 执行未成功的
    • 2.3. 权限配置不当提权
      • 2.3.1. 查看定时任务
      • 2.3.2. 查看脚本
      • 2.3.3. 编辑脚本
      • 2.3.4. 查看执行效果
      • 2.3.5. 提权执行
      • 2.3.6. 疑问
  • 3. 环境变量提权
    • 3.1. 环境搭建
      • 3.1.1. 编辑C语言脚本
      • 3.1.2. 编译C语言脚本
      • 3.1.3. 添加SUID权限
    • 3.2. 提权操作
      • 3.2.1. 查找SUID权限文件
      • 3.2.2. 尝试执行脚本
      • 3.2.3. 查看源码
      • 3.2.4. 分析环境变量
      • 3.2.5. 查看环境变量
      • 3.2.6. 复制bash
      • 3.2.7. 劫持环境变量
      • 3.2.8. 执行脚本
    • 3.3. 总结
  • 4. MySQL数据库提权
    • 4.1. 自动化提权
      • 4.1.1. 打开工具
      • 4.1.2. 连接目标数据库
      • 4.1.3. 进入目标数据库
      • 4.1.4. 查看secure-file-priv状态
    • 4.2. 总结

1. 前言

  在上篇文章中提到了Linux权限提升之前的信息收集操作,这里就不在赘述,在前言中讲上篇文章为提到的内容进行补充,至于其它内容可参考上篇文章。

  Linux权限提升—内核、SUID、脏牛等提权

1.1. 如何找编译好的EXP

  这里提一下,之前在设计找EXP都是使用自动化进行编译,但是就会出现需要安装C语言环境,而如果目标靶机中没有C语言环境,如果你私自在别人的操作系统中去安装C语言环境,可能会导致服务器部分环境或服务产生问题,那么就需要在本地进行编译,在编译后好再上传。不过也较为麻烦,这里给几个github上编译好的环境。

  kernel-exploits

  Unix-Privilege-Escalation-Exploits-Pack

  linux-kernel-exploits

2. 定时任务提权

  定时任务通常被设置用于备份文件、清理目录内容等。crontab命令可以创建一个cron文件,以指定的时间区间运行。

2.1. 查看定时任务

  可以通过下列的命令去指定一个定时任务,这里关于Linux定时任务相关的内容,请百度自行了解。

cat /etc/crontab

在这里插入图片描述

2.2. 通配符注入提权

  先按照操作流程去操作一边,不懂的会在通配符总结中详细讲解到,最好先跟着操作一边,有印象再去看总结,就能看懂了。

  通配符注入也就是Linux中用于匹配文件名的服务(*、?等),当存在这些符号的时候就可以用来提权,但是需要涉及到与类似解压缩类型的命令。

  通配符通常是在查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符。

2.2.1. 创建执行脚本

  这里创建一个bf.sh的执行脚本,并在里面写入一个备份执行命令。关于这条命令,为什么要这么设置,我想了很久,这里先设置,操作完看到效果后,我会对这个命令进行分析。

  这里就是先到tmp目录下的123目录中,去打包里面的文件,并存放到tmp下。

cd /tmp/123;tar -zcf /tmp/bf.tar.gz *

在这里插入图片描述

2.2.2. 创建定时任务

  这里创建一个压缩备份的定时任务,这个定时任务在大部分服务器中存在还是比较多的,由于服务器中的数据较为重要,所以多数都会使用到一个压缩备份的定时任务,同时如果在一个文件夹中需要备份的文件较多,管理者不可能一个一个压缩,那么就会使用到通配符来辅助压缩。

  这里我设置的是:执行tmp下面的bf.sh。

vi /etc/crontab   ##编辑定时任务
* * * * * root /tmp/bf.sh  ##创建定时任务
cat /etc/crontab   ##查看定时任务

在这里插入图片描述

2.2.3. 查看效果

  可以看到,这里成功压缩了文件,注意这个条件的确实是我备份的,我测试完又删除的,所以导致前后时间不对应。

在这里插入图片描述

2.2.4. 提权操作

  关于这个提权,web权限账户基本上不太可能能进行提权,同时普通用户若管理员设置备份的文件夹未给写入权,那么也GG,但是多数应该不太会出现这个情况,不过也不保证会排查。

2.2.4.1. 切换普通用户

  这里切换到普通用户,然后查看到存在root创建的定时任务,那么就可以利用这个定时任务进行提权,同时我们需要查看刚刚创建的执行脚本,对里面的内容进行分析,然后再去执行提权。

在这里插入图片描述

2.2.4.2. 执行命令

  由于备份的时候是备份123目录下的文件,那么我们执行的命令就需要再123命令下进行操作。

  定时任务打包时使用了将整个文件夹下的文件打包,而当系统真正执行打包操作时,会将目录下的所有文件名一个一个传参给执行打包操作。前几个文件都没问题,但是当打包到–checkpoint=1文件和–checkpoint-action=exec=sh test.sh文件时,执行的相当于执行:

tar czf /tmp/backup.tar.gz --checkpoint=1 --checkpoint-action=exec=sh test.sh

  而 --checkpoint、–checkpoint-action正好是tar命令的参数,打包到这里就会导致tar命令直接把–checkpoint=1和–checkpoint-action=exec=sh test.sh两个文件名当做参数执行,而不打包文件。–checkpoint-action=exec=sh test.sh参数的意思是执行同目录下test.sh文件,test.sh文件内容又是把 bin/bash拷贝给/tmp/bash并给/tmp/bash赋SUID权限。此时我们再执行/tmp/bash就享有了suid权限,所以这里是一环套一环的。

echo "" > --checkpoint=1   
echo "" > "--checkpoint-action=exec=sh test.sh"   ##执行test.sh文件
echo 'cp /bin/bash /tmp/bash;chmod +s /tmp/bash' > test.sh  ##将/bin/bash复制到/tmp下,并提权SUID权限,同时将命令写入到test.sh脚本中
chmod +x test.sh  ##赋予执行权限

在这里插入图片描述

2.2.4.3. 查看效果

  可以看到这里成功的将bin目录下的bash复制到tmp下。

在这里插入图片描述

2.2.4.4. 提权执行

  这里可以参考之前提到的一个提权参考文章,在里面可以看到bash的提权操作,这里我们已经将bash复制过来了,同时又赋予了SUID权限,那么就是root权限了,通过参考文章中给予的操作方式,这里只需要下列命令即可。

  那么完整的提权就结束了。

  suid-executables

./bash -p

在这里插入图片描述

2.2.5. 总结

  这里将一下在这个提权中需要注意的事项,总体来说有种莫名的鸡肋感觉。

  • 如果备份的文件夹你没有写入权限就GG。
  • 如果备份的命令是绝对路径也GG。
  • 如果管理员设置了其它权限也GG。
  • 如果是WEB权限也GG。

  可能有些文章中是在定时任务中直接写入压缩命令,来完成压缩的,下面我们就来具体分析一下这两条命令。

cd /tmp/123;tar -zcf /tmp/bf.tar.gz *  ##执行成功的
tar -zcf /tmp/bf.tar.gz /tmp/123/*   ##执行未成功的

  通过上面两条命令来看,其实都是成功对文件进行压缩,但是有上面不同呢?最好的办法就是把这两条命令的内容解压出来看看。

  这里我由于使用香港服务器有点卡,我就切到华为云服务器上操作了。

2.2.5.1. 执行成功的

  通过整个验证流程来看,执行成功的命令是先到123目录中,通过匹配符去打包123目录中的所有文件,这样就符合了我们提权执行的流程。

在这里插入图片描述

2.2.5.2. 执行未成功的

  这条命令也是网上很多人文章中使用的,但是从来没有下一步成功的截图或者内容,很多都直接提过了,都跳过了,你写个毛教程,这条命令我通过解压验证,他打包的内容是tmp整个目录,并不是123中的文件,整就导致了,提取目录无法执行的原因。

  从验证流程上是错误的,所以我也不知道网上他们的文章是如何成功的,或者是我的理解有错误,有大佬知道的请反馈给我,解答我心中的疑惑。

在这里插入图片描述

2.3. 权限配置不当提权

  关于权限配置不当提权其实很好理解,比如管理员在设置一个定时任务的时候,通常都需要给定时任务的脚本添加一个执行权限,正常情况下都是"chmod +x test.sh",而有些管理员偷懒直接添加一个777权限,就会导致权限配置不当提权。

  这里首选我们需要获取一个本地用户,WEB权限的用户不是不行,但是多数web权限都会被限制,不过也可以去尝试看看,能否进行操作。

2.3.1. 查看定时任务

  可以看到管理员在定时任务中添加一个sh脚本任务,这里就可以看看这个脚本中写的是什么。

在这里插入图片描述

2.3.2. 查看脚本

  通过查看脚本,发现是将时间写入time.log中,结合定时任务就是每分钟追加时间进入time.log中。并且查看权限的时候发现,是777权限,那么这里我们就可以考虑把这个文件覆盖或者在后面添加命令完成我们的提权操作。

在这里插入图片描述

2.3.3. 编辑脚本

  一定要有修改权限哦,如果没有修改权限那就GG了,是无法提权的。

  在现实环境中最好是追加命令,不要去随意修改别人的脚本,确保原先的脚本也能执行,同时也能执行我们想要的执行权限,那么就可以直接在脚本中追加我们的命令。

cp /bin/bash /tmp/bash; chmod +s /tmp/bash  ##这里还是将bin下的bash复制到tmp下,同时加上SUID权限。

在这里插入图片描述

2.3.4. 查看执行效果

  可以看到成功获取到bash。

在这里插入图片描述

2.3.5. 提权执行

  这里同样可以参考之前给的提权文章中使用命令进行提权,可以看到是root权限了。

bash -p

在这里插入图片描述

2.3.6. 疑问

  可能有的人说,test.sh都是777权限了,能不能直接进行执行,这里测试是不行的,我们是没有权限的,由于time.log是由root的定时任务产生的,所以我们无法进行执行。

  但是如果你把里面所有的内容都删除了,是可以进行执行的,或者你复制一份把里面的内容都删除了,然后进行执行也是可以的,但这些都基于权限配置出错的前提下。

在这里插入图片描述

3. 环境变量提权

  PATH是Linux 和 Unix 操作系统中的环境变量,它指定存储可执行程序的所有bin和sbin目录。当用户在终端上执行任何命令时,它会通过PATH变量来响应用户执行的命令,并向shell发送请求以搜索可执行文件。超级用户通常还具有/sbin和/usr/sbin条目,以便于系统管理命令的执行。

  比如我想执行一个ls命令,其实我们执行的是/bin/ls这个可执行文件,而系统就是靠环境变量中我们设置的路径/bin中找到的ls并执行。而执行的优先级是从前向后查询的,例如下图,若在/usr/local/sbin中到到ls则会执行/usr/local/sbin中的ls,而不会再向下寻找。

在这里插入图片描述

3.1. 环境搭建

  这里我们先搭建一个模拟环境,模拟环境只是为了好演示以及知道原理,并不是在实际情况中一定会遇到。

3.1.1. 编辑C语言脚本

  这个脚本意思很简单执行ps命令,而在实际环境中可能会其它的命令,基本上都是一致的替换即可。

#include<unistd.h>
void main()
{setuid(0);setgid(0);system("ps");
}

在这里插入图片描述

3.1.2. 编译C语言脚本

  这里编译C语言脚本需要使用到gcc命令,若没有,可以自行安装,在我另外一篇文章中的5.2.2.1注意段中有写到关于这个C语言环境的情况。

  Linux权限提升—内核、SUID、脏牛等提权

  看到出现一个可执行的shell文件就证明编译成功了。

gcc shell.c -o shell   ##shell.c是脚本文件名,后面的shell是编译后的名称

在这里插入图片描述

3.1.3. 添加SUID权限

  这里添加SUID权限是由于在部分脚本中可能会出现一些命令必须使用root权限来执行,但是有些管理比较严格的公司,不允许随便使用root来管理服务器就会导致普通用户创建的文件可能会出现部分命令无法执行,那么就会使用root用户添加一个SUID权限来让其脚本在执行的时候默认使用root来执行,就能够解决这个问题。

chmod +s shell  ##添加SUID权限

在这里插入图片描述

3.2. 提权操作

  这里的提权操作,整体的思路就是提权脚本中执行命令的环境变量,也就相当于对其进行环境变量的劫持。

3.2.1. 查找SUID权限文件

  这里我们可以看到我们找到一个shell文件,文件路径是在tmp下。

find / -perm -u=s -type f 2>/dev/null

在这里插入图片描述

3.2.2. 尝试执行脚本

  这里尝试执行shell后发现是执行ps命令,那么我们可以找找看看是否存在相关的源码,或者为了避免脚本影响一些服务,可以先对其进行反编译查看脚本里面是什么内容。

在这里插入图片描述

3.2.3. 查看源码

  这里可以对文件进行反编译,或者查看是否存在关于shell脚本的源码,这里也是成功的找到shell脚本的源码,通过查看是执行ps命令。

在这里插入图片描述

3.2.4. 分析环境变量

  默认情况下执行ps是执行/bin/ps,同时这里设定的ps并未写绝对路径来执行,而是直接ps,那么就可以思考,默认情况下环境变量是一个一个查看,若找到了,就不会再向下查找,那么就可以对环境变量进行劫持。

在这里插入图片描述

3.2.5. 查看环境变量

  首先这里我们先查看一下现有的环境变量,通过现有的环境变量能够看到,默认再执行shell的时候会从前向后去一个一个查找,找到了就去执行。

echo $PATH

在这里插入图片描述

3.2.6. 复制bash

  正如之前提到的从前向后查找,那么我们可以把我们的环境变量设置在第一个,同时修改文件名为ps,那么就实现了环境变量劫持,同时也实现了我们提权的操作,那么想要提权就需要使用到bash。

  我们就可以将/bin/bash复制到脚本所在的目录下,当然不是强制复制到脚本所在的目录,只需要你将复制后的bash所在的目录添加在环境变量第一位即可。

  同时修改/bin/bash为/tmp/ps,这里的tmp是脚本所在的目录,还是那句话,不一定强制要求在这个脚本目录下。而为什么要修改bash为ps呢?

  这是由于ps去可执行的时候,相当于就是调用/bin/ps文件,那么修改为ps后就能实现文件名对应,就能进行执行。

cp /bin/bash /tmp/ps

在这里插入图片描述

3.2.7. 劫持环境变量

  通过之前的分析逻辑,我们需要添加环境变量,并且将环境变量添加到第一位。

export PATH=路径:$PATH  ##从头添加
export PATH=$PATH:路径  ##从尾添加

  那么这里我们就需要使用到从头添加的命令,将tmp添加进去,如果你复制的bash修改后的ps不再tmp下,可以根据你设定的目录进行添加,一定要是绝对路径哦。

  添加完查看一下添加的路径是否成功。

export PATH=/tmp:$PATH 
echo $PATH

在这里插入图片描述

3.2.8. 执行脚本

  这里执行完仔细看我截的图,是不是自动跳转到了root权限,这样的话就是成功提权了。

./shell

在这里插入图片描述

3.3. 总结

  整体的原因就是由于开始管理员给予shell就是SUID权限,同时shell是一个执行脚本,通过对其反编译或者寻找源码,来判断脚本里面所调用的命令是什么。

  然后根据这个命令将bash修改成对应的命令名称,同时添加环境变量,根据环境变量的特性,让其优先寻找到我们将bash修改后的命令名称,让其执行的ps命令成为执行bash。

  而shell恰巧是SUID权限也就是root权限执行,那么root权限去执行bash就能够进行提权。

  当然拉~这个提权有点鸡肋就是本地用户才可以,如果是web权限用户基本上是不能执行的。

4. MySQL数据库提权

  其实这里的MySQL数据库提权本来是不想写的,由于在Linux中部署网站本来就会受到各种权限限制。同时Linux中的MySQL数据库提权和Windows的步骤基本上一致。

  并且由于目前的高于5.5的数据库存在secure-file-priv的限制,很多情况下都实现不了,除非你胆大去改别人的数据库同时重启。这里就使用说一下工具自动化提权吧,手动的百度搜索吧,我也想写了,确实由于Linux下的这个secure-file-priv的限制,我以及研究了一下午,翻遍了网上很多文章,基本上清一色的Windows操作,Windows我也能,但是Linux怎么修改都还是nall我已经放弃了。

  MySQL数据库提权,同样需要使用到外联,如果不能外联,那么只有老老实实手工提权了。关于外联提权操作,这里可以参考我之前写的一篇文章,在这个文章中详细写到了如何开启外联。Windows权限提升—MySQL数据库提权

4.1. 自动化提权

  关于这个自动化提权,其实Windows和Linux均能使用这个工具,只是在之前Windows提权中未提到,这里进行操作一下。

  工具下载地址:MDUT

4.1.1. 打开工具

  这里将工具下载下来后,需要在cmd中使用java打开。

java -jar 工具名称

在这里插入图片描述

4.1.2. 连接目标数据库

  这里我们打开工具后,将相关的信息输入进去后就可以进行提权了,不过需要注意数据库要支持外联哦。

  右击》添加》选择数据库类型》输入地址》输入账户密码》确认端口是否正确》保存

在这里插入图片描述

4.1.3. 进入目标数据库

  这里是成功进入了,但是却无法提权,提示出了一个错误,这个错误是由于secure-file-priv的问题,这个问题我在Windows权限提升—MySQL数据库提权中也说到过,这个值如果为NULL直接就是GG,提权不了。

  不过也不是不能修改,而是修改了需要重启数据库,同时如你所看到的,就是这个问题困扰了我一个下午了,解决不了。

在这里插入图片描述

4.1.4. 查看secure-file-priv状态

  可以看到明显是NULL,如果在Windows上修改好像挺简单的修改,重启,但是在Linux上我修改后重启了无数遍依旧不行,同时部分文章中也提到这个问题,同样也是没解决,注意如果修改成功后果自负哦!!!

show global variables like '%secure%';

在这里插入图片描述

4.2. 总结

  关于这里,算上烂尾了吧,但是实在是有心无力,可能有人说,为什么不使用低版本的数据库来演示呢,都2023年了,但凡负责任的管理员也会升级数据库了,比如我所在的公司,早就被强制升级了。

  至于低版本的演示,百度一大堆,而且在我写过的Windows权限提升—MySQL数据库提权中的操作是一样的操作,我也就不想再去写一边了。

  只是这里主要提及了一下这个工具,之前Windows没提过,如果提过了,我直接这章动不会写,同时我也参考了很多关于Linux权限提升的文章,都没涉及数据库提权,反倒Windows权限提升中很多都涉及到了数据库提权,可能在Linux中数据库提权比较麻烦吧,或者遇到的问题和我一样,一致无法让secure-file-priv的状态成为null导致无法演示。

  如果后面研究出来了,再重新补一篇文章!!

相关文章:

Linux权限提升—定时任务、环境变量、权限配置不当、数据库等提权

Linux权限提升—定时任务、环境变量、权限配置不当、数据库等提权1. 前言1.1. 如何找编译好的EXP2. 定时任务提权2.1. 查看定时任务2.2. 通配符注入提权2.2.1. 创建执行脚本2.2.2. 创建定时任务2.2.3. 查看效果2.2.4. 提权操作2.2.4.1. 切换普通用户2.2.4.2. 执行命令2.2.4.3. …...

Python爬虫——使用requests和beautifulsoup4库来爬取指定网页的信息

以下是一个简单的Python代码&#xff0c;使用requests和beautifulsoup4库来爬取指定网页的信息&#xff1a; import requests from bs4 import BeautifulSoupurl "https://example.com"# 发送GET请求&#xff0c;获取网页内容 response requests.get(url)# 将网页内…...

基于Java3D的网络三维技术的设计与实现

3D图形技术并不是一个新话题&#xff0c;在图形工作站以至于PC机上早已日臻成熟&#xff0c;并已应用到各个领域。然而互联网的出现&#xff0c;却使3D图形技术发生了和正在发生着微妙而深刻的变化。Web3D协会&#xff08;前身是VRML协会&#xff09;最先使用Web3D术语&#xf…...

python机器学习数据建模与分析——数据预测与预测建模

文章目录前言一、预测建模1.1 预测建模涉及的方面&#xff1a;1.2 预测建模的几何理解1.3 预测模型参数估计的基本策略1.4 有监督学习算法与损失函数&#xff1a;1.5 参数解空间和搜索策略1.6 预测模型的评价1.6.1 模型误差的评价指标1.6.2 模型的图形化评价工具1.6.3 训练误差…...

Flink系列-6、Flink DataSet的Transformation

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 大数据系列文章目录 官方网址&#xff1a;https://flink.apache.org/ 学习资料&#xff1a;https://flink-learning.org.cn/ 目录Flink 算子Ma…...

Java-类的知识进阶

Java类的知识进阶 类的继承&#xff08;扩张类&#xff09; Java类的继承是指一个类可以继承另一个类的属性和方法&#xff0c;从而使得子类可以重用父类的代码。继承是面向对象编程中的重要概念&#xff0c;它可以帮助我们避免重复编写代码&#xff0c;提高代码的复用性和可…...

C# | 上位机开发新手指南(六)摘要算法

C# | 上位机开发新手指南&#xff08;六&#xff09;摘要算法 文章目录C# | 上位机开发新手指南&#xff08;六&#xff09;摘要算法前言常见摘要算法源码MD5算法SHA-1算法SHA-256算法SHA-512算法BLAKE2算法RIPEMD算法Whirlpool算法前言 你知道摘要算法么&#xff1f;它在保障…...

测试工程师:“ 这锅我不背 ” ,面对灵魂三问,如何回怼?

前言 在一个周末的早餐我被同事小周叫出去跑步&#xff0c;本想睡个懒觉&#xff0c;但是看他情绪不太稳定的样子&#xff0c;无奈艰难爬起陪他去跑步。 只见她气冲冲的对着河边大喊&#xff1a;真是冤枉啊&#xff01;!&#xff01; 原来是在工作中被莫名其妙背锅&#xff0…...

【Java闭关修炼】SpringBoot-SpringMVC概述和入门

SpringMVC概述和入门 MVC概述 实体类Bean:专门 存储业务数据 Student User业务处理Bean:指的是Service或者Dao 专门用来处理业务逻辑或者数据访问 用户通过视图层发送请求到服务器&#xff0c;在服务器中请求被Controller接受&#xff0c;Controller调用相应的MOdel层处理请求…...

pdf转换器免费版哪种好用:Aiseesoft PDF Converter Ultimate | 无损转word转Excel转PPT转图片啥都行!!!

Aiseesoft PDF Converter Ultimate 是一款优秀且高效可靠的无损电脑免费版pdf转换器软件&#xff0c;凭借卓越高识别精度的强悍OCR识别技术&#xff0c;可精准识别英文、法文、中文、德文、日文、韩文、意大利文、土耳其文等190多个国家的语言以及各种公式和编程语言&#xff0…...

革新市场营销,突破瓶颈:关键词采集和市场调查的秘密武器

近年来&#xff0c;全球新兴行业不断涌现&#xff0c;其中一些行业甚至成为了热门话题。这些新兴行业的出现&#xff0c;不仅带来了新的商机和发展机遇&#xff0c;也对传统产业带来了冲击和挑战。对于那些想要进入新兴行业的人来说&#xff0c;了解这些行业的关键词和市场情况…...

3年测试经验只会“点点点”,不会自动化即将面临公司淘汰?沉淀100天继续做测试

前段时间一个朋友跟我吐槽&#xff0c;说自己做软件测试工作已经3年了&#xff0c;可这三年自己的能力并没有得到提升&#xff0c;反而随着互联网的发展&#xff0c;自己只会“点点点”的技能即将被淘汰。说自己很苦恼了&#xff0c;想要提升一下自己&#xff0c;可不知道该如何…...

python:异常处理与文件操作(知识点详解+代码展示)

文章目录一、异常处理1、try...except语句2、finally语句二、断言1、定义2、举例例一&#xff1a;例二&#xff1a;三、文件操作1、写文件操作2、读文件操作学习目标&#xff1a;1、掌握异常处理的方法2、掌握断言的使用3、掌握打开文件、读文件和写文件的方法一、异常处理 引…...

SpringBoot 过滤器和拦截器(三十八)

我喜欢你&#xff0c;可是你却并不知道. 上一章简单介绍了SpringBoot参数验证(三十七) ,如果没有看过,请观看上一章 关于过滤器和拦截器已经讲很多了&#xff0c; 这里老蝴蝶只说一下 SpringBoot 的用法。 可以看之前的文章: https://blog.csdn.net/yjltx1234csdn/article/d…...

Memcache论文总结——Lec16

文章目录一、相关名词1.mcrouter层2.GUTTER SERVER3.mcsqueal4.remote mark二、当流量增长了如何SCALE 你的网站&#xff1f;三、背景及业务特点1.读多写少2.FB需求&#xff1a;3.之前情况四、简介五、FaceBook的架构五、Cache Policy六、In a Cluster : Latency and Load(一&a…...

父子组件传值问题

文章目录前言一、问题描述二、问题解决前言 在写毕业设计&#xff0c;涉及了一些前端Vue.js的组件传值知识并出现了相关问题&#xff0c;因此进行记录。 问题 Vue.js的使用不熟练&#xff0c;相关组件、props等掌握不清晰前端代码书写不规范 望指正&#xff01; 一、问题描述 …...

Redis大key问题

Redis大key问题 什么是big key&#xff1f; bigKey的危害&#xff1a; 大key不仅仅是占用内存而已&#xff0c;如果是仅仅内存的问题 那么扩大内存就好了。禁止大key是主要是因为你操作redis&#xff0c;比如说读/写等操作redis的时候 会有io操作&#xff0c;大key会导致io操作…...

00后卷王的自述,我难道真的很卷?

前言 前段时间去面试了一个公司&#xff0c;成功拿到了offer&#xff0c;薪资也从12k涨到了18k&#xff0c;对于工作都还没两年的我来说&#xff0c;还是比较满意的&#xff0c;毕竟一些工作3、4年的可能还没我高。 我可能就是大家说的卷王&#xff0c;感觉自己年轻&#xff…...

Redis第七讲 Redis存储模型详解

Redis存储模型 每次在Redis数据库中创建一个键值对时,至少会创建两个对象,一个是键对象,一个是值对象,而Redis中的每个对象都是由 redisObject 结构来表示.redisObject的结构与对象类型、内存编码、内存回收、共享对象都有关系,一个redisObject对象的大小为16字节:4bit+…...

Python 进阶指南(编程轻松进阶):十五、面向对象编程和类

原文&#xff1a;http://inventwithpython.com/beyond/chapter15.html OOP 是一种编程语言特性&#xff0c;允许你将变量和函数组合成新的数据类型&#xff0c;称为类&#xff0c;你可以从中创建对象。通过将代码组织成类&#xff0c;可以将一个整体程序分解成更容易理解和调试…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...