XYNU2024信安杯-REVERSE(复现)
前言
记录记录
1.Can_you_find_me?
签到题,秒了
2.ea_re
快速定位
int __cdecl main_0(int argc, const char **argv, const char **envp)
{int v4; // [esp+0h] [ebp-1A0h]const char **v5; // [esp+4h] [ebp-19Ch]const char **v6; // [esp+8h] [ebp-198h]char v7; // [esp+Ch] [ebp-194h]int i; // [esp+D4h] [ebp-CCh]int v9; // [esp+E0h] [ebp-C0h]int v10[24]; // [esp+ECh] [ebp-B4h]char v11; // [esp+14Fh] [ebp-51h]char v12[36]; // [esp+178h] [ebp-28h]v11 = 0;v10[0] = 1;v10[1] = 4;v10[2] = 14;v10[3] = 10;v10[4] = 5;v10[5] = 36;v10[6] = 23;v10[7] = 42;v10[8] = 13;v10[9] = 19;v10[10] = 28;v10[11] = 13;v10[12] = 27;v10[13] = 39;v10[14] = 48;v10[15] = 41;v10[16] = 42;v10[17] = 26;v10[18] = 20;v10[19] = 59;v10[20] = 4;v10[21] = 0;printf("plz enter the flag:");while ( 1 ){v7 = getch();v12[v11] = v7;if ( !v7 || v12[v11] == 13 )break;if ( v12[v11] == 8 ){printf("\b\b");--v11;}else{printf("%c", v12[v11++]);}}v9 = 0;for ( i = 0; i < 17; ++i ){if ( v12[i] != byte_415768[v10[i]] )v9 = 1;}if ( v12[17] != 49 || v12[18] != 48 || v12[19] != 50 || v12[20] != 52 || v12[21] != 125 )v9 = 1;v12[v11] = 0;printf("\r\n");if ( v9 ){printf("u r wrong\r\n\r\n");main(v4, v5, v6);}else{printf("u r right!\r\n");}system("pause");return 0;
}
分析一波
ok,开始提取字符
写一个脚本
# 给定的字符串和v10数组
aSkfxeeftFGyryg = "sKfxEeft}f{gyrYgthtyhifsjei53UUrrr_t2cdsef66246087138\\0087138"
v10 = [1, 4, 14, 10, 5, 36, 23, 42, 13, 19, 28, 13, 27, 39, 48, 41, 42]
ending = "1024}"# 构建flag
flag = ""
for index in v10:if index < len(aSkfxeeftFGyryg):flag += aSkfxeeftFGyryg[index]else:print(f"Index {index} is out of range for the given string.")# 如果需要,可以在这里处理超出范围的情况# 添加已知的结尾字符
flag += endingprint("Possible flag:", flag)
输出
完成
3.rere000
打开题目附件,发现是python2.x的字节码
0 LOAD_GLOBAL 0 (raw_input)3 LOAD_CONST 1 ('plz input your flag:')6 CALL_FUNCTION 19 STORE_FAST 0 (a)5 12 LOAD_CONST 2 (0)15 BUILD_LIST 118 LOAD_GLOBAL 1 (len)21 LOAD_FAST 0 (a)24 CALL_FUNCTION 127 BINARY_MULTIPLY 28 STORE_FAST 1 (b)6 31 LOAD_CONST 3 (68)34 LOAD_CONST 4 (5)37 LOAD_CONST 5 (164)40 LOAD_CONST 6 (100)43 LOAD_CONST 7 (231)46 LOAD_CONST 8 (228)49 LOAD_CONST 9 (175)52 LOAD_CONST 10 (36)55 LOAD_CONST 11 (142)58 LOAD_CONST 9 (175)61 LOAD_CONST 12 (78)64 LOAD_CONST 13 (206)67 LOAD_CONST 14 (4)70 LOAD_CONST 15 (45)73 LOAD_CONST 11 (142)76 LOAD_CONST 16 (174)79 LOAD_CONST 17 (238)82 LOAD_CONST 5 (164)85 LOAD_CONST 15 (45)88 LOAD_CONST 18 (14)91 LOAD_CONST 9 (175)94 LOAD_CONST 19 (46)97 LOAD_CONST 17 (238)100 LOAD_CONST 15 (45)103 LOAD_CONST 5 (164)106 LOAD_CONST 16 (174)109 LOAD_CONST 10 (36)112 LOAD_CONST 9 (175)115 LOAD_CONST 15 (45)118 LOAD_CONST 20 (196)121 LOAD_CONST 20 (196)124 LOAD_CONST 12 (78)127 LOAD_CONST 9 (175)130 LOAD_CONST 10 (36)133 LOAD_CONST 19 (46)136 LOAD_CONST 17 (238)139 LOAD_CONST 20 (196)142 LOAD_CONST 13 (206)145 LOAD_CONST 12 (78)148 LOAD_CONST 12 (78)151 LOAD_CONST 3 (68)154 LOAD_CONST 21 (39)157 BUILD_LIST 42160 STORE_FAST 2 (c)7 163 LOAD_GLOBAL 1 (len)166 LOAD_FAST 0 (a)169 CALL_FUNCTION 1172 LOAD_CONST 22 (42)175 COMPARE_OP 3 (!=)178 POP_JUMP_IF_FALSE 1908 181 LOAD_CONST 23 ('wrong length')184 PRINT_ITEM 185 PRINT_NEWLINE 9 186 LOAD_CONST 2 (0)189 RETURN_VALUE 10 >> 190 SETUP_LOOP 117 (to 310)193 LOAD_GLOBAL 2 (range)196 LOAD_GLOBAL 1 (len)199 LOAD_FAST 0 (a)202 CALL_FUNCTION 1205 CALL_FUNCTION 1208 GET_ITER >> 209 FOR_ITER 97 (to 309)212 STORE_FAST 3 (i)11 215 LOAD_GLOBAL 3 (ord)218 LOAD_FAST 0 (a)221 LOAD_FAST 3 (i)224 BINARY_SUBSCR 225 CALL_FUNCTION 1228 LOAD_CONST 24 (3)231 BINARY_RSHIFT 232 LOAD_GLOBAL 3 (ord)235 LOAD_FAST 0 (a)238 LOAD_FAST 3 (i)241 BINARY_SUBSCR 242 CALL_FUNCTION 1245 LOAD_CONST 4 (5)248 BINARY_LSHIFT 249 BINARY_XOR 250 LOAD_CONST 25 (255)253 BINARY_AND 254 LOAD_FAST 1 (b)257 LOAD_FAST 3 (i)260 STORE_SUBSCR 12 261 LOAD_FAST 1 (b)264 LOAD_FAST 3 (i)267 DUP_TOPX 2270 BINARY_SUBSCR 271 LOAD_CONST 26 (136)274 INPLACE_XOR 275 ROT_THREE 276 STORE_SUBSCR 13 277 LOAD_FAST 1 (b)280 LOAD_FAST 3 (i)283 BINARY_SUBSCR 284 LOAD_FAST 2 (c)287 LOAD_FAST 3 (i)290 BINARY_SUBSCR 291 COMPARE_OP 3 (!=)294 POP_JUMP_IF_FALSE 20914 297 LOAD_CONST 27 ('wrong')300 PRINT_ITEM 301 PRINT_NEWLINE 15 302 LOAD_CONST 2 (0)305 RETURN_VALUE 306 JUMP_ABSOLUTE 209>> 309 POP_BLOCK 16 >> 310 LOAD_CONST 28 ('win')313 PRINT_ITEM 314 PRINT_NEWLINE 315 LOAD_CONST 0 (None)318 RETURN_VALUE
然后转换一下
def decrypt_flag():# 加密后的数组c = [68, 5, 164, 100, 231, 228, 175, 36, 142, 175, 78, 206, 4, 45, 142, 174, 238, 164, 45, 14, 175, 46, 238, 45, 164, 174, 36, 175, 45, 196, 196, 78, 175, 36, 46, 238, 196, 206, 78, 78, 68, 39]flag = ''for val in c:# 第一步:反向异或136val ^= 136# 第二步:尝试所有可能的字符值(0-255)# 找到经过原始加密算法后能得到当前值的字符for x in range(256):if (x >> 3) ^ ((x << 5) & 255) == val:flag += chr(x)breakreturn flagif __name__ == "__main__":flag = decrypt_flag()print("解密后的flag是:", flag)
输出一下,解密逻辑就是根据原来加密后数组进行变一个个的逆向暴力破解,然后才能得出正确答案
flag{c9e0962d-013a-4953-a1e9-bb69e53b266f}
4.神奇的小按钮(题目有点小问题)
查壳发现无壳进入ida64中查壳字符串
分析可知
那么对flag[15:]进行与7逐字符异或后提交
写个脚本
encrypted = 'KEYmd57e0cad17016b0>?45?f7c>0>4a>1c3a0'
result = encrypted[:15] # 保持前15位不变# 对第15位之后的字符进行异或运算
for c in encrypted[15:]:result += chr(ord(c) ^ 7) # 与7异或得到原始字符print(result)
输出
KEYmd57e0cad17061e798328a0d9793f96d4f7
然后提交即可
相关文章:

