ciscn2024初赛部分题目复现

news/2025/2/6 16:45:06/文章来源:https://www.cnblogs.com/sK07XdAy/p/18203747

gdb_debug

64位ida反编译,将主要加密部分使用chatgpt写成更容易理解的python形式如下:

def encrypt_string(s):v17 = []for i in range(len(s)):v17.append(ord(s[i]) ^ rand_1[i])ptr = list(range(len(s)))for k in range(len(s) - 1, 0, -1):v18 = rand_2[len(s)-k-1]ptr[k], ptr[v18] = ptr[v18], ptr[k]v31 = []for m in range(len(s)):v31.append(v17[ptr[m]])for n in range(len(s)):v31[n] = rand_3[n] ^ v31[n]for n in range(len(s)):v31[n] = asc_55AE330010A0[n] ^ v31[n]return v31

ida配合kali远程动态调试,扒下来随机数。


以上产生的随机数无法直接得到,只能使用操作前后的数值再次异或得到,其他部分的随机数都有变量存储,可以直接得到数值。
异或前:

异或后:

获得该部分随机数的代码如下:

hex_pairs = ["06^d8", "4a^e0", "5b^19", "14^e8", "c4^cd", "77^9f", "df^6d", "63^65","b5^b8", "82^11", "e0^81", "3c^c8", "4a^6e", "99^d0", "ce^db", "f9^f8","bc^6b", "52^f9", "79^7d", "ca^d2", "19^d6", "3c^d5", "da^0f", "1f^89","2d^1e", "fe^34", "93^6a", "ef^c5", "a3^fd", "2b^c1", "c4^e9", "1a^26","44^d0", "d5^ba", "c2^fa", "04^99", "bf^e7", "ec^06"
]results = []
for pair in hex_pairs:hex1, hex2 = pair.split('^')dec1 = int(hex1, 16)dec2 = int(hex2, 16)result = dec1 ^ dec2results.append(hex(result)[2:].upper())print(results)

这里其实不用一个一个扒下来,随机数种子的设置如下:

v3 = time(0LL);
srand(v3 & 0xF0000000);

也就是说在在 2^28 秒内,随机数都会维持一个相同的序列,时长换算成年,最高位是十万,有生之年都不会变。

另外因为windows和linux下的随机数生成过程不一样,一定要使用linux运行才能得到相同数值。

exp如下:

rand_1 = [0xd9, 0x0f, 0x18, 0xbd, 0xc7, 0x16, 0x81, 0xbe, 0xf8, 0x4a,0x65, 0xf2, 0x5d, 0xab, 0x2b, 0x33, 0xd4, 0xa5, 0x67, 0x98,0x9f, 0x7e, 0x2b, 0x5d, 0xc2, 0xaf, 0x8e, 0x3a, 0x4c, 0xa5,0x75, 0x25, 0xb4, 0x8d, 0xe3, 0x7b, 0xa3, 0x64
]rand_2 = [0x21, 0x00, 0x0a, 0x00, 0x20, 0x1f, 0x0a, 0x1d, 0x09, 0x18,0x1a, 0x0b, 0x14, 0x18, 0x15, 0x03, 0x0c, 0x0a, 0x0d, 0x02,0x0f, 0x04, 0x0d, 0x0a, 0x08, 0x03, 0x03, 0x06, 0x00, 0x04,0x01, 0x01, 0x05, 0x04, 0x00, 0x00, 0x01
]rand_3 = [0xDE, 0xAA, 0x42, 0xFC, 0x09, 0xE8, 0xB2, 0x06, 0x0D, 0x93,0x61, 0xF4, 0x24, 0x49, 0x15, 0x01, 0xD7, 0xAB, 0x04, 0x18,0xCF, 0xE9, 0xD5, 0x96, 0x33, 0xCA, 0xF9, 0x2A, 0x5E, 0xEA,0x2D, 0x3C, 0x94, 0x6F, 0x38, 0x9D, 0x58, 0xEA
]asc_55AE330010A0 = [0xBF, 0xD7, 0x2E, 0xDA, 0xEE, 0xA8, 0x1A, 0x10, 0x83, 0x73,0xAC, 0xF1, 0x06, 0xBE, 0xAD, 0x88, 0x04, 0xD7, 0x12, 0xFE,0xB5, 0xE2, 0x61, 0xB7, 0x3D, 0x07, 0x4A, 0xE8, 0x96, 0xA2,0x9D, 0x4D, 0xBC, 0x81, 0x8C, 0xE9, 0x88, 0x78
]def decrypt_string(s):v31 = []for n in range(len(s)):v31.append(asc_55AE330010A0[n] ^ ord(s[n]))for n in range(len(s)):v31[n] = rand_3[n] ^ v31[n]ptr = list(range(len(s)))for k in range(len(s) - 1, 0, -1):v18 = rand_2[len(s)-k-1]ptr[k], ptr[v18] = ptr[v18], ptr[k]v17 = [None] * len(s)for m in range(len(s)):v17[ptr[m]] = v31[m]result = []for i in range(len(s)):result.append(v17[i] ^ rand_1[i])return results2 = "congratulationstoyoucongratulationstoy"
s2_list = list(s2)result = decrypt_string(s2_list)
flag = ''.join(chr(result[j]) for j in range(len(result)))
print(flag)
# flag{78bace5989660ee38f1fd980a4b4fbcd}

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

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

