VulnHub-OSCP靶机

前言:由于这台机器过于简单,所以我会尽量细化和介绍每个步骤以及涉及到的知识点,让正在打入门机器的你不在迷茫和硬化的操作,理解并熟悉每条命令以及参数的含义,以及把前期带给我们的信息进行快速筛选,有利于新手构建完整的学习思路以及渗透测试架构,这也是对自身实力的分析的过程以及对自身是否真正掌握基础的考量。

主机发现

sudo arp-scan -l  

以临时管理员身份扫描并列出本地活动ip 

 靶机ip:192.168.94.99 

主机ip:192.168.94.230

信息收集

nmap扫描

 -sT:扫描tcp端口

使用sT会与目标主机的端口完成完整的TCP三次握手,缺点是隐蔽性低 ,会被记录日志风险高(目标系统的防火墙或者服务日志可能会记录这次扫描),特点是扫描结果更加完整准确,因为是完整的链接,某些设备严格过滤SYN包,可能只允许完整握手,如果你没有root权限的情况下,这个参数会是很好的选择。

 nmap -sT 192.168.94.99

 

-sS:SYN半开放扫描

在扫描中 第一次发送SYN包到目标端口,如果目标返回SYN/ACK(第二次握手),说明端口开放,nmap立即发送RST终止连接(不完成第三次握手),如果目标返回RST说明端口关闭,如果无响应,可能被防火墙过滤(filtered)。

特性说明
隐蔽性高不建立完整连接,日志记录较少(比 -sT 更隐蔽)。
速度快比 -sT 更快,适用于大规模扫描。
需要 root 权限因为需要构造原始 TCP 包(Raw Socket)。
绕过简单防火墙某些防火墙不会记录未完成的连接。
不适用于 Windows 目标Windows 系统可能会异常响应,建议对 Windows 使用 -sT

SYN包是什么?

SYN 包是一个 TCP 报文,其关键字段如下:

字段说明
Source Port(源端口)客户端的随机端口(如 54321)。
Destination Port(目标端口)要连接的服务端口(如 80、443、22)。
Sequence Number(序列号)客户端生成的随机初始序列号(ISN),用于后续数据包排序。
Acknowledgment Number(确认号)SYN 包中为 0(因为尚未收到对方的序列号)。
TCP Flags(控制标志位)SYN=1(表示这是 SYN 包),ACK=0(尚未建立连接)。
Window Size(窗口大小)客户端声明的接收缓冲区大小(影响传输速率)。
Options(可选字段)如 MSS(最大报文段长度)、Window Scaling(窗口缩放因子)等。

TCP三次握手:在对目标进行第一次TCP链接发送SYN包

  1. Client → SYN → Server(客户端发送 SYN 包)

  2. Client ← SYN/ACK ← Server(服务端返回 SYN+ACK)

  3. Client → ACK → Server(客户端确认,连接建立)

  • -sS 是 Nmap 最常用的扫描方式,速度快、隐蔽性高,但需要 root 权限。

  • -sT 适用于无 root 权限或 Windows 目标,但较慢且易被记录。

  • 渗透测试优先使用 -sS,日常探测可用 -sT

-O:扫描探测操作系统的版本

nmap -O 192.168.94.99

 -A:扫描各个服务,操作系统,以及默认脚本扫描。

nmap -A 192.168.94.99

 -O-A参数区别总结

选项功能覆盖范围扫描深度输出信息量
-O仅操作系统检测浅(仅OS)
-AOS + 服务版本 + 脚本 + Traceroute深(全面扫描)
-A -O同 -A(冗余)同 -A同 -A
  • 快速OS识别 → 用 -O

  • 全面信息收集 → 用 -A(无需再加 -O)。

  • 避免冗余-A -O 是多余的,因为 -A 已包含 -O

-O仅限于识别操作系统,对于识别到的信息有限,相对于-O,-A的功能就很全面,根据需求的不同,日常的信息收集中使用-A就够了。

-p-:扫描全部端口(0~65535)

nmap -p- 192.168.94.99

信息收集分析

访问80端口

翻译:

