NewStarCTF2023 Reverse方向Week3 ez_chal WP

分析

题目:ez_chal

一个XTEA加密,

V6是key,v5是输入,然后v7就是密文。

看了v6,要用动调。

ELF文件用ida的远程调试。

然后在kali上输入长度为32的flag


全部转换成dd

再提取密文。

EXP

cpp 复制代码
#include <stdio.h>
void decrypt(unsigned int *v, unsigned int * key){
    unsigned int v0 = v[0],v1 = v[1], sum = 0, delta = 0x61C88747;
    sum = -(delta * 64);
    for (size_t i = 0; i < 64; i++){
        v1 -= v0 ^ (sum + (key[(sum >> 11) & 3])) ^ (v0 + ((v0 >> 5) ^(v0 * 16)));
        sum += delta;
        v0 -= v1 ^ (sum + (key[sum & 3])) ^ (v1 + ((v1 >> 5) ^(v1 * 16)));
    }
    v[0] = v0;
    v[1] = v1;
}
unsigned char a[41] = { 0x9C, 0xA2, 0x9E, 0xC1, 0x87, 0x1F, 0x09, 0xDC, 0x3B, 0xE3, 
  0xF6, 0x91, 0x7A, 0x5C, 0x9A, 0xF6, 0x20, 0x9F, 0x52, 0x93, 
  0xE1, 0x94, 0x5B, 0x8A, 0x9B, 0x06, 0x1D, 0xF9, 0x40, 0xE3, 
  0xB0,0x23};
unsigned int key[] = {0x5377654E,0x21726174,0x5377654E,0x21726174};

signed main(){
    unsigned int *t = (unsigned int *)a;
    for (int i = 0; i < 7; i += 2){
        decrypt(t+i,key);
    }
    for (int i = 0; i < 8; i++){
        printf("%c%c%c%c", *((char *)&t[i] + 0), *((char *)&t[i] + 1), *((char *)&t[i] + 2), *((char *)&t[i] + 3));
    }
}
相关推荐
传奇开心果编程9 分钟前
【Jetpack Compose进阶学与练】第14课:系列收尾复习总结;Compose项目常见坑点汇总;学习路线与后续学习方向
android·学习·ui·kotlin·android jetpack
yangmu320333 分钟前
发动机是怎么把油变成动力的:四冲程内燃机原理拆解
学习
m4Rk_35 分钟前
【论文阅读】Agent 记忆机制(81):EMR——用情景记忆避免 Agent 在多步推理中反复绕圈
论文阅读·人工智能·学习·开源·github
海海不掉头发1 小时前
阶段五_实验34-38_学习总结
深度学习·神经网络·学习·机器学习
M78佐菲1 小时前
ARM学习笔记(11)
linux·arm开发·笔记·嵌入式硬件·学习
M78佐菲1 小时前
ARM学习笔记(10)
linux·arm开发·笔记·嵌入式硬件·学习
dadaobusi1 小时前
学习:PCIe原子操作
学习
李游Leo2 小时前
HarmonyOS 7 + ArkUI + RelationalStore 学习笔记:本地数据分层存储与状态持久化架构实践【鸿蒙心迹】
笔记·学习·架构·harmonyos
我命由我123452 小时前
经纪人的职业定义
经验分享·笔记·学习·职场和发展·求职招聘·职场发展·学习方法