BUUCTF-RE-[ACTF新生赛2020]usualCrypt

news/2025/2/24 20:11:51/文章来源:https://www.cnblogs.com/ylin07/p/18734760

又他妈的是新生赛,我都不是新生了还天天被折磨。
首先查壳分析,然后反编译程序,可以看到程序逻辑还是比较简单的

我们进行一下整理和重命名,可以得到完整的程序逻辑:

int __cdecl main(int argc, const char **argv, const char **envp)
{int v3; // esichar v5[15]; // [esp+8h] [ebp-74h] BYREFchar v6[100]; // [esp+18h] [ebp-64h] BYREFprintf(&unk_40E140);scanf("%s", v6);memset(v5, 0, sizeof(v5));base_64(v6, strlen(v6), v5);v3 = 0;while ( v5[v3] == byte_40E0E4[v3] ){if ( ++v3 > strlen(v5) )goto LABEL_6;}printf(aError);
LABEL_6:if ( v3 - 1 == strlen(byte_40E0E4) )return printf(aAreYouHappyYes);elsereturn printf(aAreYouHappyNo);
}

大概就是读取一个我们的输入,然后将其进行base64转换(为什么是Base64的转换,因为我用AI搜的),得到加密后的字符zMXHz3TIgnxLxJhFAdtZn2fFk3lYCrtPC2l9,我们使用正常的BASE64无法解密。
说明此时,加密逻辑进行了一定的修改,我们进入可以看到其加密逻辑


首先开头一个sub_401000()函数,感觉肯定有问题啊,我们跟进查看

int sub_401000()
{int result; // eaxchar v1; // clfor ( result = 6; result < 15; ++result ){v1 = byte_40E0AA[result];byte_40E0AA[result] = byte_40E0A0[result];byte_40E0A0[result] = v1;}return result;
}

查看数组的内容和程序的逻辑,大概就是对原来的Base64解密进行了一个换表的操作,也就是将"HIJKLMNO"和"QRSTUVWXYZ"进行了新的交换。我们拿到新的字符表ABCDEFQRSTUVWXYPGHIJKLMNOZabcdefghijklmnopqrstuvwxyz0123456789+/=,我们将加密数据和字符表拿到Cyberchef发现还是解不出来,继续往下看,看到最后return了一个sub_401030函数,进去查看其函数逻辑,发现有一个大小写转换的操作:

int __cdecl sub_401030(const char *a1)
{__int64 v1; // raxchar v2; // alv1 = 0i64;if ( strlen(a1) ){do{v2 = a1[HIDWORD(v1)];if ( v2 < 97 || v2 > 122 ){if ( v2 < 65 || v2 > 90 )goto LABEL_9;LOBYTE(v1) = v2 + 32;}else{LOBYTE(v1) = v2 - 32;}a1[HIDWORD(v1)] = v1;
LABEL_9:LODWORD(v1) = 0;++HIDWORD(v1);}while ( HIDWORD(v1) < strlen(a1) );}return v1;
}

至此我们可以解出真正的flag

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

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

相关文章

探秘Transformer系列之(6)--- token

从零开始解析Transformer,目标是:(1) 解析Transformer如何运作,以及为何如此运作,让新同学可以入门;(2) 力争融入一些比较新的或者有特色的论文或者理念,让老鸟也可以有所收获。探秘Transformer系列之(6)--- token 0x00 概述 语言是人类特有的概念。作为一个抽象符号,…

leetcode hot 10

解题思路:滑动窗口问题,关键在于记录之前出现过的字符,当遍历过程中碰到之前出现的,就从之前出现的下一个作为start,实时比较当前值和最长值并赋值,最后返回最长值。java可以采用hashmap记录出现过的字符,value保存它的位置+1的值,作为出现重复的字符的时候的start的参考…

摆脱 Deepseek 服务器繁忙,手把手教你接入火山引擎 API(超详细版)

大家好,我是亿舟。大家最近应该都被 Deepseek 刷屏了,不少人想去试试 Deepseek 有多厉害,但是去到官网,没问几个问题,就弹出来“服务器繁忙,稍后再试”。今天教给大家一个方法,可以在 Cherry Studio 配合上火山引擎的 API,享受满血版、联网搜索、思考不截断的 Deepseek…

【Azure Developer】编写Python SDK代码实现从China Azure中VM Disk中创建磁盘快照Snapshot

问题描述 需要为中国区微软云(China Azure)中的虚拟机磁盘(VM Disk)创建快照, 官方文档中只有az cli(az snapshot create)脚本,并没有介绍使用Python SDK的办法,需要编写代码来实现快照的创建。问题解答 Azure Python SDK 的 Snapshot Class文档提供了参数说明,如 location…

AutoEval

目前文章的共性通过探究 其他方法(多任务学习器)得到的分类器与带原始标签的合成数据集分类器 的相关关系。得出一个可以应用在无标签且含有分布偏移的真实世界数据上,分类效果较好的分类器。【Frechet distance(Auto-eval),Rotation Prediction(Weijian Deng, Stephen …

开学测验——仓库管理系统

以下是项目结构:登录界面:输入不同用户名进入不同角色的主页面管理员:仓库工作人员:

【窃贼】- 2025.2.24

下图为《Balatro》中的一张小丑牌:【窃贼】窃贼是小丑牌中一张独一无二的小丑,其效果为 \(+3\) 出牌次数并失去所有弃牌次数。其能力相当强大,因为 \(+3\) 出牌次数涵盖了非常多的方面。首先 \(+3\) 出牌次数显然可以拉高分数,提升幅度在绝大多数情况下至少带来 \(\times 1…

2025-2 好题

2025-2 好题 目录2025-2 好题UOJ Round 29 B - 数字生命P10063 [SNOI2024] 平方数AGC070C - No StreakAGC070B - Odd Namoriリテラチュアブルーアーカイブ UOJ Round 29 B - 数字生命 首先想到差分,差分后是正的就看成一些起点,负的就看成是一些终点 然后题目就相当于要对每一…

智算超凡| 触想携手DeepSeek,探索工业+AI应用新模式!

近年来,AI赋能工业场景的应用趋势越发明显,尤其DeepSeek大模型凭借强大的多场景理解与生成能力横空出世,瞬间点燃了“工业+AI”应用的无限遐想。一、DeepSeek火出圈,工业AI加速部署以此为契机,触想于日前启动了DeepSeek大模型在其工业一体机、工控机等产品上的多轮对接与本…

【攻防世界】hit_the_core

core文件如果bin文件内容过多,可以用linux的strings命令辅助分析