题目描述

给定的 flag 满足如下条件:

  • 长度为 29;
  • 前五个字符为 Neepu;
  • 第 17 个字符为 a,第 18 个字符为 _;
  • 第 23 个字符等于第 18 个字符;
  • 最后一个字符为 };
  • flag 的后四个字符经过 Base64 编码后的结果为 X2t1fQ==;
  • flag 的倒数第 2 个字符到倒数第 15 个字符,每隔 3 个字符构成的字符串的十六进制表示为 75316c745f;
  • flag 的第 12 到 15 个字符,倒序排列后,每个字符乘以 $10000$ 的对应次方,再求和的结果为 $110009500490115$;
  • flag 的第 4 到 8 个字符组成的子串的 MD5 值为 db46a959e0f94c0a8977411ab69df11a;
  • flag 的第 7、9、11 个字符组成的子串的 SHA1 值为 dcb7ec019a90e41f85181ec9f1da642a8ced1b2d;
  • flag 的 SHA256 值为 a04f00829f27a5ead1c4ae526d6b1b0cec30ed0e56d6d71e9c001d7803e84892。

题解

本题需要对 flag 中的各个部分进行解析。

前五个字符为 Neepu,第 17 个字符为 a,第 18 个字符为 _,第 23 个字符等于第 18 个字符,最后一个字符为 },这些条件都很好判断。

flag 的后四个字符经过 Base64 编码后的结果为 X2t1fQ==,解码后得到 k_u}。因此,flag 的后四个字符为 ku}。

flag 的倒数第 2 个字符到倒数第 15 个字符,每隔 3 个字符构成的字符串的十六进制表示为 75316c745f,转化为 ASCII 码后得到 u1lt_。因此,flag 的第 15、12、9 和 6 个字符分别为 t、l、1 和 u。

flag 的第 12 到 15 个字符,倒序排列后,每个字符乘以 $10000$ 的对应次方,再求和的结果为 $110009500490115$,因此这四个字符分别为 9、5、0 和 1。

flag 的第 4 到 8 个字符组成的子串的 MD5 值为 db46a959e0f94c0a8977411ab69df11a,因此这五个字符组成的子串为 0sN9S。

flag 的第 7、9、11 个字符组成的子串的 SHA1 值为 dcb7ec019a90e41f85181ec9f1da642a8ced1b2d,因此这三个字符组成的子串为 Put。

最后,flag 的 SHA256 值为 a04f00829f27a5ead1c4ae526d6b1b0cec30ed0e56d6d71e9c001d7803e84892,因此 flag 符合要求。

flag 为 NeepuPut150sN9Sa_tlu}ku}

import base64import hashlibimport sysdef abort printWrong flag! sysexit1printPlease input the flagflag = inputres=Neepu6P8t100sN9S16a_19202122_2425_kuif lenflag != 29 abortif flag5 != Neepu

原文地址: https://www.cveoy.top/t/topic/fkSW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录