下载附件,用ida打开。
反编译,查看源码。
v4感觉就是密文,进入tea_encrypt中查看加密方式:
就是一个数据转换。
在查看key,找到密钥。
这里是需要转换为四个八位的数,因为一个int是四个字节,一个字节是八位,所以就是要写成四个八位的数组。
然后要注意逻辑的转换,操作的是数组里面的数据
脚本:
#include <stdio.h>
#include <string.h>
#include <stdint.h>
int main(void)
{unsigned int a1[]={0xC11EE75A,0xA4AD0973,0xF61C9018,0x32E37BCD,0x2DCC1F26,0x344380CC};int a2[] = {0x10203,0x4050607,0x8090A0B,0x0C0D0E0F};unsigned int v0,v1,i;for (int k = 0; k < 6; k += 2){v0 = a1[k];v1 = a1[k + 1];long delta = 0x61C88647;long sum = 0 -(32 * delta);for (i = 0; i <= 31; ++i){v1 -= (((v0 >> 5) ^ (16 * v0)) + v0) ^ (a2[(sum >> 11) & 3] + sum);sum += 0x61C88647;v0 -= (((v1 >> 5) ^ (16 * v1)) + v1) ^ (a2[sum & 3] + sum);}a1[k] = v0;a1[k+1] = v1;}for (i = 0; i < 6; i++){for (int j = 0; j <= 3; j++){printf("%c",(a1[i]>>(j*8))&0xff);}}}
flag:NSSCTF{Tea_TEA_TeA_TEa+}