当前位置: 首页 > news >正文

【网络安全/CTF】unseping 江苏工匠杯

该题考察序列化反序列化及Linux命令执行相关知识。

题目

<?php
highlight_file(__FILE__);class ease{private $method;private $args;function __construct($method, $args) {$this->method = $method;$this->args = $args;}function __destruct(){if (in_array($this->method, array("ping"))) {call_user_func_array(array($this, $this->method), $this->args);}} function ping($ip){exec($ip, $result);var_dump($result);}function waf($str){if (!preg_match_all("/(\||&|;| |\/|cat|flag|tac|php|ls)/", $str, $pat_array)) {return $str;} else {echo "don't hack";}}function __wakeup(){foreach($this->args as $k => $v) {$this->args[$k] = $this->waf($v);}}   
}$ctf=@$_POST['ctf'];
@unserialize(base64_decode($ctf));
?>

开门见山给出代码,考察代码分析能力。

首先,代码定义了一个名为ease的类,其中__construct()接收两个参数$method$args,并将它们赋值给对应的属性。__destruct()在对象销毁时自动调用。它首先检查$method是否在可调用的方法数组中,如果是,则使用call_user_func_array()函数调用ping()方法,并将$args作为参数传递进去。

方法ping($ip)接收一个参数$ip,使用exec()函数执行$ip命令,并将结果存储在$result数组中,最后通过var_dump()打印出来。

方法waf($str)用于简单的Web应用防火墙(WAF)功能。它使用正则表达式检测是否包含一些特定的关键字,如|&;/catflagtacphpls等。如果不包含这些关键字,则返回原始字符串;否则,输出"don’t hack"。

__wakeup()是一个魔术方法,用于在反序列化对象时自动调用。它遍历$args数组,并对其中的每个元素调用waf()方法进行过滤。

也就是说,代码通过接收名为ctf的POST参数,对其进行base64解码并反序列化。

那么思路就很清晰了:构造可进行命令执行的ping命令,并经过序列化、base64加密后赋值给参数ctf。由于ctf在解码后会被反序列化,而反序列化时会执行wakeup魔术方法,即反序列化时会对ping命令中的关键字进行过滤来限制命令执行。所以我们可以使用双引号闭合等的方式进行绕过。

查看目录文件:

在这里插入图片描述
结果如下:

在这里插入图片描述
接下来就是访问flag_1s_here,由于flag被过滤,用双引号绕过。空格被过滤,用IFS进行绕过。(在PHP中,${}语法是用于取变量的值,并可以在花括号中使用任意的表达式,IFS默认为空格)

构造POC后回显如下:

在这里插入图片描述
传参:

在这里插入图片描述
那么接下来要做的就是打印php中的内容

cat flag_1s_here /flag_831b69012c67b35f.php

变化为

c""at${IFS}f""lag_1s_here$(printf${IFS}"\57")f""lag_831b69012c67b35f.p""hp

$()用于执行命令并获取其输出结果,这里将 ASCII 码为 57 的字符 / 通过 printf 命令输出。

在这里插入图片描述
传参:

在这里插入图片描述

相关文章:

【网络安全/CTF】unseping 江苏工匠杯