相关文章

C#连接Access数据库 查询和新增 示例

C#连接Access数据库 查询和新增 示例 项目中需要做一个写程序操作日志的需求,仅本机使用。这时Access数据库就是一个非常好的选择,简单,好用。 下面仅仅是一个示例,简单写出 查询 和 新增 等 C#操作 Access 数据库的 代码 效果图 clsDBHelperAccess.csusing System; using …

UE4 动态生成网格

说明 在游戏中动态改变网格数量和形状等,该功能是寻路功能的前期准备,即在基础移动地基上方,构建一层网格,任何移动的操作都可以基于该网格进行计算。从而在编辑器模式下能够更方便进行调试 InstancedStaticMeshComponent 其是一种用于优化静态网格渲染性能的技术。Instanc…

FormCreate中在事件中获取api

FormCreate 是一个可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的表单生成组件。支持5个UI框架,并且支持生成任何 Vue 组件。内置20种常用表单组件和自定义组件,再复杂的表单都可以轻松搞定form-create中在事件中获取api FormCreate 是一个可以通过 JSON 生成具…

【最新】别再发邮件了,必须在开源之夏后台申请,50%的人竟然都没有报名成功!

引言 近期我们注意到很多学生朋友通过邮件向导师申请报名,请注意!!!​这是无效的,请必须通过“开源之夏”官方后台申请报名,请仔细参考这篇【报名攻略】 所以,我们特此举办这次宣讲会,目的是向所有感兴趣的学生详细介绍Apache DolphinScheduler社区在开源之夏中提供的项…

Flink富函数

富函数是DataStream API提供的函数接口,Flink的函数都有它的Rich版本,它与其他函数不同的是,富函数可以获取到运行环境上下文,初始化参数,拥有生命周期方法等,可通过它进行自定义复杂功能。我们常见的如RichMapFunction、RichFilterFunction等。富函数的生命周期主要通过…

C#如何用最简单方法调用Python?

最近有群友咨询C#如何调用Python?小编尝试Python.NET过程中遭遇的版本兼容性和环境配置难题,小编决定寻找一个更为简单、稳定且对初学者友好的解决方案。小编搜索一番,除了Python.NET之外,还有其他途径能够帮助我们轻松地在C#项目调用Python脚本,那就是通过命令行调用,使…

创建你的-Mysql-数据库-全-

创建你的 Mysql 数据库(全)原文:zh.annas-archive.org/md5/853FEC9D976A75004408D5A9A661EDD8 译者:飞龙 协议:CC BY-NC-SA 4.0前言 1995 年发布的 MySQL 已成为最受欢迎的开源数据库系统。MySQL 和 phpMyAdmin 的普及使得许多非 IT 专家能够使用 MySQL 后端构建动态网站。…

【Unreal】虚幻GAS系统快速入门

【USparkle专栏】如果你深怀绝技,爱“搞点研究”,乐于分享也博采众长,我们期待你的加入,让智慧的火花碰撞交织,让知识的传递生生不息!前言最近在用UE做单机ARPG的战斗系统,研究了一下GAS。本文主要介绍GAS各个模块的用途,以及特定功能的多种实现方法。为了让大部分人能…

[CISCN 2022 初赛]online_crt crash漏洞引起的命令执行

几天没做题了,有点生疏。看题吧。题目标签说是CVE-2022-1292,去看看。意思就是在$fname处构造恶意文件名导致的命令注入,而且前面没有认真过滤,也就是文件名命令执行。 看看题目源码:点击查看代码 import datetime import json import os import socket import uuid from …

团队作业5——测试与发布(Alpha版本)

这个作业属于哪个课程 软件工程这个作业要求在哪里 团队作业5——测试与发布(Alpha版本)这个作业的目标 Alpha版本测试报告、发布说明团队Gitee仓库链接 Gitee鏈接团队成员:姓名 学号蔡梓严(队长) 3122004686刘睿 3122004697吴炳辉 3122004709陈翼 3122006207林诗芸 322200…

解锁你的数据库:JPA和Hibernate的乐观锁与悲观锁

哈喽,大家好,我是木头左!引言 在当今的软件开发领域,数据库操作是不可或缺的一部分。然而,随着并发操作的增加,如何正确地处理并发问题是每个开发者都需要面对的挑战。本文将深入探讨JPA(Java Persistence API)和Hibernate这两种ORM(对象关系映射)工具中的乐观锁和悲…

易基因:WGBS+ChIP-seq等表观组分析揭示FOXM1 是抗肿瘤免疫应答的关键调控因子

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 食管癌是一种常见的恶性肿瘤,包括两种主要的组织学亚型:食管鳞状细胞癌(squamous cell carcinoma,ESCC)和食管腺癌(adenocarcinoma,EAC)。近两年来对抗肿瘤免疫应答机制的理解得到了显著提高,免疫检查…