2021津门杯部分RE题wp

2024-01-09 11:08
文章标签 部分 2021 wp re 津门

本文主要是介绍2021津门杯部分RE题wp,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • GoodRE
    • easyRe
    • babydsp

GoodRE

很简单的一个TEA算法,直接用脚本解密:

def decrypt(v, k):v0 = v[0]v1 = v[1]x = 0xC6EF3720delta = 0x9E3779B9k0 = k[0]k1 = k[1]k2 = k[2]k3 = k[3]for i in range(32):v1 -= ((v0 << 4) + k2) ^ (v0 + x) ^ ((v0 >> 5) + k3)v1 = v1 & 0xFFFFFFFFv0 -= ((v1 << 4) + k0) ^ (v1 + x) ^ ((v1 >> 5) + k1)v0 = v0 & 0xFFFFFFFFx -= deltax = x & 0xFFFFFFFFv[0] = v0v[1] = v1return v
if __name__ == '__main__':encryptes = [0x79AE1A3B, 0x596080D3, 0x80E03E80, 0x846C8D73, 0x21A01CF7, 0xC7CACA32, 0x45F9AC14, 0xC5F5F22F]flag=''for i in range(len(encryptes)//2):encrypted=encryptes[i*2:i*2+2]#encrypted = [0x095598db,0x80f1ec61]key = [0x11, 0x11,0x11,0x11]decrypted = decrypt(encrypted, key)flag+=hex(decrypted[0])[2:]flag+=hex(decrypted[1])[2:]
print('flag=',flag.upper())

在这里插入图片描述

easyRe

这题给了3个文件,一个是输出文本,一个是re6,还有一个是lua程序。
lua程序是经过加密的;输出文本用base64解码后是一串数字,一共64个。
再分析re6这个程序,输入flag长度32字节,取出3个字节做随机数种子,生成33个dword随机数。同时对lua脚本解密,解密后的脚本如下:
在这里插入图片描述
对每个输入的字节和每个随机数异或求和,再和5977654异或,最后输出,一共64个数,能和之前的输出文件对应上。
解题方法就是爆破随机数种子,在0-254之间:并用Z3求解flag,很快可以求出,如下图:
在这里插入图片描述
flag{e4da3b7fbbce2345d7772b0674a318d5}

babydsp

这题最耗时间,用ida打开可以看到是TMS320C6的处理器,TMS320C6x COFF Assembler格式文件,通过搜索得知可以通过CCS(Code Composer Studio)来执行和调试,这里花了很多时间下载和安装合适的CCS版本。
运行效果如下:
在这里插入图片描述

然后慢慢调试,查看代码,发现其中有些函数的符号还在:
在这里插入图片描述

然后进入核心的代码:
在这里插入图片描述
代码比较复杂,大概算法是采用二叉树,根据输入会形成一个字符和权重值的映射表,然后就是比较函数:check_password,最终是按输入的顺序比较权重值:
在这里插入图片描述
输入的字符一定在“uq4i}c3eGVUDthCo_{mafMB8QJjygz2LZAvXRPWYx95sbkOwF6IpnrlESTN7KdH”这63个字符以内,因此我将这些字符全部输入(分2次),截取了字符计算后的权重值,然后按顺序匹配权重值就可以得到flag。
在这里插入图片描述
最终的代码如下:

tables=[0]*48
tables+=[
0x00000000,0x00000000,0x00000C97,0x00000405,
0x00000093,0x00000555,0x00000400,0x00000121,
0x000016DB,0x0000088C,0x00000000,0x00000000,
0x00000000,0x00000000,0x00000000,0x00000000,
0x00000000,0x00000A7D,0x000016EA,0x00001419,
0x00000CA2,0x000001E7,0x000002DA,0x000006E4,
0x00000090,0x000003FA,0x0000140C,0x00000030,
0x00000EE3,0x0000140B,0x00000124,0x00000556,
0x00000A7E,0x0000115E,0x00000894,0x000001E3,
0x00000091,0x00000A87,0x0000089D,0x00000A74,
0x00000C8D,0x000006DC,0x00000ED7,0x00000000,
0x00000000,0x00000000,0x00000000,0x00001A08,
0x00000000,0x000019F9,0x000006D5,0x000002DF,
0x00000092,0x0000055C,0x000019E9,0x0000115F,
0x0000116B,0x00000126,0x000013FE,0x000003FF,
0x00000123,0x000016E9,0x000002DB,0x000016F8,
0x000001E6,0x00000031,0x000002D6,0x000006DD,
0x00000EEE,0x00000000,0x00000C98,0x0000054F,
0x00000000,0x00000EE2,0x00001152,0x000019F8,
0x00000000,0x000001EA,0x00000000,0x00000000,
0x00000000,0x00000000,0x00000000,0x00000000,
]
result=[0x19e9,0x123,0x19f9,0x115f,0x19f8,0x140c,0xa87,0x6dd,0xeee,0x1a08,0x19f9,0x1a08,0x6d5,0x19f9,0x6d5,0xee2,0xee2,0xee2,0xee2,0x1a08,0xca2,0x6dd,0xa7e,0x1a08,0x2d6,0x1e7,0xc98,0x55c,0x894,0x6dd,0x55c,0x1ea]flag=''
for i in result:flag+=chr(tables.index(i))
print(flag)

输出:
flag{JUst_a_babyyyy_DsP_rEveRse}

这篇关于2021津门杯部分RE题wp的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/586900

相关文章

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl

笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel

kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用c语言。_HEAD定义了后面代码属于段名为.head .text的段。         内核起始部分代码被解压代码调用,前面关于uboot的文章中有提到过(eg:zImage)。uboot启动是无条件的,只要代码的位置对,上电就工作,kern

项目实战系列三: 家居购项目 第四部分

购物车 🌳购物车🍆显示购物车🍆更改商品数量🍆清空购物车&&删除商品 🌳生成订单 🌳购物车 需求分析 1.会员登陆后, 可以添加家居到购物车 2.完成购物车的设计和实现 3.每添加一个家居,购物车的数量+1, 并显示 程序框架图 1.新建src/com/zzw/furns/entity/CartItem.java, CartItem-家居项模型 /***

GPU 计算 CMPS224 2021 学习笔记 02

并行类型 (1)任务并行 (2)数据并行 CPU & GPU CPU和GPU拥有相互独立的内存空间,需要在两者之间相互传输数据。 (1)分配GPU内存 (2)将CPU上的数据复制到GPU上 (3)在GPU上对数据进行计算操作 (4)将计算结果从GPU复制到CPU上 (5)释放GPU内存 CUDA内存管理API (1)分配内存 cudaErro

码蹄集部分题目(2024OJ赛9.4-9.8;线段树+树状数组)

1🐋🐋配对最小值(王者;树状数组) 时间限制:1秒 占用内存:64M 🐟题目思路 MT3065 配对最小值_哔哩哔哩_bilibili 🐟代码 #include<bits/stdc++.h> using namespace std;const int N=1e5+7;int a[N],b[N],c[N],n,q;struct QUERY{int l,r,id;}que

2021-8-14 react笔记-2 创建组件 基本用法

1、目录解析 public中的index.html为入口文件 src目录中文件很乱,先整理文件夹。 新建components 放组件 新建assets放资源   ->/images      ->/css 把乱的文件放进去  修改App.js 根组件和index.js入口文件中的引入路径 2、新建组件 在components文件夹中新建[Name].js文件 //组件名首字母大写

2021-08-14 react笔记-1 安装、环境搭建、创建项目

1、环境 1、安装nodejs 2.安装react脚手架工具 //  cnpm install -g create-react-app 全局安装 2、创建项目 create-react-app [项目名称] 3、运行项目 npm strat  //cd到项目文件夹    进入这个页面  代表运行成功  4、打包 npm run build

关于断言的部分用法

1、带变量的断言  systemVerilog assertion 中variable delay的使用,##[variable],带变量的延时(可变延时)_assertion中的延时-CSDN博客 2、until 的使用 systemVerilog assertion 中until的使用_verilog until-CSDN博客 3、throughout的使用   常用于断言和假设中的

牛客小白月赛100部分题解

比赛地址:牛客小白月赛100_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ A.ACM中的A题 #include<bits/stdc++.h>using namespace std;#define ll long long#define ull = unsigned long longvoid solve() {ll a,b,c;cin>>a>>b>

VB和51单片机串口通信讲解(只针对VB部分)

标记:该篇文章全部搬自如下网址:http://www.crystalradio.cn/thread-321839-1-1.html,谢谢啦            里面关于中文接收的部分,大家可以好好学习下,题主也在研究中................... Commport;设置或返回串口号。 SettingS:以字符串的形式设置或返回串口通信参数。 Portopen:设置或返回串口