通知文件:关于举办2020年度阜阳市网络与信息安全管理职业技能大赛的通知.pdf
理论题库:2020题库.xlsx

操作题

1.jpeg √

附件:1.jpeg.zip

010editor 打开,搜索 flag:flag{w9ii12y3jbdjh123}
image.png

crypto(base64换编码表)√

请解密这段密文:FqsCFkufDSQgSf4NSgWFGPvMP6FCHwg= 附件:

  1. 这是泄漏的一段明文:
  2. !QAZ@WSX#EDC$RFV%TGB^YHN&UJM*IK<(OL>)P:?_{"+}|`1qaz2wsx3edc4rfv5tgb6yhn7ujm8ik,9ol.0p;/-['=]\The problem is that programs_width is a list. programs_width = list(). If none of these if statements if prog_width == '342' When you read an English book, you often come across new words. You might try to guess what the words mean from the words you know, but when you cannot guess the meanings of new words at all, what should you do?
  3. 和对应的密文:
  4. 8P51AN1SOhXByOy39596PVPOyg9LAOCE9MP+IUr9UfaeIgan+P0xRhbc8VibZ60sJA5xQwKfL3WMF6QgJqFjWSywDBFzG6lkKAriE6My/3MpH2laJ3up/PuwRPhJP6CM871dHj9uFAgXGSQXK6CCK21aJqbwJq5iJhbkGAygG21rJd1C86srJkTo871dHjKdDAhfSkKrF7ye83gXH6MfK2Xr/V19FV1oHjzM86bq87yeFSWM86Mq87WgDSyMHAPoK7QXGADXJ79pFhbkGAygG20bRU0wQfTd9d1SG6Po87MpKU1dFA5N865o84PoFjsrJjXXDqbpGdaXLAbh86bqK6Po86WpHAOXDAWdHkWf86zMKd1kHk9NJdlXAAbh86hrFjCg87ydLU1gHd1wKAPfJd1kG65g87yeFU1kHk9NJd1iFA5o86FdHjgXK6CM87KpJqyf87MpKU1yHqbk/21VKSTXKjCMHV1zHkOXDj5oHqbg86KhFSWf87yeFU1iFA5oGAzwJd1pFV1oFSJXKjbdF7QXDSTXDAsu/21kG65g87WeHkPuF21zHkOXF6vm