嘿!欢迎参加狩猎要参与抽奖活动,您必须获得位于/root/中的根标志。一旦你获得了旗帜,请向TryHarder 机器人发送命令!flag<插入标志>,它随后会验证该标志以进行核实。如果验证结果不正确,它会告知您。如果验证结果是正确的,您将在服务器上获得一个新的角色,在此角色下您可以在私聊频道中与其他用户交流。一旦你得到了这个角色,你就进入了抽奖活动!您必须是服务器的成员才能使用上面的命令。对于那些在以后从 vulnhub 下载这个盒子的人,上面的命令将不再可用。哦是的!差点忘了这个盒子上唯一的用户是“oscp”。非常感谢进攻安全提供的代金券。狩猎愉快

是一个介绍页面根据提示信息,获得了一个用户名oscp,它可能是我们登录ssh的用户名,目前也 没有其他可用信息,现在我们做一次全面的扫描。

sudo nmap -sS -A -p-  192.168.94.99

robots.txt是位于网站根目录下的纯文本文件,会导致敏感信息泄露,所以这是一个很重要的提示信息,提示目录下面有一个secret.txt文件,我们访问一下,发现是一大串加密信息,这很像或者很可能就是base64加密后的密钥,既然上面给了我们用户名,那么现在发现的这个密钥也很可能就是登录ssh的密钥。

信息中robots.txt文件提示disallowed entry (禁止访问)/secret.txt

但是为什么我仍然能够访问这个文件,因为:robots.txt的作用对象是爬虫,限制爬取敏感信息,但不限于普通用户手动访问,以及curl或者nmap等渗透测试工具。