该题考察序列化反序列化及Linux命令执行相关知识。 题目 <?php highlight_file(__FILE__);class ease{private $method;private $args;function __construct($method, $args) {$this->method $method;$this->args $args;}function __destruct(){if (in_array($thi…...

鼠标悬浮在树组件节点上展示当前节点名称

方法一&#xff1a;使用CSS样式 在树组件的模板中&#xff0c;为每个节点的外层元素绑定一个类名&#xff0c;例如"tree-node"&#xff0c;并设置一个自定义属性来保存节点名称。 <el-tree v-if"showCheck" ref"treeRef" :data"treeDa…...

构建创新学习体验:企业培训系统技术深度解析

企业培训系统在现代企业中发挥着越来越重要的作用&#xff0c;它不仅仅是传统培训的延伸&#xff0c;更是技术创新的结晶。本文将深入探讨企业培训系统的关键技术特点&#xff0c;并通过一些简单的代码示例&#xff0c;展示如何在实际项目中应用这些技术。 1. 前端技术&#…...

云计算:现代技术的基本要素

众所周知&#xff0c;在儿童教育的早期阶段&#xff0c;幼儿园都会传授塑造未来行为的一些基本准则。 今天&#xff0c;我们可以以类似的方式思考云计算&#xff1a;它已成为现代技术架构中的基本元素。云现在在数字交互、安全和基础设施开发中发挥着关键作用。云不仅仅是另一…...

(1)(1.11) SiK Radio v2(一)

文章目录 前言 1 概述 2 特点 3 状态LED灯 前言 SiK 遥测无线电是在自动驾驶仪和地面站之间建立遥测连接的最简单方法之一。本文提供了如何连接和配置无线电的基本用户指南。 3DR Radio v2&#xff08;SiKRadio 的消费者版本&#xff09; &#xff01;Note 本页面以前的…...

视频号视频怎么保存到手机相册?

在微信视频号中看到喜欢的视频&#xff0c;想要缓存下载到手机&#xff0c;却怎么也找不到办法。很多朋友会选择去录屏&#xff0c;但保存下来的视频实在是不美观&#xff0c;而且费时费力&#xff01;着实没必要&#xff01;下面给大家推荐一款亲测有效的微信视频号视频下载方…...

【svn】win11最新svn每天自动化定时update、commit,隐藏窗口,定时脚本编写

本文使用schtasks结合bat脚本实现全自动svn update以及commit操作。执行时隐藏cmd窗口&#xff0c;全自动后台执行。 执行脚本 写脚本参考了网上很多文章&#xff0c;但是这些文章的方法都有问题或者已经失效&#xff0c;比如&#xff1a; 老版本的bat脚本&#xff0c;使用v…...

【YOLO系列】YOLOv3代码详解(四):模型脚本model.py

前言 以下内容仅为个人在学习人工智能中所记录的笔记&#xff0c;先将目标识别算法yolo系列的整理出来分享给大家&#xff0c;供大家学习参考。 本文仅对YOLOV3代码中关键部分进行了注释&#xff0c;未掌握基础代码的铁汁可以自己百度一下。 若文中内容有误&#xff0c;希望大家…...

Elasticsearch可视化平台Kibana [ES系列] - 第498篇

历史文章&#xff08;文章累计490&#xff09; 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 全…...

Python深度学习029:pytorch中常用的模块或方法

PyTorch是一个广泛使用的深度学习库,提供了许多用于构建和训练神经网络的模块和方法。下面是一些PyTorch中常用的模块和方法的简要介绍: PyTorch常用模块和方法 torch 用途:PyTorch的基础模块,提供了多种数学运算功能。常用方法: torch.tensor():创建张量torch.randn():…...

MongoDB创建和查询视图(二)

目录 基于$lookup创建关联查询视图 创建带有默认字符序的视图 字符序 创建视图 视图中的字符序 基于$lookup创建关联查询视图 基于$lookup命令&#xff0c;通过集合的关联查询&#xff0c;用户可以创建基于两个集合的视图并查询视图数据。应用在构建查询时&#xff0c;无需…...

【MYSQL】MYSQL 的学习教程(七)之 慢 SQL 优化思

1. 慢 SQL 优化思路 慢查询日志记录慢 SQLexplain 分析 SQL 的执行计划profile 分析执行耗时Optimizer Trace 分析详情确定问题并采用相应的措施 1. 慢查询日志记录慢 SQL 如何定位慢SQL呢&#xff1f; 我们可以通过 慢查询日志 来查看慢 SQL。 ①&#xff1a;开启慢查询日志…...

iOS - 真机调试的新经验

文章目录 获取真机 UDIDPlease reconnect the device.iOS 开发者模式Fetching debug symbols 很久没有在真机运行 iOS 测试了&#xff0c;今天帮忙调试&#xff0c;发现很多东西都变了&#xff0c;有些东西也生疏了&#xff0c;在这里记录下。 获取真机 UDID 创建Profile 需要…...

thinkphp6.0的workerman在PHP8.0下报错

一、我先升级了thinkphp6.0到最新版本&#xff1a; composer update topthink/framework二、结果提示我composer版本过低&#xff0c;需要升级到2&#xff0c;于是我又升级了composer composer self-update 三、我又升级了workerman: composer require topthink/think-work…...

SQL语句分类

关系分类 SQL区分为三类关系 表 在数据库中存储&#xff0c;可以对其进行增删改查 视图 通过计算定义的关系&#xff0c;并不在数据库中存储&#xff0c;只在需要的使用进行构造 临时表 在执行查询或更新时由SQL程序临时构造的&#xff0c;处理结束后就会删除 语言分类 数据查询…...

C# Onnx yolov8 pokemon detection

目录 效果 模型信息 项目 代码 下载 C# Onnx yolov8 pokemon detectio 效果 模型信息 Model Properties ------------------------- date&#xff1a;2023-12-25T17:55:44.583431 author&#xff1a;Ultralytics task&#xff1a;detect license&#xff1a;AGPL-3.0 h…...

Flink电商实时数仓(六)

交易域支付成功事务事实表 从topic_db业务数据中筛选支付成功的数据从dwd_trade_order_detail主题中读取订单事实数据、LookUp字典表关联三张表形成支付成功宽表写入 Kafka 支付成功主题 执行步骤 设置ttl&#xff0c;通过Interval join实现左右流的状态管理获取下单明细数据…...

本地部署Jellyfin影音服务器并实现远程访问内网影音库

文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5. 结语 1. 前言 随着移动智能设备的普及&#xff0c;各种各样的使用需求也被开发出来&…...

【React Native】第一个Android应用

第一个Android应用 环境TIP开发工具环境及版本要求建议官方建议 安装 Android Studio首次安装模板选择安装 Android SDK配置 ANDROID_HOME 环境变量把一些工具目录添加到环境变量 Path[可选参数] 指定版本或项目模板 运行使用 Android 模拟器编译并运行 React Native 应用修改项…...

解决IOS transform rotate后文字无法显示,backface-visibility导致@click事件失效

问题一&#xff1a;IOS transform rotate后文字无法显示 网上搜到可以用backface-visibility:hidden来解决&#xff0c;这样做文字是出来了&#xff0c;但是click事件无效了。 问题二&#xff1a;backface-visibility导致click事件失效 在Vue中使用backface-visibility和cli…...

从MobileNet到FasterNet:一个ARM安卓开发者的轻量级模型选型与部署实战笔记

从MobileNet到FasterNet&#xff1a;ARM安卓开发者的轻量级模型选型与部署实战 在移动端AI应用开发中&#xff0c;模型选型往往是一场精度与速度的博弈。作为一名长期奋战在ARM平台部署一线的工程师&#xff0c;我经历过太多次这样的场景&#xff1a;产品经理要求"既要实时…...

别再乱接Type-C了!手把手教你设计一个5V/5A的稳定电源模块(附电路图)

5V/5A Type-C电源模块实战设计指南&#xff1a;从选型到避坑全解析 Type-C接口凭借其正反插拔的便利性&#xff0c;已成为现代电子设备的标配。但许多DIY爱好者在自制Type-C电源模块时&#xff0c;常遇到供电不稳、接口烧毁甚至设备损坏的问题。本文将带你从零设计一个稳定可靠…...

SDXL 1.0电影级绘图工坊真实案例:文化遗产数字化重建与风格复原实践

SDXL 1.0电影级绘图工坊真实案例&#xff1a;文化遗产数字化重建与风格复原实践 想象一下&#xff0c;你面前有一张因年代久远而模糊不清的古建筑照片&#xff0c;或是仅存于文字描述中的历史场景。如何将它们清晰地、生动地、甚至以不同艺术风格再现出来&#xff1f;这曾是考…...

OPCUA测试服务器权限问题排查与修复指南

1. 遇到BadUserAccessDenied错误怎么办&#xff1f; 最近在搭建OPCUA测试服务器时&#xff0c;不少小伙伴都遇到了BadUserAccessDenied这个烦人的错误。这个错误代码0x801f0000就像一扇紧闭的大门&#xff0c;明明服务器就在眼前&#xff0c;却因为权限问题无法访问关键数据。作…...

4步打造高效能开源路由器:OpenWrt固件安装指南

4步打造高效能开源路由器&#xff1a;OpenWrt固件安装指南 【免费下载链接】openwrt openwrt编译更新库X86-R2C-R2S-R4S-R5S-N1-小米MI系列等多机型全部适配OTA自动升级 项目地址: https://gitcode.com/GitHub_Trending/openwrt5/openwrt OpenWrt固件安装是提升R5S设备性…...

OpenClaw性能调优:ollama-QwQ-32B模型批处理与缓存机制实战

OpenClaw性能调优&#xff1a;ollama-QwQ-32B模型批处理与缓存机制实战 1. 为什么需要性能调优&#xff1f; 上周我遇到了一个棘手的问题&#xff1a;需要让OpenClaw自动处理100份PDF文档的摘要生成任务。本以为只是简单的批量调用模型&#xff0c;结果发现处理速度慢得惊人—…...

如何利用系统提示词革新开源项目的AI功能实现

如何利用系统提示词革新开源项目的AI功能实现 【免费下载链接】system_prompts_leaks 项目地址: https://gitcode.com/GitHub_Trending/sy/system_prompts_leaks 在人工智能技术快速发展的今天&#xff0c;系统提示词已成为解锁AI潜能的关键钥匙。对于开源项目而言&…...

除了xfs_repair,你的CentOS7/XFS文件系统自救工具箱里还应该有什么?

构建CentOS7/XFS文件系统全栈自救工具箱&#xff1a;从应急修复到主动防御 当服务器突然拒绝启动&#xff0c;屏幕上跳出"I/O error metadata corruption detected"的红色警告时&#xff0c;大多数管理员的第一反应是抓起xfs_repair这根救命稻草。但真正的系统健壮性…...

BilibiliDown完整指南:三步掌握B站视频批量下载技巧

BilibiliDown完整指南&#xff1a;三步掌握B站视频批量下载技巧 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors/bi/…...

企业级二进制差异算法:bsdiff/bspatch的高效智能更新方案

企业级二进制差异算法&#xff1a;bsdiff/bspatch的高效智能更新方案 【免费下载链接】bsdiff bsdiff and bspatch are libraries for building and applying patches to binary files. 项目地址: https://gitcode.com/gh_mirrors/bs/bsdiff 在软件分发和持续部署领域&a…...