๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœ’๏ธ Reverse Engineering/CodeEngn

[Reverse Engineering] CodeEngn Basic RCE L13 WriteUp

by A Lim Han 2023. 11. 10.

๐Ÿ CodeEngn Basic RCE L13 WriteUp

1.  ๋ฌธ์ œ ํ™•์ธ ํ›„ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ

2.  7-Zip File Manager ์„ ํ†ตํ•ด ํŒŒ์ผ ์••์ถ• ํ•ด์ œ  -->  13 ํŒŒ์ผ ์† ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋ฐœ๊ฒฌ

3.  13.exe ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜์—ฌ ์ž„์˜์˜ ๊ฐ’์„ ์ž…๋ ฅํ•œ ํ›„ "Enter" ํด๋ฆญ  -->  ํŒจ์Šค์›Œ๋“œ๊ฐ€ ํ‹€๋ ธ๋‹ค๋Š” ์•ˆ๋‚ด๋ฌธ์ด ์ถœ๋ ฅ

4.  ๊ด€๋ จ ์ •๋ณด ์ˆ˜์ง‘์„ ์œ„ํ•ด Detect It Easy ๋ฅผ ํ†ตํ•ด ํŒŒ์ผ ์˜คํ”ˆ  -->  ํŒŒ์ผ์ด .NET ํ˜•์‹์ž„์„ ํ™•์ธ

5.  ํŒŒ์ผ ๋ถ„์„์„ ์œ„ํ•ด dnspy ๋‹ค์šด๋กœ๋“œ

 

++  dnspy ๋‹ค์šด๋กœ๋“œ ๋ฐฉ๋ฒ•์ด ๊ถ๊ธˆํ•˜๋‹ค๋ฉด?

-->  https://alim11.tistory.com/484

 

[Debugging & Assembly] DnSpy ํˆด ๋‹ค์šด๋กœ๋“œ ๋ฐ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

๐Ÿ‘พ DnSpy ๋ž€? DnSpy๋Š” .NET ์–ด์…ˆ๋ธ”๋ฆฌ ํŽธ์ง‘ ๋ฐ ๋””๋ฒ„๊น… ๋„๊ตฌ๋กœ, .NET ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ ํŽธ์ง‘ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. DnSpy๋Š” ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋กœ .NET ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋‚ด๋ถ€ ๋™์ž‘์„ ์ดํ•ด & ์ˆ˜์ •ํ•˜

alim11.tistory.com

6.  dnspy ๋กœ 13.exe ํŒŒ์ผ ์˜คํ”ˆ  -->  ์šฐ์ธก ์‚ฌ์ง„์˜ ๊ฒฝ๋กœ์— ๋”ฐ๋ผ main() ํ•จ์ˆ˜๋กœ ์ด๋™

7.  main() ํ•จ์ˆ˜์˜ ์ฝ”๋“œ ์ค‘ Line 23  -->  ์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ณผ ์‹ค์ œ Password ๊ฐ’์„ ๋น„๊ตํ•˜๋Š” ๋ถ€๋ถ„ ๋ฐœ๊ฒฌ

// RijndaelSimpleTest
// Token: 0x06000004 RID: 4 RVA: 0x000021B4 File Offset: 0x000003B4
[STAThread]
private static void Main(string[] args)
{
ใ…คใ…คstring text = "";
ใ…คใ…ค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(text, passPhrase, saltValue, hashAlgorithm, passwordIterations, initVector, keySize);
ใ…คใ…คtext = RijndaelSimple.Decrypt(cipherText, passPhrase, saltValue, hashAlgorithm, passwordIterations, initVector, keySize);
ใ…คใ…ค
ใ…คใ…คfor (;;)
ใ…คใ…ค{
ใ…คใ…คใ…คใ…คConsole.WriteLine("Please enter the password: ");
ใ…คใ…คใ…คใ…คstring a = Console.ReadLine();
ใ…คใ…คใ…คใ…คif (a == text)
ใ…คใ…คใ…คใ…ค{
ใ…คใ…คใ…คใ…คใ…คใ…คbreak;
ใ…คใ…คใ…คใ…ค}
ใ…คใ…คใ…คใ…คConsole.WriteLine("Bad Luck! Try again!");
ใ…คใ…ค}

ใ…คใ…คConsole.WriteLine("Well Done! You cracked it!");
ใ…คใ…คConsole.ReadLine();
}

8.  ์‹ค์ œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด Debugging ์‹คํ–‰  -->  text ๋ณ€์ˆ˜ ์† Password ๋ฐœ๊ฒฌ

 

# ๋ฐœ๊ฒฌํ•œ ํŒจ์Šค์›Œ๋“œ
: Leteminman

9.  ๋‹ค์‹œ 13.exe ํŒŒ์ผ ์˜คํ”ˆ ํ›„ ๋ฐœ๊ฒฌํ•œ ํŒจ์Šค์›Œ๋“œ ์ž…๋ ฅ  -->  ๋ฌธ์ œ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ํ•ด๊ฒฐ๋˜์—ˆ์Œ์„ ํ™•์ธ