XYNU2024信安杯-REVERSE(复现)
前言 记录记录 1.Can_you_find_me? 签到题,秒了 2.ea_re 快速定位 int __cdecl main_0(int argc, const char **argv, const char **envp) {int v4; // [esp0h] [ebp-1A0h]const char **v5; // [esp4h] [ebp-19Ch]const char **v6; // [esp8h] [ebp-198h]char v7;…...

MySQL的MVCC【学习笔记】
MVCC 事务的隔离级别分为四种,其中Read Committed和Repeatable Read隔离级别,部分实现就是通过MVCC(Multi-Version Concurrency Control,多版本并发控制) 版本链 版本链是通过undo日志实现的, 事务每次修改…...
罗德FSP13 FSP40频谱分析仪频率13.6GHz
罗德FSP13 FSP40频谱分析仪频率13.6GHz 附加的功能: 分辨率带宽:1 Hz 至 10 MHz 显示的平均噪音水平:-155 dBm (1 Hz) 相位噪声:10 kHz 时 -113 dB (1 Hz) 附加滤波器:100 Hz 至 5 MHz 的通道滤波器和 RRC 滤波器、…...
腾讯PC客户端面经
1.有关虚函数调用问题 空指针可以在特定的情况下去调用非虚函数,因为非虚函数在编译阶段就可以确定地址,调用的时候this指针传的是nullptr没有问题,不需要依赖对象的创建。 空指针不可以去调用虚函数,因为虚函数的调用需要虚表&…...

达梦数据库压力测试报错超出全局hash join空间,适当增加HJ_BUF_GLOBAL_SIZE解决
1.名词解释:达梦数据库中的HJ_BUF_GLOBAL_SIZE是所有哈希连接操作可用的最大哈希缓冲区大小,单位为兆字节(MB) 2.达梦压测报错: 3.找到达梦数据库安装文件 4.压力测试脚本 import http.client import multiprocessi…...

Oracle--SQL性能优化与提升策略
前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 一、导致性能问题的内在原因 系统性能问题的底层原因主要有三个方面: CPU占用率过高导致资源争用和等待内存使用率过高导致内存不足并需…...
如何在Spring Boot中配置自定义端口运行应用程序
Spring Boot 应用程序默认在端口 8080 上运行嵌入式 Web 服务器(如 Tomcat、Jetty 或 Undertow)。然而,在开发、测试或生产环境中,开发者可能需要将应用程序配置为在自定义端口上运行,例如避免端口冲突、适配微服务架构…...

六个能够白嫖学习资料的网站
一、咖喱君的资源库 地址:https://flowus.cn/galijun/share/de0f6d2f-df17-4075-86ed-ebead0394a77 这是一个学习资料/学习网站分享平台,包含了英语、法语、德语、韩语、日语、泰语等几十种外国语言的学习资料及平台,这个网站的优势就是外语…...
破界出海:HR SaaS平台的全球化实践与组织效能跃升
全球化浪潮下的HR SaaS破局实践 在全球化与数字化双重浪潮的推动下,中国企业出海已从战略选择演变为生存刚需。然而,跨文化管理冲突、多国法律合规风险、复杂薪酬体系与人才发展需求,构成了企业国际化的四大核心挑战。据艾瑞咨询数据&#x…...

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤
以下是在 IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤: 步骤 1:创建 Maven Web 项目 新建项目 File -> New -> Project → 选择 Maven → 勾选 Create from archetype → 选择 maven-archetype-webapp。输入 GroupId(如 com.examp…...

手机打电话时电脑坐席同时收听对方说话并插入IVR预录声音片段
手机打电话时电脑坐席同时收听对方说话并插入IVR预录声音片段 --本地AI电话机器人 前言 书接上一篇,《手机打电话通话时如何向对方播放录制的IVR引导词声音》中介绍了【蓝牙电话SDK示例App】可以实现手机app在电话通话过程中插播预先录制的开场白等语音片段的功能。…...

SpringCloud——负载均衡
一.负载均衡 1.问题提出 上一篇文章写了服务注册和服务发现的相关内容。这里再提出一个新问题,如果我给一个服务开了多个端口,这几个端口都可以访问服务。 例如,在上一篇文章的基础上,我又新开了9091和9092端口,现在…...
Python Transformers 库介绍
Hugging Face 的 Transformers 库是一个用于自然语言处理(NLP)的强大 Python 库,它提供了对各种预训练模型的访问和使用接口。该库具有以下特点和功能: 主要特点 丰富的预训练模型:Transformers 库包含了大量的预训练模型,如 BERT、GPT - 2、RoBERTa、XLNet 等。这些模型…...

string的基本使用
string的模拟实现 string的基本用法string的遍历(三种方式):关于auto(自动推导):范围for: 迭代器普通迭代器(可读可改)const迭代器(可读不可改) string细小知识点string的常见接口引…...

深入解析Mlivus Cloud核心架构:rootcoord组件的最佳实践与调优指南
作为大禹智库的向量数据库高级研究员,同时也是《向量数据库指南》的作者,我在过去30年的向量数据库和AI应用实战中见证了这项技术的演进与革新。今天,我将以专业视角为您深入剖析Mlivus Cloud的核心组件之一——rootcoord,这个组件在系统架构中扮演着至关重要的角色。如果您…...
docker 代理配置冲突问题
问题描述 执行 systemctl show --property=Environment docker 命令看到有如下代理配置 sudo systemctl show --property=Environment docker Environment=HTTP_PROXY=http://127.0.0.1:65001 HTTPS_PROXY=http://127.0.0.1:65001 NO_PROXY=127.0.0.1,docker.io,ghcr.io,uhub…...
Nginx 配置参数全解版:Nginx 反向代理与负载均衡;Nginx 配置规范与 Header 透传实践指南;Nginx 配置参数详解
Nginx 配置参数全解版:Nginx 反向代理与负载均衡;Nginx 配置规范与 Header 透传实践指南;Nginx 配置参数详解 Nginx 反向代理与负载均衡配置,Header 透传到后端应用(参数全解版)一、Nginx 反向代理与负载均…...

Python常用的第三方模块之【pymysql库】操作数据库
pymysql是在Python3.x版本中用于连接MySQL服务器的一个实现库,Python2中则是使用musqldb。 PyMySQL 是一个纯 Python 实现的 MySQL 客户端库,它允许我们直接在 Python 中执行 SQL 语句并与 MySQL 数据库进行交互。下面我们将详细介绍如何使用 PyMySQL 进…...

【Python数据分析】Pandas模块之pd.concat 函数
💭 写在前面:合并多个数据框,收集各种数据,并将其合并为一个数据框进行分析。本章我们介绍 Pandas 库中数据框合并的函数 —— concat。 0x00 引入:数据框的合并操作 合并多个数据框:收集各种数据,并将其合并为一个数据框进行分析。 下面介绍一些常用的 Pandas 库中数…...
矫平机深度解析:操作实务、行业标准与智能化升级
一、精细操作指南:不同材料的矫平参数设定 1. 常见金属矫平参数参考表 材料类型 厚度范围(mm) 辊缝初始值(mm) 矫平速度(m/min) 压力系数(k值) 低碳钢(…...
【高频考点精讲】CSS accent-color属性:如何快速自定义表单控件的颜色?
用CSS accent-color属性3分钟搞定表单控件换肤,原来这么简单! 前几天有个学员问我,checkbox和radio这些表单控件默认样式太丑了,有没有什么办法能快速改颜色?" 我一看这问题就乐了——这不正是CSS accent-color属性的拿手好戏吗?今天咱们就来好好聊聊这个被低估的C…...

C# 综合示例 库存管理系统7 主界面(FormMain)
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的 图99A-22 主界面窗口设计 主界面是多文档界面容器,需要将窗体属性IsMdiContainer设置为True。关于多文档界面编程请参看教程第7.12节《多文档界面》。 主界面并不提…...
vue项目中axios统一或单独控制接口请求时间
先说统一 这里将请求时间统一控制在12秒 // 使用由库提供的配置的默认值来创建实例 // 此时超时配置的默认值是 0 const axiosInstance axios.create()// 覆写库的超时默认值 // 现在,在超时前,所有请求时间统一控制在10秒 axiosInstance.defaults.ti…...
Codeforces Round 1020 (Div. 3) A-D
A. Dr. TC https://codeforces.com/contest/2106/problem/A 题目大意: 对输入字符串每个位置字符依次翻转(1->0 , 0->1) 比如: 101 001 翻转位置1 111 2 100 3 题解: 观察数学特征:ansn…...

系统思考:看清问题背后的结构
组织的挑战,往往不是因为不努力,而是“看不清” 结束了为期两天系统思考课程的第一天,被学员的全情投入深深打动。我们用系统结构图,一步步揭示那些表面看起来“习以为常”的问题: 什么原因跨部门协作总是磕磕绊绊&am…...
netlist
在电子设计自动化(EDA)中,网表(Netlist) 是描述电路设计连接关系的核心数据结构,本质上是电路元件(如逻辑门、晶体管、模块)及其互连关系的 文本化或结构化表示。它是从抽象设计&…...
如何实现Android屏幕和音频采集并启动RTSP服务?
技术背景 在移动直播和视频监控领域,实现高效的屏幕和音频采集并提供流媒体服务是关键技术之一。本文将详细介绍如何基于大牛直播SDK实现Android屏幕和麦克风/扬声器采集,并启动轻量级RTSP服务以对外提供拉流的RTSP URL。在Android平台上,轻…...

Langchain_Agent+数据库
本处使用Agent数据库,可以直接执行SQL语句。可以多次循环查询问题 前文通过chain去联系数据库并进行操作; 通过链的不断内嵌组合,生成SQL在执行SQL再返回。 初始化 import os from operator import itemgetterimport bs4 from langchain.ch…...

QT6 源(45):分隔条 QSplitter 允许程序的用户修改布局,程序员使用 IDE时,就是分隔条的用户,以及其 QSplitter 源代码
(1) (2)本类的继承关系如下,所以说分隔条属于容器: (3)本类的属性: (4) 这是一份 QSplitter 的举例代码,注意其构造函数时候的传参&am…...

Huffman(哈夫曼)解/压缩算法实现
一、文件压缩 哈夫曼压缩算法需要对输入的文件,逐字节扫描,统计出不同字节出现的数量(频率),根据的得到的频率生成一组叶子节点,这些节点存储着<字节信息>和<频率>,通常需要按频率排序后存储在…...