-
-
[原创]2019看雪CTF 晋级赛Q1 第10题
-
发表于: 2019-3-23 13:10 3044
-
1 2 3 4 5 6 7 8 9 | private static void a(string[] A_0) { Console.WriteLine( "Please Input Serial:" ); if (a(Console.ReadLine(), "Kanxue2019" ) == "4RTlF9Ca2+oqExJwx68FiA==" ) { Console.WriteLine( "Congratulations! : )" ); Console.ReadLine(); } } |
如果a函数的返回值为 “4RTlF9Ca2+oqExJwx68FiA==”表示成功。看一下a函数,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public static string a(string A_0, string A_1) { byte[] bytes = Encoding.UTF8.GetBytes( "Kanxue2019CTF-Q1" ); byte[] buffer = Encoding.UTF8.GetBytes(A_0); byte[] rgbKey = new PasswordDeriveBytes(A_1, null).GetBytes(0x20); ICryptoTransform transform = new RijndaelManaged { Mode = CipherMode.CBC }.CreateEncryptor(rgbKey, bytes); MemoryStream stream = new MemoryStream(); CryptoStream stream1 = new CryptoStream(stream, transform, CryptoStreamMode.Write); stream1.Write(buffer, 0, buffer.Length); stream1.FlushFinalBlock(); byte[] inArray = stream.ToArray(); stream.Close(); stream1.Close(); return Convert.ToBase64String(inArray); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public static string a(string A_0, string A_1) { byte[] bytes = Encoding.UTF8.GetBytes( "Kanxue2019CTF-Q1" ); byte[] buffer = Encoding.UTF8.GetBytes(A_0); byte[] rgbKey = new PasswordDeriveBytes(A_1, null).GetBytes(0x20); ICryptoTransform transform = new RijndaelManaged { Mode = CipherMode.CBC }.CreateEncryptor(rgbKey, bytes); MemoryStream stream = new MemoryStream(); CryptoStream stream1 = new CryptoStream(stream, transform, CryptoStreamMode.Write); stream1.Write(buffer, 0, buffer.Length); stream1.FlushFinalBlock(); byte[] inArray = stream.ToArray(); stream.Close(); stream1.Close(); return Convert.ToBase64String(inArray); } |
看起来是使用标准的.net加密算法进行加密。其中“Kanxue2019”作为秘钥,用户输入作为被加密的数据。
1、将
“Kanxue2019”
转换为utf8字节数据。
(bytes)
2、 将用户输入转换为utf8字节数据。
3、调用 PasswordDeriveBytes函数产生一个rgbKey
4、使用
bytes与
rgbKey 作为输入调用RijndaelManaged产生一个 ICryptoTransform transform
5、new 一个 MemoryStream()
6、new RijndaelManaged,调用CryptoStream 的write进行数据加密
7、将加密后的数据转换成base64,返回。
8、结果为“
“4RTlF9Ca2+oqExJwx68FiA==
”即可。
最后于 2019-3-23 13:14
被ODPan编辑
,原因:
赞赏
他的文章
看原图
赞赏
雪币:
留言: