2023护网行动经验分享(2024护网招人)

news2024/12/23 14:21:45

今年的护网又开始摇人了,不知道大家有想法没?

去年的护网结束之后,朋友圈感觉是在过年,到处是倒计时和庆祝声。

看得出来防守方们7*24小时的看监控还是比较无奈的。

本次复盘基于我对整个护网行动的观察总结而来,仅代表我个人观点,如有不妥之处,欢迎交流。
在这里插入图片描述

1.整体攻防的思考

本次攻防,从规则到各方实力,都是绝无仅有的。经常有人问,是攻击队厉害还是防守队厉害?经过我这些年的思考,还是没有得出一个确切的结论。有时候觉得攻击队厉害,因为攻击可以在非特定时间随意发起,出其不意攻其不备,甚至手持0day指哪打哪,毕竟木桶原理决定着攻破一处即可内部突袭;有时候又觉得防守方厉害,因为防守方拥有全部访问流量,随时洞察攻击者的探测并封堵IP,也可以在主机层监控攻击者一举一动,甚至部署蜜罐玩弄黑客于鼓掌之中。总之,这么些年的摸爬滚打经验告诉我,攻防就是这样,道高一尺魔高一丈,一如黑客防线中说的“在攻于防的对立统一中寻求突破”。
在这里插入图片描述
我这里也给大家准备了一套护网的零基础入门视频教程,有需要的自取~

2.从攻击方思考

在真实的攻击行动中,一般一个目标要搞到核心系统根据防御程度不同,也需要1个月到半年的样子,甚至APT要潜伏一到两年才能拿到自己想要的数据。而此次总共给攻击方的时间只有3个周,并且每个队伍据说10多个目标,这也就决定了攻击要快速、要自动化。

a)分布式扫描器

要说快速,还是得上扫描器,但是一个扫描器速度肯定不行,再者,被发现攻击行为,立马IP被ban掉,后续就无法进行。所以,分布式扫描器在这种情况下一定是个趋势。首先对全部目标的全端口进行一次扫描+端口识别,根据Banner快速收割一波;
在这个过程中就会有个坑,比如在收集二级域名时,经常采用字典爆破,而防守方会设置一个诱饵二级域名,把流量引入蜜罐之中,坐等上钩。这就需要攻击方们机灵一点,时刻反思这个是不是蜜罐,至于怎么发现蜜罐,以后再聊。
对于AWVS的扫描器,还得请各位升级到最新版,别被防御方反制,毕竟老版本扫描器自身就存在一个RCE。

b)菜刀?蚁剑?冰蝎?

对于所有的黑客来说,菜刀肯定是一个传奇,一直是最稳定、最牛逼的webshell管理工具之一,但是同时,菜刀也是一个最容易被发现的攻击工具,毕竟流量特征太明显了,而且一旦发现就100%意味着服务器已沦陷,防守方会里面下线进行深入分析。说起来菜刀好像是11年左右发布的(如有记忆偏差,请指正),还记得当初第一次见到这工具时的感觉,那感觉总结起来就是一句话,“卧槽!牛逼!”。因为在菜刀之前,我们学习的都是先小马后大马的姿势。而用了菜刀之后,我深刻理解了什么大马小马都无所谓,能执行命令搞定目标的都是好马。然后经过了几年的迭代,中国菜刀在国内安全圈也是经历了各种风风雨雨,各种后门版满天飞。最后鉴于其加密性能较弱,陆续出现了几个替代版本,蚁剑就是很优秀的一个项目。讲真,我开发水平相对较弱,见到蚁剑才发现原来js也可以写出优秀的跨平台客户端应用。可是正式由于其nodejs写的,才导致其跟AWVS一样,存在一个本地nodejs解析的RCE,很可能被防御方反制。再之后给我“牛逼”感觉的就是冰蝎了,其双向通信加解密的管理方式,让诸多基于黑名单正则的防御产品厂商直接歇菜。可是很奇怪的时,还是有很多大量攻击方采用菜刀、jspspy之类的原始webshell,结果被防御方轻松发现并清除。

不过说到最后,我有一个疑惑,为何大家非得用webshell这种方式搞服务器呢?比如在存在weblogic反序列化或者Struts2 RCE漏洞时,黑客们写的工具还是一键写入webshell这种。安全发展到今天,防御手段越来越多,各位白帽子是时候改变了。正如我之前说的,不管用什么shell工具,只要能在服务器端执行命令,下面就肯定有更好的解决方案。我一般会使用命令方式加载自己的二进制版远控来操作,现在的二进制远控,不像以前,还得生成exe用菜刀上传,在命令行下执行,现在基本都可以做到类似mshta或者powershell的一句话直接动态上线,并且基于TCP/UDP协议的命令执行、文件管理,一是稳定,二是完全绕过那些基于黑名单的流量分析设备。类似metasploit的脚本payload反弹的meterpreter,但是msf特征明显,也容易被杀,所以我个人估计后面攻防还是会发展到类似cobalt strike之类的工具对抗上。

c)水坑&鱼叉

针对水坑或者鱼叉攻击来讲,可以想象到肯定大量的攻击队伍采用这种方法进行攻击,攻击手法多基于邮件进行。现在假想成攻击队伍,我会首先在github上搜索一波,举个例子:https://github.com/search?q=%224dogs.cn%22+password&type=Code,注意域名要加上双引号进行精准匹配。在翻到一个可登陆的邮箱后,去通信录导出所有联系人方式,进而进行简单的口令爆破;在这些操作还没拿到有用密码的情况下,就可以根据组织结构进行定点攻击了。高级点的用浏览器0day,没0day的也可以直接发宏病毒,注意编个理由加个密发,防止被沙箱抓样本。

假如没有有用的邮箱账号,也可以搜索引擎收集一波邮箱,再根据明明规则,加载中国姓名top500字典进行组合,总归能抓到一两个用弱口令的。

如果还是啥都没有,也可以使用swaks之类的直接伪造成admin发送钓鱼邮件。至于发送内容和技巧,以后再聊。

对于防御方来讲,最厉害的莫过于直接关停外网邮箱了。次之,可以派人随时查看登录日志,及时发现异地登录爆破情况。对于有钱的甲方爸爸们,可以通过流量镜像,对附件进行沙箱判定。

d)内网渗透,还是要了解业务

在突破边界进入内网后,剩下的主要是内网渗透了。内网渗透可以简单分为横向渗透和纵向渗透。内网渗透的实质和关键是信息收集,通过不停的突破系统拿到更多的权限,而更多的权限带来更多的信息,最终在信息和权限的螺旋迭代下,拿到目标的最高权限。

对于有域的环境,一般目标时拿下域控,而在本次攻击中却恰好爆发了一个直接打域控的0day,这就容易多了。但是即使一键拿下域控权限,还是要回到信息收集的本质上,要在海量的终端里筛选出自己的目标数据在哪台机器里,还是需要一些技巧的,展开来讲,有空再聊。

而不管是什么环境,我个人感觉阻碍攻击队伍进行内网渗透的主要原因还是对目标业务的了解程度。比如电力行业的16字方针(此处略),很多时候搞到边界系统后,ipconfig一看是10段的,以为进了个大内网,而实际情况是那只是冰山一角而已。纵向突破还有很长很长的路要走。再者,假如对电信行业、金融行业不了解,进到内网肯定也是一脸懵逼,一副“我是谁?我在哪?”的感觉。这也是内网渗透耗费精力的原因。

e)0day的优劣势

在本次演习中,陆续发现了大量的0day,印象里不完全统计有七八个,具体0day细节可以参考各大公众号之前的报到。这里只讨论下针对0day的问题。

从0day的内容和数量上来讲,护网结束后我是看啥系统都有漏洞,并且有一种想去挖几个留着的冲动,奈何工作杂事太多,先搁置一下吧。
对于攻击方来讲,手握0day是指哪打哪的一个有效支撑。从漏洞类型上,基本覆盖web、网络、操作系统等等方面。针对国内的网络安全现状,讲真,我对那些商业应用真的不报任何安全的奢望。对于国企和政府来讲,自有系统大都是外包厂商开发,而这些外包开发者,大概率不懂安全,甚至sql注入是啥都不知道,更别说防御框架漏洞了。所以对于攻击者来讲,去攻击一个客户广泛的厂商,拿到一个0day即可攻下其相关的所有目标,收益非常高。但同时也要明白,现在0day的生存期非常之短,10年前,我们一个0day可以用半年都没被人发现,而在这次演习中,0day的生存期可能只有半个小时,因为防守方发现shell就会溯源,进而预警。不过排除这次防守方7*24小时的有效监控,在真实情况下,0day的生存周期可能不超过一周。所以,我认为,当前网络环境中,0day大量存在,但使用非常谨慎。至于防守方怎么防御0day,请看后面内容。

3.从防守方考虑

