GHCTF2024 reverse wp

CS1.6

以前遇到的C#都是unity游戏的类型,这是第一次看到编译成exe的

这里用ilspy比dnspy好用

运行之后出现提示

image

搜索'失败'

image

拿到密文之后CyberChef竟然可以直接出

image

Ez_asm

感觉magic_flag2函数有点奇怪

magic_flag1 是异或0x17

magic_flag3 是加索引

magic_flag2 有一个判断,if (flag[i] == 36 + i) flag[i] += i

在逆向的时候我觉得应该是if(36+i==a[i]-i)这样判断的,但这样不行

验证了一下

加密逻辑:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
	char flag[] = "NSSCTF{ASM_In_Rev3rs3_i3_e333z333}";
	for(int i=0;i<36;i++){
		flag[i] ^= 0x17;
		if(36+i==flag[i]) flag[i]+=i;
		flag[i]+=i;
		printf("%d,",flag[i]);
	}
}//89,69,70,87,71,86,114,93,76,99,82,105,-123,85,83,-127,113,53,119,119,56,93,-108,59,96,-117,62,63,64,-118,66,67,68,-117,57,8

解密逻辑:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
	int a[] = {89,69,70,87,71,86,114,93,76,99,82,105,133,85,83,129,113,70,119,119,76,93,148,82,96,139,88,90,92,138,96,98,100,139,34};
	for(int i=0;i<36;i++){
		a[i]-=i;
		int m = 36+i;
		if(a[i]==m) a[i]-=i;
		printf("%c",(a[i])^0x17);
	}
}//NSSCTF{ASM_In_Rev3rs3_i3_e333z333}

所以说确实题目有点问题

posted @ 2025-07-04 20:16  zzz222666  阅读(25)  评论(0)    收藏  举报