Mini L-CTF 2025 reverse wp(复现)

参考:

https://idontknowctf.xyz/2025/05/09/Mini-LCTF2025-WriteUp/

https://astralprisma.github.io/2025/05/07/minil_25/

https://seandictionary.top/mini-l-ctf-2025/

以及官方wp

0.s1gn1n

image

最后那一段是程序的判断

异或可以这样看(虽然还是有一点抽象)

1 2 3 4 5 6 7
  1^2          6^7 
1 2` 3` 4`

异或解密:

#include <windows.h>
#include <stdio.h>

int main() {
	int a[] = {0x58,0x69,0x7B,0x6,0x1E,0x38,0x2C,0x20,0x4,0xF,0x1,0x7,0x31,0x6B,0x8,0xE,0x7A,0xA,0x72,0x72,0x26,0x37,0x6F,0x49,0x21,0x16,0x11,0x2F,0x1A,0xD,0x3C,0x1F,0x2B,0x32,0x1A,0x34,0x37,0x7F,0x3,0x44,0x16,0xE,0x1,0x28,0x1E,0x68,0x64,0x23,0x17,0x9,0x3D,0x64,0x6A,0x69,0x63,0x18,0x18,0xA,0x15,0x70};
	char flag[60];
	flag[0] = 0x58;
	for(int i = 1 ;i<60;i++){
		flag[i] = a[i] ^ flag[i-1];
	}
	printf("%s",flag);
    return 0;
}//X1JLRjFfbmlkZ197MG5GaV9pQGVycnRMfTNzM21ucmlDZ2VubkV2X1RJRXM=

image

中序的问题可以用映射来解决,动调可以发现变换的规律

image

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr得到了fPgHhQiDjRkIlSmBnToJpUqErVKWAXLYFZMaCbNcGdOe(44位是flag的长度)

#include <stdio.h>
#include <string.h>

int main() {
	char flag[44] = {0};
	const char enc[] = "_RKF1_nidg_{0nFi_i@errtL}3s3mnriCgennEv_TIEs";
	const char s1[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr";
	const char s2[] = "fPgHhQiDjRkIlSmBnToJpUqErVKWAXLYFZMaCbNcGdOe";
	
	int map[128] = {0};
	for (int i = 0; i < 44; i++) {
		map[s2[i]] = i;
	}
	
	for (int i = 0; i < 44; i++) {
		char m = s1[i];
		int index = map[m];
		flag[i] = enc[index];
	}
	
	printf("%s", flag);
	return 0;
}

flag:miniLCTF{esrevER_gnir33nignE_Is_K1nd_0F_@rt}

x96re

retf跳转到这里,异或0x4c

image

image

image

image

image

最后两位没有异或所以两段拼接一下

miniLCTF{3ac159d665b4ccfb25c0927c1a23edb3}

posted @ 2025-07-06 22:06  zzz222666  阅读(110)  评论(0)    收藏  举报