整体来讲,防守方都是从“事前排查”、“事中监控”、“事后溯源”三个方面进行防御的。根据我的观察,普遍来讲,国企安全防御能力弱与互联网公司,而相反,国企和政府单位的投入普遍高于互联网公司。这也就导致了演习前大量的“人贩子”到处求人驻场的问题,一度炒到人天上万元。下面从几个方面分析这次防守方的经验和教训。

a)防御过度问题

至于这次演习的意义和重要性,各位甲方自己应该更明白,这里不再描述。而正是由于防御方的重视,所以出现了大量的防御过度现象。一是在开始前的大量系统关停,二是对于互联网IP的大量封禁。首先大量的关停本质上类似掩耳盗铃一样,在护网结束后依旧面临各类外部攻击者的威胁。希望存在这类情况的厂商,还是能从根源上排查漏洞,加固系统,对系统采取必要的防护措施。

针对恶意封禁IP的情况,虽然体现了防守方及时发现攻击的能力,但同时,也实实在在的影响了正常业务的运行。
特别是一封一个B段的情况,我表示可以理解,但也不忍直视。同上,各位甲方还是考虑下从根源解决问题。

b)应急排查

对于事前的应急排查,甲方大都采用临时购买人工渗透服务的方式进行,而毫不客气的说,你们买到的有一部分却是在校大学生,或者培训机构的实习生。即使钱给够了,去的是个渗透大神,也会因为内网漏洞太多,无法完全覆盖。以我个人举个例子,假如给我一个系统,我大概需要一上午分析每个端口,每个业务接口的安全性,进而给出一个完整的测试报告,我基本上可以保证我测试过的系统短时间内不会出大问题。但是假如给我一个B段,告诉我3天完成,那我就只能模拟横向内网渗透,masscan先来一波端口,wvs扫描一波,然后一批一批的去看。这种模式就决定了无法完全覆盖全部业务系统。及时时间够,那对于新增的业务又怎么办?

那针对这种情况该怎么办?我一直给我的客户普及的一个想法是内网漏洞,不要指望短时间内购买一次服务就完全解决了。对于漏洞隐患,工作必须是平时常态化的开展。一是上资产管控手段,对内网所有的服务器,通过主动扫描、被动流量分析等手段进行搜集,实时监控内网到底开了多少端口,每个端口运行什么服务,应用是什么版本;二是解决遗留问题,对内网既有的框架漏洞、弱口令漏洞,进行专项整治。相信通过本次护网,原来没搞过安全的防守方,在部署安全设备后发现了大量的永恒之蓝、木马受控等问题,这些都是遗留问题。建议大家用几周时间集中解决一类问题,循环下去即可解决遗留的全部问题。三是建立新业务上线审查流程,对于新上线的业务系统,必须通过第三方安全测评,只有拿到安全测评报告的才允许上线。

c)重边界、轻内网的防御策略

这次的防守方普遍是重边界、轻内网防御,造成了一旦边界被破,内网整体垮掉的风险。而这个情况在我入行时就普遍存在。安全发展到今天,实在是说不过去。去年看到了Google提出的0信任网络,感觉是个趋势,一度想转行做0信任网络的布道者,虽然普及还有一段路,但是我还是希望大家可以转变思维,一定一定不要认为我在内网就是安全的。万一哪天被黑,可能影响的就是国家利益,带来的就是社会动荡。

d)威胁情报系统的意义

首先,针对这次攻击,各种原有IOC情报基本无效,比如恶意域名库、恶意IP库等,因为攻击方使用的都是新的域名和IP,这也是黑名单做安全的尴尬。但是同时要感谢安全厂商们的威胁情报库,让更多的国企、政府单位认识到了自己内网办公电脑有很多已经被控制。

e)面对0day攻击的无力感

面对0day攻击,理论上谁都扛不住,但是实际是这样么?仔细想想并非如此,首先,面对0day真正扛不住的是以黑名单为基础的安全设备,包括waf类、态势感知类、IDS类等。而这些安全设备,又确确实实是各大厂商的首选安全监控设备,一旦这些设备没报警,那基本啥都干不了。这也是防守方们7*24小时防守但其实大部分时间无所事事的原因。

首先,对于web 0day的防御,完全可以采用openrasp类防御方法,从根源上防止各类web漏洞攻击。如果有想购买商业版rasp方案的同学,可以勾兑下我哦。

