[MoeCTF 2022]ezTea-入土为安的第十九天

简介: [MoeCTF 2022]ezTea-入土为安的第十九天

注意的是逆向得时候  sum=delta*32

#include <stdio.h>
#include <stdint.h>
void encrypt (uint32_t* v, uint32_t* k) {                       // 涓昏鍔犲瘑鍑芥暟锛岃瘯鐫€鎼炲畾瀹?
    uint32_t v0 = v[0], v1 = v[1], sum = 0;
    uint32_t delta = 0xd33b470;
    for (int i = 0; i < 32; i++) {
        sum += delta;
        v0 += ((v1<<4) + k[0]) ^ (v1 + sum) ^ ((v1>>5) + k[1]);
        v1 += ((v0<<4) + k[2]) ^ (v0 + sum) ^ ((v0>>5) + k[3]);
    }
    v[0] = v0;
    v[1] = v1;
}
int main() {
    uint32_t k[4] = {1, 2, 3, 4};
    int8_t input[33] = {0};
    
    scanf("%32s", input);
    for (int i = 0; i < 32; i+=8) {
        uint32_t v[2] = {*(uint32_t *)&input[i], *(uint32_t *)&input[i+4]};
        encrypt(v, k);
        for (int j = 0; j < 2; j++) {                           // 杩欎竴娈典富瑕佹槸鎶?v 鎸夊崟瀛楄妭杈撳嚭锛屽彟澶栧彲浠ヤ簡瑙d竴涓?鈥滃ぇ灏忕搴忊€?鍦ㄨ繖棰樻槸濡備綍浣撶幇鐨?
            for (int k = 0; k < 4; k++) {
                printf("%#x, ", v[j] & 0xff);
                v[j] >>= 8;
            }
        }
    }
    return 0;
}
#include <stdio.h>
#include <stdint.h>
void encrypt(uint32_t* v, uint32_t* k) {
    uint32_t v0 = v[0], v1 = v[1], sum = 0xd33b470*32; 
    uint32_t delta = 0xd33b470;
    for (int i = 0; i < 32; i++) {
        v1 -= ((v0 << 4) + k[2]) ^ (v0 + sum) ^ ((v0 >> 5) + k[3]);
        v0 -= ((v1 << 4) + k[0]) ^ (v1 + sum) ^ ((v1 >> 5) + k[1]);
        sum -= delta;
    }
    v[0] = v0;
    v[1] = v1;
}
int main() {
    uint32_t k[4] = {1, 2, 3, 4};
    uint8_t input[32] = {0x17, 0x65, 0x54, 0x89, 0xed, 0x65, 0x46, 0x32, 0x3d, 0x58, 0xa9, 0xfd, 0xe2, 0x5e, 0x61, 0x97, 0xe4, 0x60, 0xf1, 0x91, 0x73, 0xe9, 0xe9, 0xa2, 0x59, 0xcb, 0x9a, 0x99, 0xec, 0xb1, 0xe1, 0x7d};
    for (int i = 0; i < 32; i += 8) {
        uint32_t v[2] = { *(uint32_t*)&input[i], *(uint32_t*)&input[i + 4] };
        encrypt(v, k);
        for (int j = 0; j < 2; j++) {
            for (int k = 0; k < 4; k++) {
                printf("%c", v[j] & 0xff); 
                v[j] >>= 8;
            }
        }
    }
    printf("\n");
    return 0;
}

moectf{Th3_TEA_!S_s0_t4s7y~~!!!}

目录
相关文章
|
数据安全/隐私保护
[羊城杯 2020]easyre 1题解
buuctf-[羊城杯 2020]easyre 1题解
618 0
[羊城杯 2020]easyre 1题解
[MoeCTF 2022]chicken_soup 入土为安的第三天
[MoeCTF 2022]chicken_soup 入土为安的第三天
228 0
|
6月前
|
数据采集 安全 算法
2024第十五届蓝桥杯网络安全赛道省赛题目writeup(包含理论题、web、crypto、misc、reverse、pwn)
本文是2024年第十五届蓝桥杯网络安全赛道CTF真题赛题详解。主要内容包括PHP运算符、代码审计、爬虫协议、流量分析、AES/RSA加密、DWT盲水印、逆向工程、栈溢出和堆漏洞利用等技术点。其中,爬虫协议题目通过访问robots.txt获取flag;流量分析题目使用Wireshark导出HTTP对象并解密base64数据;逆向工程题目分析RC4和XXTEA算法;Pwn题目利用栈溢出和UAF漏洞实现攻击。文章详细记录了每道题的解题思路和具体步骤。
2024第十五届蓝桥杯网络安全赛道省赛题目writeup(包含理论题、web、crypto、misc、reverse、pwn)
[HNCTF 2022 WEEK2]getflag-入土为安的二十一天
[HNCTF 2022 WEEK2]getflag-入土为安的二十一天
184 0
|
安全 数据安全/隐私保护 Python
BUUCTF-[GUET-CTF2019]re(Reverse逆向)
本文介绍了如何对一个带有UPX壳的ELF文件进行逆向分析。首先通过010Editor确认文件类型和壳的存在,接着使用Free UPX工具进行脱壳。脱壳后在IDA中加载文件,通过字符串查找和交叉引用跟踪定位关键函数。最终利用Python的z3库解决约束问题,得到flag。过程中还遇到了Python版本兼容性问题,并通过重新安装z3-solver解决。最终flag为`flag{e165421110ba03099a1c039337}`,经MD5解密验证为`233`。
695 0
BUUCTF-[GUET-CTF2019]re(Reverse逆向)
|
存储 JSON 缓存
【网络原理】——HTTP请求头中的属性
HTTP请求头,HOST、Content-Agent、Content-Type、User-Agent、Referer、Cookie。
|
存储 安全 PHP
【文件上传绕过】——条件竞争漏洞
【文件上传绕过】——条件竞争漏洞
734 5
|
SQL 数据库
BUUCTF sqltest 1
BUUCTF sqltest 1
1078 0
[NSSRound#3 Team]jump_by_jump_revenge[花指令]
[NSSRound#3 Team]jump_by_jump_revenge[花指令]
258 0
|
Ubuntu Linux 网络安全
Docker&Docker Compose安装(离线+在线)
Docker&Docker Compose安装(离线+在线)
22040 1