[GDOUCTF 2023]Tea

首先下载,拖进exe查看

 发现为64位,拖进ida64,快捷键shift+f12到字符串然后ctrl+f搜索关键词flag

双击flag跟进 ,找到调用函数sub_140016230,点进去查看函数关键代码。

双击sub_140011339(v7)跟进,然后跟进sub_1400117D0(a1)函数,

 可知v7为key,且被更改为{2233,4455,6677,8899},双击 sub_1400112B7(v8, v7),跟进sub_140011900(a1, a2)函数,

可知其为tea加密,然后再双击sub_140011352(v8),跟进sub_140011B60(a1)函数,

上述为加密后的数据,接下来就是写脚本

#include <stdio.h>

int main() 
{
	int key[] = {2233, 4455, 6677, 8899};
	unsigned int value[10];
	value[0] = 0x1A800BDA;
	value[1] = 0xF7A6219B;
	value[2] = 0x491811D8;
	value[3] = 0xF2013328;
	value[4] = 0x156C365B;
	value[5] = 0x3C6EAAD8;
	value[6] = 0x84D4BF28;
	value[7] = 0xF11A7EE7;
	value[8] = 0x3313B252;
	value[9] = 0xDD9FE279;
	int dalte = 0xF462900;
	int i = 0;
	int wheel;
	int sum = 0;
    
    // 逆算法
	for(i=8; i>=0; i--){
        // 轮数
		wheel = 33;
      
		sum = dalte * (i+wheel);
		while(wheel--){
			sum -= dalte;
			value[i+1] -= (sum + key[(sum >> 11) & 3]) ^ (value[i] + ((value[i] >> 5) ^ (16 * value[i])));
			value[i] -= sum ^ (value[i+1] + ((value[i+1] >> 5) ^ (16 * value[i+1]))) ^ (sum + key[sum&3]);
		}
	}
	for(i=0;i<=9;i++){
		printf("%x", value[i]);
	}
	
	return 0;
}

 

 将结果借助在线工具转换成文本字符串就可以了

故结果为,NSSCTF{hzCtf_94_re666fingcry5641qq}。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值