robots.txt ≠ 访问权限控制

  • robots.txt 只是告诉爬虫“不要索引”,但不会阻止访问

  • 真正的访问控制 应该由以下方式实现:

    • HTTP 认证(如 401 Unauthorized)

    • 服务器权限(如 Apache/Nginx 的 Deny from all

    • 防火墙规则(如 IP 白名单)

错误认知

Disallow: /secret.txt 表示这个文件被保护,无法访问。”
正确认知
Disallow: /secret.txt 只是告诉搜索引擎不要索引它,但文件仍可被直接访问。”

base64加密特征

  • 大写字母A-Z

  • 小写字母a-z

  • 数字0-9

  • 两个符号+ 和 /

  • 填充符=(用于末尾补位)

判断base64最快速的方法就是查看末尾是否有==,虽然很大可能是的,但也不保证不会是其他的加密。

echo输出这个密钥 管道符 | 隔开并以base64 -d 解码  > 重定向输出到id_rsa文件中,这个文件是我随便起名的,也是空的,即便没有这个文件,也可以在使用时同时创建。

 查看一下解码后的内容

 将它赋予仅所有者可读写,其他用户无权限。

chmod 600 id_rsa

拿到系统立足点

sudo ssh oscp@192.168.94.99 -i id_rsa

 

 此时,你需要输入一些命令,来手工枚举一些用户的信息,这是渗透测试中必不可少的关键操作,比如whoami我是谁,oscp用户,id的用户,主组,属组以及附加组等等,pwd查看所处位置,以及一些系统信息等等,ls -al 查看并列出所有以及隐藏的文件。

suid提权

寻找根目录下是拥有特殊权限的文件,有很多提权的方式,我们目前就拿最常见的一个使用。

find / -perm -u=s -type f 2>/dev/null

部分作用
find /从根目录 / 开始递归搜索。
-perm -u=s查找 SUID 位被设置 的文件。
-type f仅搜索普通文件(排除目录、设备文件等)。
2>/dev/null忽略所有错误信息(如权限不足)。

/usr/bin/bash -p #用户与系统交互的shell环境

提权原理

suid机制:若/usr/bin/bash 的所有者是root且设置了suid位(-rwsr-xr-x),普通用户运行它时会临时获得权限

-p:告诉bash保留当前用户的权限,不重置为实际用户,当bash被设置为suid程序是,使用-p可以继承该权限。(默认情况下,bash会丢弃suid权限,但-p参数会强制保留权限,从而维持root身份)

 flag.txt(个人习惯,加密成base64)

ZDczYjA0YjBlNjk2YjA5NDUyODNkZWZhM2VlZTQ1MzgK

总结:这个靶机虽然简单,但是也让我们深刻理解信息收集的重要性,在前期关键点还是在于如何正确的使用工具进行信息收集,以及后期拿到系统立足点后进行提权,都需要掌握细节上的处理,我就是学到了什么讲什么,或许讲的不够全面,但是以及尽量的去做好和优化了,最后,希望你看完这篇文章,能有所收获,加强自己的能力和提升自己的思维方式。

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

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

相关文章

传感器数据处理笔记

里程计模型&#xff1a; 两轮差分地盘的运动学模型三轮全向底盘的运动学模型航迹推算&#xff08;Dead Reckoning&#xff09; 里程计标定 线性最小二乘的基本原理最小二乘的直线拟合最小二乘在里程计标定中的应用 差分底盘的优势就是&#xff1a; 结构简单便宜&#xff0…

Spring的循环依赖问题和解决方案

在Spring框架中&#xff0c;循环依赖指的是两个或多个Bean之间相互依赖&#xff0c;形成闭环。例如&#xff0c;Bean A依赖于Bean B&#xff0c;而Bean B又依赖于Bean A。这种情况如果处理不当&#xff0c;会导致应用程序无法正常启动。 形成原因 构造函数注入&#xff1a;当使…

PDF转换工具xpdf-tools-4.05

XPDF是一个开源的PDF查看、提取和转换工具套件&#xff0c;使用C编写&#xff0c;支持多种操作系统&#xff0c;包括Linux、Unix、OS/2、Windows和Mac OS X‌1。XPDF不仅是一个PDF查看器&#xff0c;还包含多个实用工具&#xff0c;如文本提取器、图像转换器和HTML转换器等‌&a…

Vivado FPGA 开发 | 创建工程 / 仿真 / 烧录

注&#xff1a;本文为 “Vivado FPGA 开发 | 创建工程 / 仿真 / 烧录” 相关文章合辑。 略作重排&#xff0c;未整理去重。 如有内容异常&#xff0c;请看原文。 Vivado 开发流程&#xff08;手把手教学实例&#xff09;&#xff08;FPGA&#xff09; 不完美先生 于 2018-04-…

【PINN】DeepXDE学习训练营(13)——operator-antiderivative_aligned.py

一、引言 随着人工智能技术的飞速发展&#xff0c;深度学习在图像识别、自然语言处理等领域的应用屡见不鲜&#xff0c;但在科学计算、工程模拟以及物理建模方面&#xff0c;传统的数值方法仍然占据主导地位。偏微分方程&#xff08;Partial Differential Equations, PDEs&…

NPP库中libnppc模块介绍

1. libnppc 模块简介 libnppc 是 NVIDIA Performance Primitives (NPP) 的 核心基础模块,提供跨模块的通用数据类型、内存管理和基础运算功能,不直接实现图像或信号处理算法,而是为其他模块(如 libnppi、libnpps)提供支持。 主要功能包括: 基础数据类型定义(如 Npp8u、…

#基于PCL的多平面分割系统技术文档

多平面分割系统技术文档 一、数据结构定义 /*** @brief 平面分割结果结构体* @param coefficients 平面方程系数(ax+by+cz+d=0)* @param cloud 属于该平面的点云子集* @param centroid 平面质心坐标(齐次坐标)* @param plane_id 平面编号(主平面为1)*/ struct PlaneSegmentRes…

PyTorch_张量拼接

张量的拼接操作在神经网络搭建过程中是非常常用的方法&#xff0c;例如&#xff1a;残差网络&#xff0c;注意力机制中都使用张量拼接。 torch.cat 函数的使用 可以将两个张量根据指定的维度拼接起来。 import torch import numpy as np def test01():data1 torch.randint(…

【SQL触发器、事务、锁的概念和应用】

【SQL触发器、事务、锁的概念和应用】 1.触发器 (一)触发器概述 1.触发器的定义 触发器(Trigger)是一种特殊的存储过程,它与表紧密相连,可以是表定义的一部分。当预定义的事件(如用户修改指定表或者视图中的数据)发生时,触发器会自动执行。 触发器基于一个表创建,…

设计模式每日硬核训练 Day 17:中介者模式(Mediator Pattern)完整讲解与实战应用

&#x1f504; 回顾 Day 16&#xff1a;责任链模式小结 在 Day 16 中&#xff0c;我们学习了责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;&#xff1a; 将请求沿链传递&#xff0c;节点可选择处理或传递下一节点。实现了请求发送者与多个处理者的解耦…

如何提升个人情商?

引言 提升个人情商&#xff08;EQ&#xff09;是一个持续的自我修炼过程&#xff0c;涉及自我认知、情绪管理、人际沟通等多个方面。以下是一些具体且可实践的方法&#xff0c;帮助你逐步提升情商&#xff1a; 一、提升自我觉察能力 1. 记录情绪日记 每天回顾自己的情绪…

STM32Cube-FreeRTOS任务调度与任务管理-笔记

STM32Cube-FreeRTOS任务调度与任务管理-笔记 一、任务调度机制1.1 调度算法类型 二、抢占式调度实现与分析2.1 时间片轮转机制2.2 调度触发条件2.3 抢占式调度例子 三、合作式调度实现3.1 核心逻辑3.1 合作式调度例子 四、任务管理函数详解4.1 任务创建4.1.1 动态创建任务4.1.2…

对称加密算法(AES、ChaCha20和SM4)Python实现——密码学基础(Python出现No module named “Crypto” 解决方案)

文章目录 一、对称加密算法基础1.1 对称加密算法的基本原理1.2 对称加密的主要工作模式 二、AES加密算法详解2.1 AES基本介绍2.2 AES加密过程2.3 Python中实现AES加密Python出现No module named “Crypto” 解决方案 2.4 AES的安全考量 三、ChaCha20加密算法3.1 ChaCha20基本介…

MATLAB图像加密案例

下面是一个使用 MATLAB 编写的简单图像块置乱加密/解密程序,主要利用了函数来组织代码。 这个程序通过将图像分割成小块,然后根据一个密钥(用于随机数生成器种子)打乱这些块的顺序来实现加密。解密过程则使用相同的密钥恢复原始块顺序。 核心思想: 分块: 将图像划分为 …

阿里云服务器全栈技术指导手册(2025版)

阿里云服务器全栈技术指导手册&#xff08;2025版&#xff09; 一、基础配置与核心架构设计 1. 精准实例选型策略 • 通用计算场景&#xff1a;选择ECS通用型&#xff08;如ecs.g7&#xff09;实例&#xff0c;搭载第三代Intel Xeon处理器&#xff0c;适合Web应用、中小型数…

word批量转pdf工具

word批量转pdf工具 图片 说到了办公&#xff0c;怎能不提PDF转换哦&#xff1f; 这是一款一键就可以批量word转换为PDF的小工具&#xff0c;简直是VB界的一股清流。 图片 操作简单到不行&#xff0c;只要把需要转换的word文件和这个工具放在同一个文件夹里&#xff0c;双击…

C++类_协变返回类型

协变返回类型定义 在 C11 中&#xff0c;协变返回类型是指在基类和派生类的虚函数重写时&#xff0c;派生类中重写的虚函数的返回类型可以是基类中对应虚函数返回类型的派生类型。也就是说&#xff0c;当基类的虚函数返回一个基类指针或引用时&#xff0c;派生类中重写该虚函数…

补充:建立实体类与数据表的映射关系

目录 前言 1 成员变量数据类型和字段类型 保持对应 2 成员变量的变量名&#xff0c;应采用小驼峰命名法 3 数据表中的主键如id 应采用自增方式 4 数据表中的时间类型数据与实体类中的时间类型的变量无法实现自动映射可以使用JsonFormat 注解 4.1 配置全局时间处理器&#x…

HTML/CSS 魔法第二弹:会逃跑的调皮按钮(悬停自动闪避)

引言 在网页设计中&#xff0c;交互性是吸引用户的关键因素之一。普通的按钮在用户悬停时可能只是颜色或样式发生改变&#xff0c;但今天我们要创造一个 “调皮” 的按钮&#xff0c;当用户鼠标悬停在上面时&#xff0c;它会自动闪避&#xff0c;仿佛在和用户玩游戏。本文将详…

**Java面试:技术大比拼**

互联网大厂Java面试&#xff1a;一场严肃与搞笑交织的技术拷问 场景&#xff1a;互联网大厂面试间 面试官&#xff08;严肃&#xff09;&#xff1a;请坐。马小帅&#xff0c;我们今天主要考察一下你在Java技术栈上的掌握程度&#xff0c;以及如何将这些技术应用于实际业务场景…