当前位置: 首页 > news >正文

阶段性渗透总结

目录

渗透中的信息收集

门户网站的收集

1. FOFA、Hunter

2. IP138

3. 浏览器插件

4. 其他方式

1)抓包分析

2)Google语法

针对门户网站的信息收集

1. Google黑客语法

2. 加群

3. DY、B站、XHS、WB

渗透中的字典设置

1. 精简密码&常见username

渗透中的入侵思路

1. 域名的收集

2. 信息收集

3. 实行爆破/喷砂

1. 修改系统代理

2. 打开BurpSuit的代理

3. 访问目标域名

4. 小程序渗透简介

XSS入门

1. 原理

2. 靶场

1. 位置

3. 练习

第一关:Ma Spaghet!

2. 第二关:Jefff

3. 第三关:Ugandan Knuckles

4. 第四关:Ricardo Milos

5. 第五关: Ah That's Hawt

6. 第六关:Ligma

7. 第七关:Mafia


渗透中的信息收集

门户网站的收集

门户网站或者说入侵口的收集方式很多,以下是一些常见的工具:

1. FOFA、Hunter

链接: fofa :网络空间测绘,网络空间安全搜索引擎,网络空间搜索引擎,安全态势感知 - FOFA网络空间测绘系统 hunter:鹰图平台(hunter)-奇安信网络空间测绘系统 这两个工具的使用方式差不多,工具内部都有使用说明和语法示例。使用它们来扫描一些主网站的分站是很有帮助的。 具体如下图: FOFA:

Hunter:

2. IP138

链接:ip查询 查ip 网站ip查询 同ip网站查询 iP反查域名 iP查域名 同ip域名 它可以用来定位IP,比如我们想入侵一个站点,但是目前办不到,就可以在这里查IP,看一下目标站点的网段,在这个网段内是否有其他在线主机。如果有,那我们可以尝试攻击其他主机,然后进行横移,达到攻击目标站点的目的。

3. 浏览器插件

比如Findsomething 它可以简单的扫描一些接口,有可能有用。

比如wappalyzer 它是一个指纹识别插件,可以用来识别当前站点的指纹,方便我们寻找指纹过往的漏洞,这在入侵站点的时候也许有帮助。

当然,指纹识别这一步骤也可以借助工具实现,比如BurpSuitBurpFingerPrint插件。安装这个插件之后,我们使用BurpSuit抓包时,它就会自动识别指纹。

4. 其他方式

1)抓包分析

有些入口以上方式找不到,但是呢我们可以通过抓包,查看HTTP/HTTPS的数据包,这是有可能有意外之喜的。

2)Google语法

有的时候,使用谷歌语法也是有可能发现入口的,但是这就需要一些运气了,不一定能发现。

针对门户网站的信息收集

1. Google黑客语法

针对我们在挖edusrc的时候遇见最大的问题就是如何突破一站式服务大厅的网站,要突破这一点,我们就需要拥有教师的gh 、sfz和 学生的sfz、 xh这些个人隐私信息,所以我们就需要做好信息收集。常见的Google语法有很多,以下是汇总好了部分常用的Google黑客语法,以及它们的实用性见解

 1.site:域名 intext:管理|后台|登陆|用户名|密码|验证码|系统|帐号|manage|admin|login|system有些用,可以找后台​2.site:域名 inurl:login|admin|manage|manager|admin_login|login_admin|system3.site:域名 intext:"手册"可能有用​4.site:域名 intext:"忘记密码"5.site:域名 intext:"工号"也有可能,但比较低​6.site:域名 intext:"优秀员工"7.site:域名 intext:"身份证号码"可能性低​8.site:域名 intext:"手机号"有可能,但也低​​9. site:域名 intext:"学号"可能很大,但有些会做脱敏(***)处理

2. 加群

比如说要挖掘EDU SRC类漏洞时,我们可以搜索这个院校的新生群之类的群聊,里面有可能泄露一些我们需要的信息。

