前言
比赛时间:2025.1.25 - 2025.1.26
启航杯2025的 WriteUP,reverse crypto ak了
刚到9点服务器就炸了,本来两天的赛事又临时缩短到了一天。题目上,原来有一道rsa,做不了一点,后来又换了一道送分题,3道reverse全是送分题。
差评:(
Reverse
Checker
1 2 3 4 5 6 7 8
| encrypted_flag = "726B607765584646154014411A400E461445160E174542410E1A4147450E4642131446131017451542165E"
flag = "" for i in range(0, len(encrypted_flag), 2): flag += chr(int(encrypted_flag[i : i + 2], 16) ^ 0x23)
print(flag)
|
Rainbow
1 2 3 4 5 6 7
| encrypted_flag = "0B12190E1C213B6268686C6B6A69776F3B633B776E3C3B6D773B38393C773E3F3B6E69623B6D393F6D6227"
flag = "" for i in range(0, len(encrypted_flag), 2): flag += chr(int(encrypted_flag[i : i + 2], 16) ^ 90)
print(flag) # QHCTF{a8226103-5a9a-4fa7-abcf-dea438a7ce78}
|
小明的note
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| #include <stdio.h> #include <stdlib.h> #include <string.h> #define _BYTE unsigned char
void decrypt_flag(char *src, char *trg) { unsigned char v6[] = {0x42, 0x37, 0xA1, 0x7C}; int length = strlen(src); int i;
for (i = 0; i < length; i++) { trg[i] = v6[i % 4] ^ src[i]; trg[i] ^= i + 1; } trg[i] = 0; }
int main() { char Decrypted_flag[64]; char flag[100] = "\x12\x7D\xE1\x2C\x01\x4A\xC4\x45\x78\x5E\xC9\x46\x78\x5D\x83\x0F\x37\x12\xD0\x45\x63\x42\xD5\x57\x76\x14\xDE\x06\x6E\x04\x8F\x3E\x50\x21\xE1\x3B\x53\x72\xB7\x6C\x5D\x79\xF7\x00";
decrypt_flag(flag, Decrypted_flag); printf("Decrypted flag: %s\n", Decrypted_flag); return 0; }
|