CTF(九)
导言:
本文主要讲述在CTF竞赛网鼎杯中,web类题目AreUSerialz。
靶场链接:BUUCTF在线评测
一,分析代码。
看到了一大段php代码。
<?php// 引入flag.php文件
include("flag.php");// 高亮显示当前文件
highlight_file(__FILE__);// 定义FileHandler类
class FileHandler {// 定义属性protected $op;protected $filename;protected $content;// 构造函数function __construct() {// 初始化属性$op = "1";$filename = "/tmp/tmpfile";$content = "Hello World!";// 调用process方法$this->process();}// 处理方法public function process() {// 根据op属性的值,调用不同的方法if($this->op == "1") {$this->write();} else if($this->op == "2") {$res = $this->read();$this->output($res);} else {$this->output("Bad Hacker!");}}// 写入文件方法private function write() {// 判断filename和content属性是否存在if(isset($this->filename) && isset($this->content)) {// 判断content属性的长度是否超过100if(strlen((string)$this->content) > 100) {$this->output("Too long!");die();}// 调用file_put_contents函数将content属性写入filename属性指定的文件$res = file_put_contents($this->filename, $this->content);// 判断写入是否成功if($res) $this->output("Successful!");else $this->output("Failed!");} else {$this->output("Failed!");}}// 读取文件方法private function read() {$res = "";// 判断filename属性是否存在if(isset($this->filename)) {// 调用file_get_contents函数读取filename属性指定的文件内容$res = file_get_contents($this->filename);}return $res;}// 输出方法private function output($s) {echo "[Result]: <br>";echo $s;}// 析构函数function __destruct() {// 如果op属性的值为2,则将其改为1。if($this->op === "2")$this->op = "1";// 将content属性置空$this->content = "";// 调用process方法$this->process();}}// 定义is_valid函数,判断字符串是否合法
function is_valid($s) {for($i = 0; $i < strlen($s); $i++)if(!(ord($s[$i]) >= 32 && ord($s[$i]) <= 125))return false;return true;
}// 判断是否存在GET参数str
if(isset($_GET{'str'})) {// 获取GET参数str的值$str = (string)$_GET['str'];// 判断str是否合法if(is_valid($str)) {// 反序列化str$obj = unserialize($str);}}
可以知道:
1,这是一个反序列化题目。
2,使用get传参,传参名为:str。
3,flag在flag.php内。
4,代码中使用了is_valid
函数来验证输入字符串的合法性,即传入的str的每个字母的ascii值在32和125之间。
5,根据其中的:
得知传参格式。
二,构造payload。
根据代码内的:
protected $op;protected $filename;protected $content;
可以知道,payload为:
<?phpclass FileHandler {public $op = 2; //根据题意进行的传参public $filename = "flag.php";public $content = "2"; }$q = new FileHandler(); //对其进行反序列化操作
echo(serialize($q));?>
输出结果为:
?str=O:11:"FileHandler":3:{s:2:"op";i:2;s:8:"filename";s:8:"flag.php";s:7:"content";s:1:"2";}
使用hackbar进行传参后:
并无回显。
查看页面源码发现:
相关文章:

CTF(九)
导言: 本文主要讲述在CTF竞赛网鼎杯中,web类题目AreUSerialz。 靶场链接:BUUCTF在线评测 一,分析代码。 看到了一大段php代码。 <?php// 引入flag.php文件 include("flag.php");// 高亮显示当前文件 highlight…...

三种单例实现
1、不继承Mono的单例 实现 使用 注: 使用需要继承BaseManager 泛型填写自己本身 需要实现无参构造函数 2、挂载式的Mono单例 实现 使用 注: 使用需要继承SingletonMono 泛型填写自己本身 需要挂载在unity引擎面板 3、不用挂载式的单例 实现 使…...
Spring XML配置方式和Spring Boot注解方式的详细对照关系
功能/配置项Spring XML配置方式Spring Boot注解方式定义Beanxml <bean id"myBean" class"com.example.MyBean"/>javaBeanpublic MyBean myBean() { return new MyBean(); }注入Beanxml <bean id"myBean" class"com.example.MyBea…...

leetcode 无重复字符串的排列和组合
1.题目要求: 2.题目代码: class Solution { public:vector<string> result;string str;//利用回溯去解决此问题void backtricking(string S,vector<bool>& used){if(str.size() S.size()){result.push_back(str);}//用used去掉重复的排列与组合f…...
7. 配置
三种获取配置的方法 返回 /config/config.php 、/config/autoload/xxx.php 中的值 <?php namespace App\Controller;use Hyperf\Config\Annotation\Value; use Hyperf\Contract\ConfigInterface; use Hyperf\Di\Annotation\Inject; use Hyperf\HttpServer\Annotation\AutoC…...
WPF中Grid、StackPanel、Canvas、WrapPanel的区别
WPF 中的 Grid、StackPanel、Canvas 和 WrapPanel 都是布局控件,用于在用户界面中组织和排列元素,但它们各自有不同的布局行为和用途。以下是它们的主要区别: Grid: Grid 是最灵活的布局控件,类似于 HTML 中的表格&…...
昇思MindSpore进阶教程--开发常见问题
大家好,我是刘明,明志科技创始人,华为昇思MindSpore布道师。 技术上主攻前端开发、鸿蒙开发和AI算法研究。 努力为大家带来持续的技术分享,如果你也喜欢我的文章,就点个关注吧 MindSpore官网提供了一份在使用MindSpore…...

【Linux】Linux进程地址空间
1.程序地址空间分配回顾 在前⾯C语⾔以及C部分介绍过⼆者的内存分配如下图所示: 全局变量区和未初始化全局变量区也被称为数据区,数据区中除了有全局变 量,还有静态变量和常量 使⽤下⾯的代码演示不同的内容所处的地址: #includ…...

创建包含可导入浏览器信任的SSL自签名证书
问题:现在的三大浏览器,chrome、edge、firefox 一般都默认启用https检查,这就要求我们自建的局域网内的网址和其他诸如nextcloud、photoprism、tiddlywiki等应用也必须要有证书。解决方法是使用openssl自己生成一个。由此则会再衍生出一个问题…...

[Windows] 很火的开源桌面美化工具 Seelen UI v2.0.2
最近,一款来自Github的开源桌面美化工具突然在网上火了起来,引发了大家的关注,不少小伙伴纷纷开始折腾了起来。而折腾的目的,无非是为了一点点乐趣而已,至于结果如何,并不是最要紧的,反倒是体验…...

华帝携手抖音头部达人,金牌导演李力持量身打造厨电定制微短剧
10月21日,由华帝独家冠名,金牌导演李力持执导,抖音头部达人逆袭丁姐领衔主演,ATV亚洲电视、知行易达、抖音商城联合出品的24集现代家庭治愈美食定制微短剧《女厨神》上线抖音。 该剧讲述了热爱生活和美食的丁姐,为了家…...
监控易监测对象及指标之:JBoss 7.1.x中间件监控
监控易是一款功能全面的监控软件,能够实时追踪和分析各类IT资源的性能数据,提供及时的故障预警和性能报告。本文将对监控易针对JBoss 7.1.x中间件的监控指标进行深入解读,以帮助用户更好地理解和应用这些数据。 JBoss 7.1.x作为一款广泛使用的…...
Java 模拟退火算法
模拟退火算法(Simulated Annealing, SA)是一种用于全局优化的启发式搜索算法,它模仿了物理学中金属退火的过程。该算法在搜索空间中逐步降低“温度”,以寻找全局最优解。下面是一个用Java实现模拟退火算法的简单示例。 假设我们要…...

LeetCode[中等] 80. 删除有序数组中的重复项 II
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 public cl…...
机器学习5
1.1 决策树的定义 决策树是用于分类和回归的机器学习算法。它通过一系列的“是或否”的决策来分类数据。每个决策是基于数据的某个属性进行的,如“色泽是青绿吗?”。决策树的核心是通过树状结构,将一个复杂的问题逐步拆解为多个简单的二元问…...

【Python技术】利用akshare定时获取股票实时价,低于5日线钉钉通知报警
今天看了下大盘,临时有个想法,我想知道某个股票回踩5日线的价格,如果实时价格低于5日线通过钉钉报警通知我。 说干就干,临时撸了下简单的代码,仅做演示。 1、计算5日线思路 很多券商软件的MA5价格是近5个交易日收盘…...

LINUX1.2
1.一切都是一个文件 (硬盘) 2.系统小型 轻量型,300个包 3.避免令人困惑的用户界面 ------------------> 就是没有复杂的图形界面 4.不在乎后缀名,有没有都无所谓,不是通过后缀名来定义文件的类型(win…...
Proximal Distance Algorithm (近段距离算法)
文章目录 第一篇\section*{近端距离算法(Proximal Distance Algorithm)详解}\subsection*{1. MM原理(Majorization-Minimization Principle)}\subsection*{2. 近端距离算法(Proximal Distance Algorithm)}\…...
如何判断一个数是几位数与这个数是否为回文数并打印出其逆序数
1 问题 判断一个数是几位数与这个数是否为回文数并打印出其逆序数。 2 方法 先输入一个少于五位数的数用int的方法打出这个数的个十百千万的数字再用条件语句else-if来判断这个数是几位数,并打印其逆序数最后判断这个数是否为回文数,打印其数 通过实验、…...
Solon 之 STOMP
一、STOMP 简介 如果直接使用 WebSocket 会非常累,就像用 Socket 编写 Web 应用。没有高层级的交互协议,就需要我们定义应用间所发消息的语义,还需要确保连接的两端都能遵循这些语义。 如 HTTP 在 TCP 套接字之上添加了请求-响应模型层一样…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...

佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...

免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...

客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践
01技术背景与业务挑战 某短视频点播企业深耕国内用户市场,但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大,传统架构已较难满足当前企业发展的需求,企业面临着三重挑战: ① 业务:国内用户访问海外服…...

算法—栈系列
一:删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…...
FTXUI::Dom 模块
DOM 模块定义了分层的 FTXUI::Element 树,可用于构建复杂的终端界面,支持响应终端尺寸变化。 namespace ftxui {...// 定义文档 定义布局盒子 Element document vbox({// 设置文本 设置加粗 设置文本颜色text("The window") | bold | color(…...
Cursor AI 账号纯净度维护与高效注册指南
Cursor AI 账号纯净度维护与高效注册指南:解决限制问题的实战方案 风车无限免费邮箱系统网页端使用说明|快速获取邮箱|cursor|windsurf|augment 问题背景 在成功解决 Cursor 环境配置问题后,许多开发者仍面临账号纯净度不足导致的限制问题。无论使用 16…...