编写程序求解:

  1. from mybase64 import *
  2. plain0 = """!QAZ@WSX#EDC$RFV%TGB^YHN&UJM*IK<(OL>)P:?_{"+}|`1qaz2wsx3edc4rfv5tgb6yhn7ujm8ik,9ol.0p;/-['=]\The problem is that programs_width is a list. programs_width = list(). If none of these if statements if prog_width == '342' When you read an English book, you often come across new words. You might try to guess what the words mean from the words you know, but when you cannot guess the meanings of new words at all, what should you do?"""
  3. cipher0 = """8P51AN1SOhXByOy39596PVPOyg9LAOCE9MP+IUr9UfaeIgan+P0xRhbc8VibZ60sJA5xQwKfL3WMF6QgJqFjWSywDBFzG6lkKAriE6My/3MpH2laJ3up/PuwRPhJP6CM871dHj9uFAgXGSQXK6CCK21aJqbwJq5iJhbkGAygG21rJd1C86srJkTo871dHjKdDAhfSkKrF7ye83gXH6MfK2Xr/V19FV1oHjzM86bq87yeFSWM86Mq87WgDSyMHAPoK7QXGADXJ79pFhbkGAygG20bRU0wQfTd9d1SG6Po87MpKU1dFA5N865o84PoFjsrJjXXDqbpGdaXLAbh86bqK6Po86WpHAOXDAWdHkWf86zMKd1kHk9NJdlXAAbh86hrFjCg87ydLU1gHd1wKAPfJd1kG65g87yeFU1kHk9NJd1iFA5o86FdHjgXK6CM87KpJqyf87MpKU1yHqbk/21VKSTXKjCMHV1zHkOXDj5oHqbg86KhFSWf87yeFU1iFA5oGAzwJd1pFV1oFSJXKjbdF7QXDSTXDAsu/21kG65g87WeHkPuF21zHkOXF6vm"""
  4. # 明文转为二进制串
  5. binstr = ""
  6. for i in plain0:
  7. binstr += "{:08b}".format(ord(i))
  8. # 求新的编码表
  9. # 二进制串每 6 位对应一个密文字符
  10. new_alphabet = ['?'] * 64
  11. for i in range(len(binstr) // 6):
  12. new_alphabet[int(binstr[i*6: i*6+6], 2)] = cipher0[i]
  13. # 用新的编码表解码
  14. bs64 = Base64(alphabet="".join(new_alphabet))
  15. print(bs64.base64decode("FqsCFkufDSQgSf4NSgWFGPvMP6FCHwg="))

flag{3as41$_CYi%Tfan}

key

黑客小A破解了一个邮箱,从邮箱里获取一个附件,名为e58cee651237c4b323b8ba88b96a1a1q flag格式:key{**} 附件:e58cee651237c4b323b8ba88b96a1a1q.zip

timu_841 √

NGY0ZTM0NTczNDM1NDI0NjQ3MzU0MjQ3NTk1NTQ0NDQ0YjM0MzQ1ODQxMzI0MzUwNDU1NTMzNTU0OTNkM2QzZA==

Base64解码:
4f4e34573435424647354247595544444b3434584132435045553355493d3d3d
Hex -> ASCII:
ON4W45BFG5BGYUDDK44XA2CPEU3UI===
Base32解码:
synt%7BlPcW9phO%7D
URL解码:
synt{lPcW9phO}
Rot13:
flag{yCpJ9cuB}

timu_519 √

59574a4b443250324353584754485941564d4154584559564235465356335144575758545645563d

Hex -> ASCII:
YWJKD2P2CSXGTHYAVMATXEYVB5FSV3QDWWXTVEV=
Rot13:
LJWXQ2C2PFKTGULNIZNGKRLIO5SFI3DQJJKGIRI=
Base32 解码:
ZmxhZyU3QmFZeEhwdTlpJTdE
Base64 解码:
flag%7BaYxHpu9i%7D
URL 解码:
flag{aYxHpu9i}

soeasy_re √

soeasy_re flag格式:flag{**} 附件:soeasy_re.zip

exeinfo 打开,64 bit elf,无壳
image.png
ida64 打开,发现关键代码

  1. unsigned __int64 __fastcall main(int a1, char **a2, char **a3)
  2. {
  3. char buf[40]; // [rsp+0h] [rbp-30h] BYREF
  4. unsigned __int64 v5; // [rsp+28h] [rbp-8h]
  5. v5 = __readfsqword(0x28u);
  6. read(0, buf, 0x26uLL);
  7. if ( strlen(buf) != 38 ) // flag 长度为38
  8. {
  9. puts("error");
  10. exit(0);
  11. }
  12. printf("input : %s\n", buf);
  13. sub_4006F6(buf, aKakalll); // 计算 flag
  14. if ( !strcmp(buf, s2) )
  15. printf("congratulation !");
  16. return __readfsqword(0x28u) ^ v5;
  17. }
  1. size_t __fastcall sub_4006F6(const char *a1, const char *a2)
  2. {
  3. char v2; // r13
  4. size_t result; // rax
  5. int i; // [rsp+1Ch] [rbp-24h]
  6. for ( i = 0; ; ++i )
  7. {
  8. result = strlen(a1);
  9. if ( i >= result )
  10. break;
  11. v2 = a1[i];
  12. a1[i] = v2 ^ a2[i % strlen(a2)]; // buf[i] = buf[i] ^ aKakalll[i % len(aKakalll[i])]
  13. }
  14. return result;
  15. }
  1. .data:00000000006010A0 s2 db 0Dh,0Dh,0Ah ; DATA XREF: main+83o
  2. .data:00000000006010A3 db 6
  3. .data:00000000006010A4 db 17h
  4. .data:00000000006010A5 db 0Dh
  5. .data:00000000006010A6 db 0Ah
  6. .data:00000000006010A7 db 5Bh ; [
  7. .data:00000000006010A8 db 59h ; Y
  8. .data:00000000006010A9 db 5Ch ; \
  9. .data:00000000006010AA db 4
  10. .data:00000000006010AB db 5Eh ; ^
  11. .data:00000000006010AC db 0Fh
  12. .data:00000000006010AD db 5Eh ; ^
  13. .data:00000000006010AE db 5Ch ; \
  14. .data:00000000006010AF db 7
  15. .data:00000000006010B0 db 5Eh ; ^
  16. .data:00000000006010B1 db 2
  17. .data:00000000006010B2 db 5Dh ; ]
  18. .data:00000000006010B3 db 5Dh ; ]
  19. .data:00000000006010B4 db 55h ; U
  20. .data:00000000006010B5 db 0Fh
  21. .data:00000000006010B6 db 53h ; S
  22. .data:00000000006010B7 db 0Fh
  23. .data:00000000006010B8 db 5
  24. .data:00000000006010B9 db 5Ah ; Z
  25. .data:00000000006010BA db 0Dh
  26. .data:00000000006010BB db 5Ah ; Z
  27. .data:00000000006010BC db 0Ah
  28. .data:00000000006010BD db 59h ; Y
  29. .data:00000000006010BE db 59h ; Y
  30. .data:00000000006010BF db 52h ; R
  31. .data:00000000006010C0 db 5Bh ; [
  32. .data:00000000006010C1 db 5Ch ; \
  33. .data:00000000006010C2 db 8
  34. .data:00000000006010C3 db 0Fh
  35. .data:00000000006010C4 db 56h ; V
  36. .data:00000000006010C5 db 16h
  37. .data:00000000006010C5 _data ends

编写程序求 flag:

  1. buf = [0x0D, 0x0D, 0x0A, 6, 0x17, 0x0D, 0x0A, 0x5B, 0x59, 0x5C, 4, 0x5E, 0x0F, 0x5E, 0x5C, 7, 0x5E, 2, 0x5D, 0x5D, 0x55, 0x0F, 0x53, 0x0F, 5, 0x5A, 0x0D, 0x5A, 0x0A, 0x59, 0x59, 0x52, 0x5B, 0x5C, 8, 0x0F, 0x56, 0x16]
  2. aKakalll = 'kakalll' # len(aKakalll[i]): 7
  3. for i in range(38):
  4. print(chr(buf[i] ^ ord(aKakalll[i % 7])), end='')

flag{af087e2c27f5c119d2dd6a6a82370dd7}

re02

re02 flag格式:flag{**} 附件:re02.zip

exeinfo 打开,64bit elf

ida64 打开,发现关键代码:

  1. __int64 sub_400BD0()
  2. {
  3. int v0; // edx
  4. int v1; // ecx
  5. int v2; // er8
  6. int v3; // er9
  7. unsigned __int64 v4; // rsi
  8. int v5; // edx
  9. int v6; // ecx
  10. int v7; // er8
  11. int v8; // er9
  12. int v9; // edx
  13. int v10; // er8
  14. int v11; // er9
  15. int v12; // ecx
  16. int v13; // eax
  17. int v14; // eax
  18. bool v15; // zf
  19. int v16; // eax
  20. int v17; // eax
  21. int i; // [rsp+9Ch] [rbp-B4h]
  22. char v20[32]; // [rsp+A0h] [rbp-B0h] BYREF
  23. char v21[28]; // [rsp+C0h] [rbp-90h] BYREF
  24. int v22; // [rsp+DCh] [rbp-74h]
  25. char v23[48]; // [rsp+E0h] [rbp-70h] BYREF
  26. char v24[16]; // [rsp+110h] [rbp-40h] BYREF
  27. __int64 v25; // [rsp+120h] [rbp-30h] BYREF
  28. unsigned int v26; // [rsp+13Ch] [rbp-14h]
  29. __int64 v27; // [rsp+140h] [rbp-10h]
  30. v26 = 0;
  31. sub_400320(v24, 0LL);
  32. sub_400320(v23, 0LL);
  33. v4 = (unsigned __int64)v24;
  34. sub_40F940((unsigned int)"input your flag\n", 0, v0, v1, v2, v3);
  35. sub_40FA70((unsigned int)"%s", (unsigned int)v24, v5, v6, v7, v8);
  36. v27 = sub_423F00(v24);
  37. for ( i = -1606510600; ; i = v14 )
  38. {
  39. while ( 1 )
  40. {
  41. while ( 1 )
  42. {
  43. while ( 1 )
  44. {
  45. while ( 1 )
  46. {
  47. while ( 1 )
  48. {
  49. while ( 1 )
  50. {
  51. while ( 1 )
  52. {
  53. while ( 1 )
  54. {
  55. v12 = i + 2131024272;
  56. if ( i != -2131024272 )
  57. break;
  58. v22 = 0;
  59. i = 1479129251;
  60. }
  61. if ( i != -1999545321 )
  62. break;
  63. v4 = (unsigned int)&unk_4A1800;
  64. v15 = (unsigned int)sub_400330(v20, v4) == 0;
  65. v17 = 787574043;
  66. if ( !v15 )
  67. v17 = 1098311993;
  68. i = v17;
  69. }
  70. if ( i != -1994519983 )
  71. break;
  72. v9 = byte_4A17B0[v22];
  73. LOBYTE(v4) = byte_4A17B0[v22] ^ v24[v22];
  74. v23[v22] = v4;
  75. i = -1452531375;
  76. }
  77. if ( i != -1606510600 )
  78. break;
  79. v13 = -2131024272;
  80. v9 = v27;
  81. if ( v27 != 32 )
  82. v13 = -1484903926;
  83. i = v13;
  84. }
  85. if ( i == -1484903926 )
  86. {
  87. sub_40F940((unsigned int)"size error", v4, v9, v12, v10, v11);
  88. sub_40F030(0LL);
  89. }
  90. if ( i != -1477025740 )
  91. break;
  92. sub_400320(v21, 0LL);
  93. sub_400320(v20, 0LL);
  94. sub_400980(&v25, v21);
  95. sub_400A90(v21, v20);
  96. v4 = (unsigned int)&unk_4A17E0;
  97. v15 = (unsigned int)sub_400330(v23, v4) == 0;
  98. v16 = -1999545321;
  99. if ( !v15 )
  100. v16 = 1098311993;
  101. i = v16;
  102. }
  103. if ( i != -1452531375 )
  104. break;
  105. ++v22;
  106. i = 1479129251;
  107. }
  108. if ( i != 787574043 )
  109. break;
  110. i = 1981717114;
  111. sub_40F940((unsigned int)"success\n", v4, v9, v12, v10, v11);
  112. }
  113. if ( i != 1098311993 )
  114. break;
  115. i = 1981717114;
  116. sub_40F940((unsigned int)"wrong\n", v4, v9, v12, v10, v11);
  117. }
  118. if ( i != 1479129251 )
  119. break;
  120. v14 = -1477025740;
  121. if ( v22 < 16 )
  122. v14 = -1994519983;
  123. }
  124. return v26;
  125. }

1.exe √

flag格式:KEY{**} 附件:1.exe.zip

IDA 打开,得到伪代码

  1. int __cdecl main_0(int argc, const char **argv, const char **envp)
  2. {
  3. int v4; // [esp+0h] [ebp-1A0h]
  4. const char **v5; // [esp+4h] [ebp-19Ch]
  5. const char **v6; // [esp+8h] [ebp-198h]
  6. char v7; // [esp+Ch] [ebp-194h]
  7. int i; // [esp+D4h] [ebp-CCh]
  8. int v9; // [esp+E0h] [ebp-C0h]
  9. int v10[24]; // [esp+ECh] [ebp-B4h]
  10. char v11; // [esp+14Fh] [ebp-51h]
  11. char v12[36]; // [esp+178h] [ebp-28h]
  12. v11 = 0;
  13. v10[0] = 1;
  14. v10[1] = 4;
  15. v10[2] = 14;
  16. v10[3] = 10;
  17. v10[4] = 5;
  18. v10[5] = 36;
  19. v10[6] = 23;
  20. v10[7] = 42;
  21. v10[8] = 13;
  22. v10[9] = 19;
  23. v10[10] = 28;
  24. v10[11] = 13;
  25. v10[12] = 27;
  26. v10[13] = 39;
  27. v10[14] = 48;
  28. v10[15] = 41;
  29. v10[16] = 42;
  30. v10[17] = 26;
  31. v10[18] = 20;
  32. v10[19] = 59;
  33. v10[20] = 4;
  34. v10[21] = 0;
  35. printf("plz enter the flag:");
  36. while ( 1 )
  37. {
  38. v7 = getch();
  39. v12[v11] = v7;
  40. if ( !v7 || v12[v11] == 13 )
  41. break;
  42. if ( v12[v11] == 8 )
  43. {
  44. printf("\b\b");
  45. --v11;
  46. }
  47. else
  48. {
  49. printf("%c", v12[v11++]);
  50. }
  51. }
  52. v9 = 0;
  53. for ( i = 0; i < 17; ++i )
  54. {
  55. if ( v12[i] != byte_415768[v10[i]] )
  56. v9 = 1;
  57. }
  58. if ( v12[17] != 49 || v12[18] != 48 || v12[19] != 50 || v12[20] != 52 || v12[21] != 125 )
  59. v9 = 1;
  60. v12[v11] = 0;
  61. printf("\r\n");
  62. if ( v9 )
  63. {
  64. printf("u r wrong\r\n\r\n");
  65. main(v4, v5, v6);
  66. }
  67. else
  68. {
  69. printf("u r right!\r\n");
  70. }
  71. system("pause");
  72. return 0;
  73. }

编写程序求 flag:
KEY{e2s6ry3r5s8f61024}

rere √

flag格式:flag{**} 附件:rere.zip

拖到 exeinfo 发现是 .net 程序并且有 ConfuserEx
image.png
使用 UnConfuserEx 脱壳
image.png
使用 .NET Reflector 反编译,得到 Program.cs

  1. namespace NET2
  2. {
  3. using System;
  4. using System.Linq;
  5. using System.Text;
  6. internal class Program
  7. {
  8. private static byte[] res1 = new byte[] {
  9. 0x80, 0x30, 0x98, 0x79, 0x7d, 0xaf, 180, 0xb3, 170, 0xb5, 0x79, 0x19, 0x43, 0xda, 0xcf, 0x61,
  10. 0x26, 0x37, 0xcb, 13, 0x4c, 0x2e, 0xa9, 0x6f, 0x3a, 0x1d, 0xea, 0xed, 0xa8, 0x8f, 0x1b, 0x42,
  11. 0x24, 0xa2, 0x5b, 0x39, 0xec, 0xa7
  12. };
  13. public static string ByteToHex(byte[] vByte)
  14. {
  15. if ((vByte == null) || (vByte.Length < 1))
  16. {
  17. return null;
  18. }
  19. StringBuilder builder = new StringBuilder(vByte.Length * 2);
  20. for (int i = 0; i < vByte.Length; i++)
  21. {
  22. uint num2 = (uint) (vByte[i] / 0x10);
  23. builder.Append((char) (num2 + ((num2 > 9) ? ((long) 0x37) : ((long) 0x30))));
  24. num2 = (uint) (vByte[i] % 0x10);
  25. builder.Append((char) (num2 + ((num2 > 9) ? ((long) 0x37) : ((long) 0x30))));
  26. }
  27. return builder.ToString();
  28. }
  29. private static byte[] Encrypt(byte[] data, byte[] key)
  30. {
  31. if (data == null)
  32. {
  33. return null;
  34. }
  35. byte[] buffer = new byte[data.Length];
  36. long num = 0L;
  37. long num2 = 0L;
  38. byte[] buffer2 = GetKey(key, 0x100);
  39. for (long i = 0L; i < data.Length; i += 1L)
  40. {
  41. num = (num + 1L) % ((long) buffer2.Length);
  42. num2 = (num2 + buffer2[(int) ((IntPtr) num)]) % ((long) buffer2.Length);
  43. byte num4 = buffer2[(int) ((IntPtr) num)];
  44. buffer2[(int) ((IntPtr) num)] = buffer2[(int) ((IntPtr) num2)];
  45. buffer2[(int) ((IntPtr) num2)] = num4;
  46. byte num5 = data[(int) ((IntPtr) i)];
  47. byte num6 = buffer2[(buffer2[(int) ((IntPtr) num)] + buffer2[(int) ((IntPtr) num2)]) % buffer2.Length];
  48. buffer[(int) ((IntPtr) i)] = (byte) (num5 ^ num6);
  49. }
  50. return buffer;
  51. }
  52. private static byte[] GetKey(byte[] pass, int kLen)
  53. {
  54. byte[] buffer = new byte[kLen];
  55. for (long i = 0L; i < kLen; i += 1L)
  56. {
  57. buffer[(int) ((IntPtr) i)] = (byte) i;
  58. }
  59. long num = 0L;
  60. for (long j = 0L; j < kLen; j += 1L)
  61. {
  62. num = ((num + buffer[(int) ((IntPtr) j)]) + pass[(int) ((IntPtr) (j % ((long) pass.Length)))]) % ((long) kLen);
  63. byte num4 = buffer[(int) ((IntPtr) j)];
  64. buffer[(int) ((IntPtr) j)] = buffer[(int) ((IntPtr) num)];
  65. buffer[(int) ((IntPtr) num)] = num4;
  66. }
  67. return buffer;
  68. }
  69. public static byte[] HexToByte(string szHex)
  70. {
  71. int length = szHex.Length;
  72. if ((length <= 0) || ((length % 2) != 0))
  73. {
  74. return null;
  75. }
  76. int num2 = length / 2;
  77. byte[] buffer = new byte[num2];
  78. for (int i = 0; i < num2; i++)
  79. {
  80. uint num3 = (uint) (szHex[i * 2] - ((szHex[i * 2] >= 'A') ? '7' : '0'));
  81. if (num3 >= 0x10)
  82. {
  83. return null;
  84. }
  85. uint num4 = (uint) (szHex[(i * 2) + 1] - ((szHex[(i * 2) + 1] >= 'A') ? '7' : '0'));
  86. if (num4 >= 0x10)
  87. {
  88. return null;
  89. }
  90. buffer[i] = (byte) ((num3 * 0x10) + num4);
  91. }
  92. return buffer;
  93. }
  94. private static void Main(string[] args)
  95. {
  96. byte[] key = new byte[] { 0x41, 0x42, 0x43, 0x44, 0x45, 70 };
  97. Console.WriteLine("You know flag:");
  98. if (Encrypt(str2ASCII(Console.ReadLine()), key).SequenceEqual<byte>(res1))
  99. {
  100. Console.WriteLine("You are right");
  101. }
  102. else
  103. {
  104. Console.WriteLine("You are wrong");
  105. }
  106. }
  107. public static byte[] str2ASCII(string xmlStr) =>
  108. Encoding.Default.GetBytes(xmlStr);
  109. }
  110. }

修改程序求 flag:

  1. namespace NET2
  2. {
  3. using System;
  4. using System.Linq;
  5. using System.Text;
  6. internal class Program
  7. {
  8. private static byte[] res1 = new byte[] {
  9. 0x80, 0x30, 0x98, 0x79, 0x7d, 0xaf, 180, 0xb3, 170, 0xb5, 0x79, 0x19, 0x43, 0xda, 0xcf, 0x61,
  10. 0x26, 0x37, 0xcb, 13, 0x4c, 0x2e, 0xa9, 0x6f, 0x3a, 0x1d, 0xea, 0xed, 0xa8, 0x8f, 0x1b, 0x42,
  11. 0x24, 0xa2, 0x5b, 0x39, 0xec, 0xa7
  12. };
  13. private static void Decrypt(byte[] key)
  14. {
  15. //byte[] buffer = new byte[data.Length];
  16. long num = 0L;
  17. long num2 = 0L;
  18. byte[] buffer2 = GetKey(key, 0x100);
  19. for (long i = 0L; i < res1.Length; i += 1L)
  20. {
  21. num = (num + 1L) % ((long)buffer2.Length);
  22. num2 = (num2 + buffer2[(int)((IntPtr)num)]) % ((long)buffer2.Length);
  23. byte num4 = buffer2[(int)((IntPtr)num)];
  24. buffer2[(int)((IntPtr)num)] = buffer2[(int)((IntPtr)num2)];
  25. buffer2[(int)((IntPtr)num2)] = num4;
  26. //byte num5 = data[(int)((IntPtr)i)];
  27. byte num6 = buffer2[(buffer2[(int)((IntPtr)num)] + buffer2[(int)((IntPtr)num2)]) % buffer2.Length];
  28. //buffer[(int)((IntPtr)i)] = (byte)(num5 ^ num6);
  29. for(int j = 32; j < 127; j++)
  30. {
  31. byte num5 = (byte)j;
  32. if((byte)(num5 ^ num6) == res1[(int)((IntPtr)i)])
  33. {
  34. Console.Write((char)j);
  35. break;
  36. }
  37. }
  38. }
  39. }
  40. private static byte[] GetKey(byte[] pass, int kLen)
  41. {
  42. byte[] buffer = new byte[kLen];
  43. for (long i = 0L; i < kLen; i += 1L)
  44. {
  45. buffer[(int)((IntPtr)i)] = (byte)i;
  46. }
  47. long num = 0L;
  48. for (long j = 0L; j < kLen; j += 1L)
  49. {
  50. num = ((num + buffer[(int)((IntPtr)j)]) + pass[(int)((IntPtr)(j % ((long)pass.Length)))]) % ((long)kLen);
  51. byte num4 = buffer[(int)((IntPtr)j)];
  52. buffer[(int)((IntPtr)j)] = buffer[(int)((IntPtr)num)];
  53. buffer[(int)((IntPtr)num)] = num4;
  54. }
  55. return buffer;
  56. }
  57. private static void Main(string[] args)
  58. {
  59. byte[] key = new byte[] { 0x41, 0x42, 0x43, 0x44, 0x45, 70 };
  60. Decrypt(key);
  61. }
  62. }
  63. }

flag{e484df0963c115a93042388333847726}

timu_837 √

NWE0ZDRhNTQ1MDRkMzMzMzU3NDEzNDUxNTY0NTQ1NGQ1NDU3NTU0OTUyMzc1NjI1MzM1MQ==

Base64解码:
5a4d4a54504d3333574134515645454d54575549523756253351
Hex -> ASCII:
ZMJTPM33WA4QVEEMTWUIR7V%3Q
Rot13:
MZWGCZ33JN4DIRRZGJHVE7I%3D
URL解码:
MZWGCZ33JN4DIRRZGJHVE7I=
Base32解码:
flag{Kx4F92OR}


单选题

  1. 下面对于SSE-CMM保证过程的说法错误的是(D
  2. A. 保证是指安全需求得到满足的可信任程度
  3. B. 信任程度来自于对安全工程过程结果质量的判断
  4. C. 自验证与证实安全的主要手段包括观察、论证、分析和测试
  5. D. PA“建立保证论据”为PA“验证与证实安全"提供了证据支持
  1. 在业务持续性计划中,RTO指的是什么?(C)
  2. A.灾难备份和恢复
  3. B.恢复技术项目
  4. C.业务恢复时间目标
  5. D.业务恢复点目标
  1. 信息网络安全(风险)评估的方法(B)
  2. A.定量评估
  3. B.定性评估与定量评估相结合
  4. C.定点评估
  5. D.定性评估
  1. 在原告起诉被告抢注域名案件中,以下不能判定被告对其域名的注册、使用具有恶意的是(D
  2. A.为商业目的将他人驰名商标注册为域名的
  3. B.为商业目的注册与原告的域名近似的域名,故意造成与原告网站的混淆,误导网络用户访问其网站的
  4. C.曾要约高价出售其域名获取不正当利益的
  5. D.注册域名后自己准备使用的
  1. 以下哪一个是对人员安全管理中“授权蔓延”这概念的正确理解?(B
  2. A.外来人员在进行系统维护时没有收到足够的监控
  3. B.一个人拥有了不是其完成工作所必要的权限
  4. C.敏感岗位和重要操作长期有一个人独自负责
  5. D.员工由一个岗位变动到另一人岗位,累积越来越多权限
  1. 关于加密算法的应用范围,说话正确的有(A)。
  2. A.DSS用于数字签名,RSA用于加密和签名
  3. B.DSS用于密钥交换,IDEA用于加密和签名
  4. C.DSS用于数字签名,MD5用于加密和签名
  5. D.DSS用于加密和签名,MD5用于完整性效验