其次,对于网络0day和系统0day,我们可以采用EDR手段进行防御,在终端上装上agent,在agent上采用白名单策略,对于无关的进程启动和危险命令直接报警或阻断。想起来我们四年前做过的一个产品叫麒麟卫士,可以说是国内首款EDR雏形了,可是去卖的时候发现大家对于需要安装agent的做法都耿耿于怀,不敢装。四年过去了,相信后面会有更多的人接受EDR带来的安全改变。

f)蜜罐

这次演习的一大亮点就是很多防御方采用了蜜罐的方式进行诱捕和攻击引流。要说蜜罐做得好,那是真的很有用。我理想中的蜜罐应当是完全仿真,而不是动态针对部分服务的仿真。同时可以具备反制的功能,一是可溯源攻击者真实身份,二是可利用AWVS或者蚁剑这类黑客工具自己的漏洞反向攻击攻击者。相信后面会有大量的优秀产品脱颖而出。不过防守方真的真实部署后,可能半年也捕获不到一次有效攻击,毕竟这次是演习,平时黑客攻击还是少。不过安全就是如此,防患于未然。

最后,想参加今年护网的,可以后台滴我一下!

下面给大家总结了一套适用于网安零基础的学习路线,应届生和转行人员都适用,学完保底6k!就算你底子差,如果能趁着网安良好的发展势头不断学习,日后跳槽大厂、拿到百万年薪也不是不可能!

【点击这里,先领资料再阅读哦~】

初级网工

1、网络安全理论知识(2天)

①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)

①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)

①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)

①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)

①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)

①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

【“脚本小子”成长进阶资源领取】

7、脚本编程(初级/中级/高级)

在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.

零基础入门,建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习; 搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime; ·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完; ·用Python编写漏洞的exp,然后写一个简单的网络爬虫; ·PHP基本语法学习并书写一个简单的博客系统; 熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选); ·了解Bootstrap的布局或者CSS。

8、超级网工

这部分内容对零基础的同学来说还比较遥远,就不展开细说了,贴一个大概的路线。感兴趣的童鞋可以研究一下,不懂得地方可以【点这里】加我耗油,跟我学习交流一下。

网络安全学习路线&学习资源

在这里插入图片描述

扫描下方卡片可获取最新的网络安全资料合集(包括200本电子书、标准题库、CTF赛前资料、常用工具、知识脑图等)助力大家提升进阶!

结语

网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。

特别声明:

此教程为纯技术分享!本书的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本书的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失!!!

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

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

相关文章

CSS弹性布局:Flex布局及属性完全指南,点击解锁新技能!

Flex 布局是一种新型的 CSS 布局模式,它主要用于弹性盒子布局。相比于传统的布局方式,它更加灵活,易于调整,也更加适应不同的设备和屏幕尺寸。 下面我们就来详细解析 Flex 布局及其属性,帮助大家深入理解和运用 Flex …

基于Python的自然语言的话题文本分类(V2.0),附源码

博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#x1f3…

并查集学习(836. 合并集合 + 837. 连通块中点的数量)

//得先加集合个数再合并!!!!!!!!! 核心代码: int find(int x){//返回父节点if(x ! p[x]) {p[x] find(p[x]);//路径压缩 } //孩子不等于爸爸,就…

如何搭建APP分发平台分发平台搭建教程

搭建一个APP分发平台可以帮助开发者更好地分发和管理他们的应用程序。下面是一个简要的教程,介绍如何搭建一个APP分发平台。 1.确定需求和功能:首先,确定你的APP分发平台的需求和功能。考虑以下几个方面: 用户注册和登录&#xff…

Kali WSL2(windows下安装了kali)

自从WSL2以来,感觉各方面也挺好的,有时候比vmware workstation方便,特别单独使用一个linux的时候。所以研究了下kali,也是很OK的,以及验证完成了。 本文参考官网: Kali Linux | Penetration Testing and Et…

【氮化镓】在轨实验研究辐射对GaN器件的影响

【Pioneering evaluation of GaN transistors in geostationary satellites】 摘要: 这篇论文介绍了一项为期6年的空间实验结果,该实验研究了在地球静止轨道上辐射对氮化镓(GaN)电子元件的影响。实验使用了四个GaN晶体管&#xf…

python绘制子图(旭日图、渐变堆积面积图、多数据折线图、比例关系图)

大家好,我是带我去滑雪! 子图可以更清晰地展示和理解复杂的数据关系,通过将数据分成多个小图,有助于观察数据间的关系和趋势。减少数据之间的重叠和混淆,使得每个子图更易于理解和解释。不同类型的子图可以呈现数据的不…

房企如何驱动新“三驾马车”,穿越地产周期?

