import base64import hashlibimport sysdef abort printWrong flag! sysexit1printPlease input the flagflag = inputres=Neepu6P8t100sN9S16a_19202122_2425_kuif lenflag != 29 abortif flag5 != Neepu
题目描述
给定的 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}
原文地址: https://www.cveoy.top/t/topic/fkSW 著作权归作者所有。请勿转载和采集!