NewStarCTF2023 Week3 Reverse方向 题目STL WP

news2025/1/19 17:20:35

分析

在这里插入图片描述

在这里插入图片描述

代码不多,逻辑挺清楚的。

先用Z3解出V7:

from z3 import *

s = Solver()
v1, v2, v3, v4, v5, v6 = BitVecs('v1 v2 v3 v4 v5 v6', 32)
v7, v8, v9, v10, v11 = BitVecs('v7 v8 v9 v10 v11', 32)

s.add((v1 << 15) ^ v1 == 0x2882D802120E)
s.add((v2 << 15) ^ v2 == 0x28529A05954)
s.add((v3 << 15) ^ v3 == 0x486088C03)
s.add((v4 << 15) ^ v4 == 0xC0FB3B55754)
s.add((v5 << 15) ^ v5 == 0xC2B9B7F8651)
s.add((v6 << 15) ^ v6 == 0xAE83FB054C)
s.add((v7 << 15) ^ v7 == 0x29ABF6DDCB15)
s.add((v8 << 15) ^ v8 == 0x10E261FC807)
s.add((v9 << 15) ^ v9 == 0x2A82FE86D707)
s.add((v10 << 15) ^ v10 == 0xE0CB79A5706)
s.add((v11 << 15) ^ v11 == 0x330560890D06)
if s.check() == sat:
    result = s.model()
    print(result)

可以得到:

enc = [1359286798,84564308,592899,404707156,408356433,22873420,1398229781,35407879,1426413319, 471422726,1711934726]

这里手动调整了一下顺序。

再将数据换成16进制,并分割成44的长度。


enc = [1359286798,84564308,592899,404707156,408356433,22873420,1398229781,35407879,
       1426413319, 471422726,1711934726]
enc2 = []
for i in range(11):
    hex_value = hex(enc[i])[2:]
    padded_hex_value = hex_value.rjust(8, '0')  # 填充到长度为8,左侧补0
    enc2 += [padded_hex_value[k:k+2] for k in range(0,8,2)]
print(enc2)

这里会得到:

[‘51’, ‘05’, ‘12’, ‘0e’, ‘05’, ‘0a’, ‘59’, ‘54’, ‘00’, ‘09’, ‘0c’, ‘03’, ‘18’, ‘1f’, ‘57’, ‘54’, ‘18’, ‘57’, ‘06’, ‘51’, ‘01’, ‘5d’, ‘05’, ‘4c’, ‘53’, ‘57’, ‘4b’, ‘15’, ‘02’, ‘1c’, ‘48’, ‘07’, ‘55’, ‘05’, ‘57’, ‘07’, ‘1c’, ‘19’, ‘57’, ‘06’, ‘66’, ‘0a’, ‘0d’, ‘06’]

因为0x66的ascii是f,结合要做的逆序,0x66应该是在最后一位。

所以再对分割出的每四位做一个逆序

# 将列表分割成长度为4的子列表
sublists = [enc2[i:i+4] for i in range(0, len(enc2), 4)]
# 对每个子列表进行逆序操作
reversed_sublists = [list(reversed(sublist)) for sublist in sublists]
# 将逆序后的子列表合并为一个列表
result_list = [item for sublist in reversed_sublists for item in sublist]
print(result_list)
hex_list = [int(x, 16) for x in result_list]
print(hex_list)

# ['0e', '12', '05', '51', '54', '59', '0a', '05', '03', '0c', '09', '00', '54', '57', '1f', '18', '51', '06', '57', '18', '4c', '05', '5d', '01', '15', '4b', '57', '53', '07', '48', '1c', '02', '07', '57', '05', '55', '06', '57', '19', '1c', '06', '0d', '0a', '66']
# [14, 18, 5, 81, 84, 89, 10, 5, 3, 12, 9, 0, 84, 87, 31, 24, 81, 6, 87, 24, 76, 5, 93, 1, 21, 75, 87, 83, 7, 72, 28, 2, 7, 87, 5, 85, 6, 87, 25, 28, 6, 13, 10, 102]