3. DY、B站、XHS、WB

在这些流量大的软件搜索关键词,有可能有同学不小心或出于分享的心理,把一些信息以图片、视频的形式泄露出来,而且不做脱敏处理,这里很可能含有xh、sjh等信息。这些也是有用的。

渗透中的字典设置

字典在爆破或者喷洒时作用很大,但是如果搭配不好的话就会使得字典臃肿的同时效率低下。 那怎么设置一个实用性强的字典呢?以下是一些见解:

1. 精简密码&常见username

在使用弱口令爆破/喷洒目标站点的时候,不宜实用量大的密码字典搭配量大的用户字典,因为这样一交叉爆破浪费时间、效率低下、对设备要求很高还容易被封。 但是实用精简的密码字典搭配常见的用户字典效率就会大很多。 大家可以去搜一下全球最常用的密码名单,比如笔者随意搜索的:

其实常用的密码就那几个,所以密码字典根本不用量大,而是需要精简。再者,若是这些常见的弱口令喷洒失败,那就可以放弃弱口令喷洒这个方法了。这时候的密码也许还是弱口令,但是找不到了,大海捞针很难,如果不是弱口令,那就更不用试了,所以并不需要量大的密码字典。

但是用户字典那是需要的,但是也不必太大,多去GitHub之类的站点收集已经有的字典,然后去看看公安发出的最受欢迎的名字等,把它们处理为首字母缩写(zs、li)的形式保存在字典里就行了。

渗透中的入侵思路

以爆破/喷洒为例子,介绍渗透入侵的一般思路

1. 域名的收集

域名的收集就用到上面介绍的门户网站的收集方法。收集的顺序也跟介绍的顺序差不多。当然,方法、思路、工具不止那些。现在AI那么好用,我们也可以让AI帮一下忙;或者写脚本来收集,这个脚本可以自己写,可以在网上找、也可以让AI帮我们写。同时也还有其他方法,这个因人而异,只要达到收集域名的目的就行。

2. 信息收集

信息的收集上面也有介绍,按着方法来就好了。一般我们收集到的信息是PDF、EXCEL、DOCX等,需要把它们当中的xh、sjh、sfz等提取出来,放到一个txt文件中。至于怎么提取方法就很多了,交给AI处理、在线转换等等。

3. 实行爆破/喷砂

这一步就需要实用到工具了,比如说BurpSuit、Yakit等,这里以BurpSuit为例。

1. 修改系统代理

把这里的端口修改为8080,这是BurpSuit默认实用的端口。

2. 打开BurpSuit的代理

打开这里的代理开关。

3. 访问目标域名

使用一个弱口令访问目标域名,比如username:admin,password:admin。 然后不出意外的话BurpSuit可以抓到数据包了。 但是有时候这些配置做完了,访问目标域名的时候显示未收到响应。笔者就遇到过这个问题,原因使Windows有进程占用了8080端口,找到并把它关掉然后再启用BurpSuit就好了。 最终抓到的包就像下面这个:

4. 小程序渗透简介

这里插入一下小程序渗透简介。 它的抓包、信息收集与上述方法是一样的,区别在于抓包。当然了如果仅仅是想抓数据包那很简单,但是想通过数据包实现渗透目标那就需要转一下,把数据包转到BurpSuit。 具体方法就不赘述了,很简单。

XSS入门

这里再介绍一下XSS的原理与一个靶场的通关思路分享。

1. 原理

XSS的核心问题就是应用未对用户输入的动态内容进行安全过滤或编码,导致浏览器将其当作代码执行而非普通文本。

2. 靶场

1. 位置

https://xss.pwnfunction.com/ 这是一个线上靶场,比笔者之前搭建并完成的靶场要更好些。 那篇文章的链接:XSS基础靶场练习-CSDN博客

3. 练习

第一关:Ma Spaghet!