今年以来,房地产行业在不确定性的周期中,逐渐显露出部分确定性。 今年两会期间,住建部明确指出,构建发展新模式是破解房地产发展难题的治本之策,在新模式下今后拼的是高质量、新科技、好服务。可以说,国家…

医学图像处理 利用pytorch实现的可用于反传的Radon变换和逆变换

医学图像处理 利用pytorch实现的可用于反传的Radon变换和逆变换 前言代码实现思路实验结果 前言 Computed Tomography(CT,计算机断层成像)技术作为如今医学中重要的辅助诊断手段,也是医学图像研究的重要主题。如今,随…

前端三剑客 —— JavaScript (第一节)

目录 回顾内容 1.弹性布局 2.网格布局 JavaScript 概述 发展 浏览器 什么是Javascript JavaScript 能干什么 JavaScript需要的环境 JavaScript初体验 基本数据 JS书写方式 行内JS 页面JS 外部JS 1)创建外部JS文件 2)编写页面 对话框 警…

[C语言][数据结构][动态内存空间的开辟]顺序表的实现!

目录 零.必备知识 a.顺序表的底层是数组. b.数组在内存中是连续存放的. c.动态内存空间的开辟(malloc,calloc,realloc). 一.顺序表的定义与实现 1.1 顺序表的定义 1.2 顺序表的初始化 1.3 顺序表的销毁 1.4 顺序表容量的检查与调整(最关键的部分) 1.5 顺序表的尾插 1.…

【Flutter】Getx设计模式及Provider、Repository、Controller、View等

本文基于Getx 4,x 本本 1、引入 再次接触到Flutter项目,社区俨然很完善和活跃。pubs.dev 寻找状态管理的时候看到很熟悉的Getx时间,俨然发现Getx的版本已到是4.x版本,看到Getx的功能已经非常强大了,庞大的API俨然成为一种开发框架…

通俗易懂的理解 ADC(2)

理解什么是ADC 文章目录 1、通俗理解什么是ADC 2、什么是ADC 3、ADC的采样率 4、采样位数 5、采样精度 ADC实际没有这么的简单,深入了解需要去学各种寄存器之间如何协作,信号如何走通。这些概念在后面会有讲解。 1、通俗理解…

[mmu/cache]-MMU的地址翻译(Address translation)指令介绍

快速链接: 【精选】ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈 Address translation system instructions AT指令的语法格式: 有了上面的语法格式后,就非常好理解armv8的MMU提供了14条AT指令了: MMU的地址…

[mmu/cache]-ARMV8的cache的维护指令介绍

快速链接: 【精选】ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈 Armv8里定义的Cache的管理的操作有三种: 无效(Invalidate) 整个高速缓存或者某个高速缓存行。高速缓存上的数据会被丢弃。清除(Cl…

#{} 和 ${}区别

1、参数是Integer类型时候没区别(#是预编译SQL,$是即时SQL) 2、当参数是String类型时,就会出错了 (1)这是$的报错信息,因为我们的参数admin并没有加引号所以不满足字符串条件 (2)正确的SQL &am…

FJSP:美洲狮优化算法(Puma Optimizar Algorithm ,POA)求解柔性作业车间调度问题(FJSP),提供MATLAB代码

一、柔性作业车间调度问题 柔性作业车间调度问题(Flexible Job Shop Scheduling Problem,FJSP),是一种经典的组合优化问题。在FJSP问题中,有多个作业需要在多个机器上进行加工,每个作业由一系列工序组成&a…

用可视化案例讲Rust编程5.用泛型和特性实现自适配绘制和颜色设置

上一节我们讲了用泛型实现返回结果,这一节我们来讲讲在函数签名里面使用泛型来对输入参数进行自适配。 先看UML设计图: 好吧,看起来有点复杂,我们一个个来解释。 首先定义的是一个生成绘图元素需要的参数结构,并且定义个特性&am…

LeetCode-1483. 树节点的第 K 个祖先【树 深度优先搜索 广度优先搜索 设计 二分查找 动态规划】

LeetCode-1483. 树节点的第 K 个祖先【树 深度优先搜索 广度优先搜索 设计 二分查找 动态规划】 题目描述:解题思路一:暴力解法会超时!【一级一级往上跳,效率太低】解题思路二:倍增,利用二进制运算&#xf…

Python可视化之pandas

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1.解决坐标轴刻度负号乱码2.解决中文乱码问题3.折线图Series.plot()&DataFrame.plot()4.条形图5.箱线图6.区域面积图(堆积折线图)7.散点…