这样就可以开始异或了。

flag = [0]*44
for i in range(len(hex_list)-1,-1,-1):
    if i == 43:
        flag[i] = 102
    else:
        flag[i] = hex_list[i] ^ flag[i+1]
print(flag)
flag1=[]
for i in range(len(flag)):
    flag1.append(chr(flag[i]))
flag1 = flag1[::-1]
print("".join(flag1))

# flag{b53fc431-eb1f-89da-5bd5-2e1184728a5das}

感觉写的很繁琐。。
看了官方的WP。。
在这里插入图片描述

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

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

相关文章

Vue工程化

目录 一、环境准备 npm 二、Vue整站使用 1、Vue项目创建和启动 区别 目录结构 启动 2、Vue开发流程 App.vue 快速入门 3、API风格 案例 细节注意 代码实现 测试 一、环境准备 介绍&#xff1a;create-vue是Vue官方提供的最新的脚手架工具&#xff0c;用于快速生…

工业除尘器笔记

工业除尘器用于对工业生产产生的有害气体和粉尘进行吸附。相关标准的制定最早可以追溯到1960年代以前。注意&#xff0c;本文的附录包含一起完整的工业除尘器事故的分析和定责过程。相关事故分析定责文档源头摘自上海市政府网站。 在产品设计行业和关联下游行业&#xff0c;在…

核心容器中bean的操作

bean配置 bean基础配置 bean别名配置 **注意事项&#xff1a;**获取bean无论是通过id还是name获取&#xff0c;如果无法获取到&#xff0c;将抛出异常NoSuchBeanDefinitionException&#xff08;NoSuchBeanDefinitionException&#xff1a;No bean named ‘bookServiceImpl’ …

15技术太卷我学APEX-curl请求apex的autoRest

0 curl概述 cURL无处不在。它几乎隐藏在所有设备中&#xff0c;例如汽车&#xff0c;蓝光播放器等。它通过互联网协议传输任意类型数据。 0.1 cURL是什么意思&#xff1f; cURL&#xff08;客户端URL&#xff09;是一个开放源代码的命令行工具&#xff0c;也是一个跨平台的库…

智慧工地AI视频管理平台源码

智慧工地是指以物联网、移动互联网技术为基础&#xff0c;充分应用人工智能等信息技术&#xff0c;通过AI赋能建筑行业&#xff0c;对住建项目内人员、车辆、安全、设备、材料等进行智能化管理&#xff0c;实现工地现场生产作业协调、智能处理和科学管理。智慧工地的核心是以一…

三子棋——C语言初阶

一.游戏思路&#xff1a; 设计菜单&#xff0c;选择开始游戏(1)还是退出游戏(0)&#xff08;若是输入数字不再输入范围内&#xff0c;则“选择错误”&#xff09;初始化棋盘打印棋盘&#xff08;步骤二和三不可调换位置&#xff09;玩家下棋&#xff08;坐标落子&#xff09;—…

php-cli

//运行index.php ./php index.php//启动php内置服务器 ./php -S 0.0.0.0:8080//启动内置服务在后台运行&#xff0c;日志输出到本目录下的server.log nohup ./php -S 0.0.0.0:8080 -t . > server.log 2>&1 &# 查找 PHP 进程 ps aux | grep "php -S 0.0.0.0:…

鸿蒙原生应用开发-折叠屏、平板设备服务卡片适配

一、多设备卡片适配原则 为不同尺寸的卡片提供不同的功能 在卡片开发过程中请考虑适配不同尺寸的设备&#xff0c;特别是在折叠屏和平板设备上&#xff0c;设备屏幕尺寸的变化直接影响了卡片内容的展示。请发挥想象力设计具有自适应能力的卡片&#xff0c;避免在卡片内容不做…

Java面试题(每天10题)-------连载(32)

目录 设计模式篇 1、工厂方法模式&#xff08;利用创建同一接口的不同实例&#xff09;&#xff1a; 2、抽象工厂模式&#xff08;多个工厂&#xff09; 3、单例模式&#xff08;保证对象只有一个实例&#xff09; 4、原型模式&#xff08;对一个原型进行复制、克隆产生类…