这一关考察的是innerHTML的作用,可以把我们填写的内容填充到标签里面,但是不能填写script标签。 那什么是innerHTML呢?innerHTML 是 JavaScript 中用于操作 DOM 的一个属性,主要用于获取或设置 HTML 元素的内部 HTML 内容。它可以动态修改网页内容,但同时也存在安全风险(如 XSS 攻击)。 那就很清晰了,我们这样构造就可以了:

?somebody=<img src=1 onerror=alert(1337)>

2. 第二关:Jefff

 eval(`ma = "Ma name ${jeff}"`)

入手点在这里,思路是这样的:

想办法在Ma name这里闭合前面的内容,然后在后面写执行的语句。构造如下:

 ?jeff=test";alert(1337)//或者​?jeff=test"-alert(1337)-"

这里面,第一个"就会闭合前面的内容,得到这样的结果:"Ma nama test"

然后;隔开,表示接下来的是其他语句

然后执行的语句就是alert(1337)

但是原句还有最后的",这时候我们构造的//就起到作用了,会把它注释掉。

第二种也是一样的原理。

3. 第三关:Ugandan Knuckles

这一关主要有一个要求:No user interaction.即在不与用户交互的前提下触发xss

那就使用自动获取的方法:

 "onfocus=alert(1337) autofocus="

4. 第四关:Ricardo Milos

它的源码使用了action,而action可以直接使用javascript协议

所以这样构造就可以了:

 ?ricardo=javascript:alert(1337)

5. 第五关: Ah That's Hawt

这一关过滤了以下字符

  "(" "'"")""\"

这里不外呼两种方法,一种是找不需要以上字符的函数,比如location

 ?markassbrownlee=<img src=1 onerror=location="javascript:alert%25281337%2529">

一种是字符编码

1. 把alert(1337)编码为HTML实体&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x31;&#x33;&#x33;&#x37;&#x29;
2. 把标签补全后对整个语句进行URL编码<svg onload="&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x31;&#x33;&#x33;&#x37;&#x29;">%3Csvg%20onload%3D%22%26%23x61%3B%26%23x6C%3B%26%23x65%3B%26%23x72%3B%26%23x74%3B%26%23x28%3B%26%23x31%3B%26%23x33%3B%26%23x33%3B%26%23x37%3B%26%23x29%3B%22%3E也可以使用img代替 svg<img src=1 onerror=alert(1337)>  之后就是一步一步编码

6. 第六关:Ligma

这一关的过滤很严格,不允许出现数字、字母

这样一来就不能使用上一关的HTML实体编码、URL编码,但是又需要用到alert,那能不能把alert转为不含字母、数字的内容呢

答案是可以的,使用下面这个工具: JSFuck - Write any JavaScript with 6 Characters: []()!+

转换如下:

这样编码之后能不能直接用呢?不能,因为这出现了++在URL编码中会转化为空格,所以还有对这个编码的结果进行URL编码

