-
-
[原创]第十题 初入好望角
-
2019-3-25 15:06 3370
-
这是个.net。.net额,不靠谱。
利用dnSpy打开,并在函数入口点断点。
using System; using System.IO; using System.Security.Cryptography; using System.Text; // Token: 0x02000003 RID: 3 internal class a { // Token: 0x06000004 RID: 4 RVA: 0x0000209B File Offset: 0x0000029B private static void a(string[] A_0) { Console.WriteLine("Please Input Serial:"); if (global::a.a(Console.ReadLine(), "Kanxue2019") == "4RTlF9Ca2+oqExJwx68FiA==") { Console.WriteLine("Congratulations! : )"); Console.ReadLine(); } } // Token: 0x06000005 RID: 5 RVA: 0x000020D4 File Offset: 0x000002D4 public static string a(string A_0, string A_1) { byte[] bytes = Encoding.UTF8.GetBytes("Kanxue2019CTF-Q1"); byte[] bytes2 = Encoding.UTF8.GetBytes(A_0); byte[] bytes3 = new PasswordDeriveBytes(A_1, null).GetBytes(32); ICryptoTransform transform = new RijndaelManaged { Mode = CipherMode.CBC }.CreateEncryptor(bytes3, bytes); MemoryStream memoryStream = new MemoryStream(); CryptoStream cryptoStream = new CryptoStream(memoryStream, transform, CryptoStreamMode.Write); cryptoStream.Write(bytes2, 0, bytes2.Length); cryptoStream.FlushFinalBlock(); byte[] inArray = memoryStream.ToArray(); memoryStream.Close(); cryptoStream.Close(); return Convert.ToBase64String(inArray); } // Token: 0x04000003 RID: 3 private const string a = "Kanxue2019CTF-Q1"; // Token: 0x04000004 RID: 4 private const int b = 256; }
得出加密方式,反转一下即可。
如下代码解决:
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { public static string detest(string A_0, string A_1) { byte[] bytes = Encoding.UTF8.GetBytes("Kanxue2019CTF-Q1"); byte[] bytes2 = Convert.FromBase64String(A_0); byte[] bytes3 = new PasswordDeriveBytes(A_1, null).GetBytes(32); ICryptoTransform transform = new RijndaelManaged { Mode = CipherMode.CBC }.CreateDecryptor(bytes3, bytes); MemoryStream memoryStream = new MemoryStream(); CryptoStream cryptoStream = new CryptoStream(memoryStream, transform, CryptoStreamMode.Write); cryptoStream.Write(bytes2, 0, bytes2.Length); cryptoStream.FlushFinalBlock(); byte[] inArray = memoryStream.ToArray(); memoryStream.Close(); cryptoStream.Close(); return System.Text.Encoding.Default.GetString(inArray); // return Convert.ToString(inArray); } static void Main(string[] args) { Console.WriteLine("Please Input Serial:"); Console.WriteLine( detest("4RTlF9Ca2+oqExJwx68FiA==", "Kanxue2019")); } } }
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
他的文章
看原图