emmmm 感觉.net的题 也太没有压力了把
.net 工具一把梭直接就ok了
先用工具找到 关键点
using System;
using System.Security.Cryptography;
using System.Text;
internal class ᜅ
{
private static int ᜀ(int A_0, int A_1)
{
return (new int[]
{
2,
3,
5,
7,
11,
13,
17,
19,
23,
29,
31,
37,
41,
43,
47,
53,
59,
61,
67,
71,
73,
79,
83,
89,
97,
101,
103,
107,
109,
113
})[A_1] ^ A_0;
}
private static string ᜀ(string A_0)
{
byte[] bytes = Encoding.ASCII.GetBytes(A_0);
return "flag{" + BitConverter.ToString(new MD5CryptoServiceProvider().ComputeHash(bytes)).Replace("-", "") + "}";
}
private static void ᜀ(string A_0, int A_1, ref string A_2)
{
int num = 0;
if (0 < A_0.Length)
{
do
{
char c = A_0[num];
int num2 = 1;
do
{
c = Convert.ToChar(ᜅ.ᜀ(Convert.ToInt32(c), num2));
num2++;
}
while (num2 < 15);
A_2 += c;
num++;
}
while (num < A_0.Length);
}
A_2 = ᜅ.ᜀ(A_2);
}
private static void ᜀ(string[] A_0)
{
string b = null;
string value = string.Format("{0}", DateTime.Now.Hour + 1);
string a_ = "CreateByTenshine";
ᜅ.ᜀ(a_, Convert.ToInt32(value), ref b);
string a = Console.ReadLine();
if (a == b)
{
Console.WriteLine("u got it!");
Console.ReadKey(true);
}
else
{
Console.Write("wrong");
}
Console.ReadKey(true);
}
}
然后可以分析一下 函数流程 写出脚本 感觉脚本挺好些的
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<vector>
#include<iostream>
#include<map>
#include<time.h>
#include<math.h>
using namespace std;
int s[30]= { 2,
3,
5,
7,
11,
13,
17,
19,
23,
29,
31,
37,
41,
43,
47,
53,
59,
61,
67,
71,
73,
79,
83,
89,
97,
101,
103,
107,
109,
113
};
char flag[100];
int reint(int a1,int a2)
{
return s[a2]^a1;
}
int main()
{
char str[]="CreateByTenshine";
char c=str[0];
int num=0,num2;
do
{
c=str[num];
num2=1;
do
{
c=reint((int)c,num2);
num2++;
}
while(num2<15);
flag[num++]=c;
}while(num<strlen(str));
printf("%s\n",flag);
return 0;
}
打印内容
[j}yl}ZaL}vkpqv}
然后 用md5加密一下
这里的flag 是32位大写 flag也就是flag{967DDDFBCD32C1F53527C221D9E40A0B}
这题还是比较水的0.。