%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%5B%28%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%29%5B%2B%21%2B%5B%5D%2B%5B%2B%5B%5D%5D%5D%2B%28%5B%5D%5B%5B%5D%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%5B%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%5B%5D%5B%5B%5D%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%2B%28%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%29%5B%2B%21%2B%5B%5D%2B%5B%2B%5B%5D%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%5D%28%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%2B%28%5B%5D%5B%5B%5D%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%5B%5D%5B%5B%5D%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%2B%5B%21%5B%5D%5D%2B%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%29%5B%2B%21%2B%5B%5D%2B%5B%2B%21%2B%5B%5D%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%2B%28%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%5B%2B%21%2B%5B%5D%5D%29%29%5B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%29%5B%2B%21%2B%5B%5D%2B%5B%2B%5B%5D%5D%5D%2B%28%5B%5D%2B%5B%5D%29%5B%28%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%29%5B%2B%21%2B%5B%5D%2B%5B%2B%5B%5D%5D%5D%2B%28%5B%5D%5B%5B%5D%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%5B%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%5B%5D%5B%5B%5D%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%2B%28%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%29%5B%2B%21%2B%5B%5D%2B%5B%2B%5B%5D%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%5D%5B%28%5B%5D%5B%5B%5D%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%28%2B%5B%5D%29%5B%28%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%29%5B%2B%21%2B%5B%5D%2B%5B%2B%5B%5D%5D%5D%2B%28%5B%5D%5B%5B%5D%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%5B%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%5B%5D%5B%5B%5D%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%2B%28%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%29%5B%2B%21%2B%5B%5D%2B%5B%2B%5B%5D%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%2B%5B%2B%21%2B%5B%5D%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%5D%5D%28%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%5B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%29%2B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%5B%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%29%28%29%28%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%5B%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%2B%28%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%2B%5B%2B%21%2B%5B%5D%5D%5D%2B%5B%2B%21%2B%5B%5D%5D%2B%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%5B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%2B%28%5B%5D%2B%5B%5D%2B%5B%5D%5B%28%21%5B%5D%2B%5B%5D%29%5B%2B%21%2B%5B%5D%5D%2B%28%21%21%5B%5D%2B%5B%5D%29%5B%2B%5B%5D%5D%5D%29%5B%2B%21%2B%5B%5D%2B%5B%21%2B%5B%5D%2B%21%2B%5B%5D%5D%5D%29

之后输入就可以了

7. 第七关:Mafia

这一关首先限制了字符长度50,这就不能使用上一关的方法了,然后还过滤了以下符号和关键字

  '"+-!\[]alert

这里它虽然过滤了alert函数,但其实使用confirm函数也能实现弹窗,但是题目要求使用alert弹窗所以我们这里confirm也不能使用。那么这里能不能使用大写绕过呢,比如这样

?mafia=ALERT(1337)

不行。因为JS严格区分大小写。

那怎么办呢? 基于大写绕过的思路,我们这样想:

依然是使用大写绕过正则的过滤,然后使用某种方法,把大写的ALERT转化为小写,然后立即3调用执行,构造的语句如下:

?mafia=Function(/ALERT(1337)/.source.toLowerCase())()

http://www.dtcms.com/a/278001.html

相关文章:

  • 第五章 Python手写数字识别【CNN卷积神经网络实现】
  • Windows怎样同步时间服务器?
  • 最简约的Windows多标签页文件管理器推荐 - 360文件夹 - 免费开源绿色软件推荐
  • Lucene原理
  • Android自定义View的事件分发流程
  • (33)记录描述窗体组件属性的枚举量 enum Qt :: WidgetAttribute, 简记为 WA_
  • Java结构型模式---外观模式
  • 和 *,以及 -> 和 .
  • C语言基础知识--柔性数组
  • 串口学习和蓝牙通信HC05(第八天)
  • LlamaIndex 检索器 Retriever
  • 题目V^V
  • 008_Claude_Code开发工具
  • 自注意力机制及其与早期注意力机制的区别
  • C++高频知识点(十)
  • Android 响应式编程完整指南:StateFlow、SharedFlow、LiveData 详解
  • 封装---统一封装处理页面标题
  • 关于 java:11. 项目结构、Maven、Gradle 构建系统
  • DAY02:【ML 第一弹】KNN算法
  • Datawhale AI夏令营——用AI预测新增用户学习笔记
  • 【VLLM】大模型本地化部署
  • 【图片识别内容改名】用图片的内容改图片文件的名字,批量OCR识别图片上的文字并同时进行批量改名的操作步骤和注意事项
  • 深入了解JAVA中Synchronized
  • MD5算法深度剖析与可视化解析
  • Kubernetes集群安装
  • Codeforces Round 1032 (Div. 3)(A-G)
  • 嵌入式 Linux开发环境构建之安装 Samba
  • Wireshark的安装和基本使用
  • C语言---自定义类型(上)(结构体类型)
  • Vue Router 完全指南:从入门到实战,高效管理前端路由