정답은 무엇인가
.NET 프로그램임을 알 수 있다.
.NET decompiler를 검색해서 나온 dotPeek를 사용해봤다.
Open으로 13.exe 파일을 열고, ConsoleApplication3 > Root Namespace > RijndaelSimpleTest 파일을 열어보니, 패스워드를 입력받고 str과 입력값이 같을 경우 Well Done을 출력해주는 코드를 볼 수 있었다.
ConsoleApplication3 > Root Namespace 하위에 RijndaelSimpleTest 파일을 열어보니 IDA나 BInary Ninja로 열어봤을 때 본 encrypt, decrypt 코드 부분이 있었다.
코드를 보면 str과 입력값이 동일해야 하므로, 정답은 str에 저장되어 있다.
따라서 str를 Console.WriteLine으로 출력해보면 정답을 알 수 있다.
ConsoleApplication3에서 우클릭하면 Export to Project로 Visual Studio로 프로젝트를 추출해서 수정할 수 있다.
// Decompiled with JetBrains decompiler
// Type: RijndaelSimpleTest
// Assembly: ConsoleApplication3, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
// MVID: 2ABE29DC-14E6-4F4B-97CF-81A2ED74FE79
// Assembly location: C:\Users\johan\Downloads\13.exe
using System;
public class RijndaelSimpleTest
{
[STAThread]
private static void Main(string[] args)
{
string plainText = "";
string cipherText = "BnCxGiN4aJDE+qUe2yIm8Q==";
string passPhrase = "^F79ejk56$£";
string saltValue = "DHj47&*)$h";
string hashAlgorithm = "MD5";
int passwordIterations = 1024;
string initVector = "&!£$%^&*()CvHgE!";
int keySize = 256;
RijndaelSimple.Encrypt(plainText, passPhrase, saltValue, hashAlgorithm, passwordIterations, initVector, keySize);
string str = RijndaelSimple.Decrypt(cipherText, passPhrase, saltValue, hashAlgorithm, passwordIterations, initVector, keySize);
Console.WriteLine(str);
while (true)
{
Console.WriteLine("Please enter the password: ");
if (!(Console.ReadLine() == str))
Console.WriteLine("Bad Luck! Try again!");
else
break;
}
Console.WriteLine("Well Done! You cracked it!");
Console.ReadLine();
}
}
입력받기 전 str를 출력하도록 수정 후, 빌드 후 실행해보았다.
str이 출력된 것을 확인할 수 있다.
[Reversing.kr] Easy Keygen (0) | 2021.06.01 |
---|---|
[CodeEngn] Basic RCE L14 (0) | 2021.06.01 |
[Reversing.kr] Easy Crack (0) | 2021.05.25 |
CodeEngn Basic RCE L12 (0) | 2021.05.23 |
CodeEngn Basic RCE L11 (0) | 2021.05.23 |