【Linux】gcc/g++ gdb 使用

目录 1&#xff0c;背景知识 2&#xff0c;gcc 如何完成 1&#xff0c;预处理(进行宏替换) 2&#xff0c;编译&#xff08;生成汇编&#xff09; 3&#xff0c;汇编&#xff08;生成机器可识别代码&#xff09; 4&#xff0c;连接&#xff08;生成可执行文件或库文件&…

Lombok超详解

目录 一、Lombok概述 二、Lombok插件安装 三、Lombok相关注解 3.1 Setter和Getter 3.2 ToString 3.3 EqualsAndHashCode&#xff0c;NonNull 3.4 NoArgsConstructor&#xff0c;RequiredArgsConstructor&#xff0c;AllArgsConstructor 3.5 Data 3.6 Builder 3.7 Log…

C++入门第七篇--STL模板--vector模拟实现

前言&#xff1a; 有了前面的string库的介绍&#xff0c;在这里我就不再介绍vector库了&#xff0c;而是直接模拟实现了。 vector库的概念和作用&#xff1a; vector库是针对于数组的数据类型的容器&#xff0c;它有点类似我们曾经实现过的顺序表&#xff0c;你完全可以按照…

C++二分算法:使数组严格递增

涉及知识点 动态规划 二分查找 题目 给你两个整数数组 arr1 和 arr2&#xff0c;返回使 arr1 严格递增所需要的最小「操作」数&#xff08;可能为 0&#xff09;。 每一步「操作」中&#xff0c;你可以分别从 arr1 和 arr2 中各选出一个索引&#xff0c;分别为 i 和 j&#…

查询附近500米的餐厅

前言 查询附近500米数据&#xff0c;第一反应是用ST_Buffer&#xff0c;但是ST_Buffer文档写了一句话&#xff0c;使用ST_DWithin效率更高。 ST_Buffer (postgis.net) ST_DWithin (postgis.net) 数据取点 我有一种坐标系4326的表ne_10m_admin_0_boundary_lines_land&#xf…

DataCamp在线学习平台

DataCamp&#xff08;https://www.datacamp.com/blog&#xff09;是一个在线学习平台&#xff0c;专注于数据科学和分析领域的教育。该平台提供丰富的课程&#xff0c;涵盖了从数据处理到机器学习和深度学习的各个方面。以下是DataCamp的主要特点&#xff1a; 互动学习&#x…

【Linux】命令expect使用详解

&#x1f984; 个人主页——&#x1f390;个人主页 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341; 感谢点赞和关注 &#xff0c;每天进步一点点&#xff01;加油&#xff01;&…

继电器测试负载箱的价格和性价比如何?

继电器测试负载箱是一种专门用于测试继电器性能的设备&#xff0c;它可以模拟各种负载条件&#xff0c;对继电器进行全方位的性能测试。这种设备在电力系统、自动化设备、通信设备等领域有着广泛的应用。 价格方面&#xff0c;继电器测试负载箱的价格因品牌、型号、性能等因素而…

Lobatto Quadrature-数值积分

See https://mathworld.wolfram.com/LobattoQuadrature.html

达梦数据库常用参数查询

字符集 字符是各种文字和符号的统称&#xff0c;包括各个国家文字、标点符号、表情、数字等等。 字符集 就是一系列字符的集合。字符集的种类较多&#xff0c;每个字符集可以表示的字符范围通常不同&#xff0c;就比如说有些字符集是无法表示汉字的。 常见的字符集有 ASCII、G…

系列四、本地接口(Native Interface)

一、概述 本地接口的作用是融合不同的编程语言为Java所用&#xff0c;它的初衷是融合C/C程序&#xff0c;Java诞生的时候正是C/C横行的时候&#xff0c;要想立足&#xff0c;必须要调用C/C的程序&#xff0c;于是Java就在内存中开辟了一块区域专门用于处理标记为native的代码&a…