Reversing/CodeEngn

[CodeEngn] RCE basic L13 풀이

chan2s 2025. 9. 1. 18:33

Q13. 정답은 무엇인가

[그림 1] 13.exe 최초 실행

password를 입력받으며 잘못된 입력값에 대해서 Bad Luck! 문구를 출력해 준다.

[그림 2] OllyDbg 13.exe 에러

OllyDbg로는 13.exe 파일을 열 수 없다고 한다.

[그림 3] Exeinfo PE 13.exe 정보

Exeinfo PE 툴로 13.exe 정보를 알아보니 C#으로 이루어진 파일이었다.
검색해 보니 C#으로 작성된 파일은 닷넷 프레임워크 환경이 필요하였고, 닷넷 전용 디컴파일러 도구를 사용해서 분석을 진행해야 한다는 사실을 알았다.
OllyDbg는 사용하지 못하므로 C# 디컴파일러를 찾아보다가 dotPeek이라는 디컴파일러를 찾아냈다.

dotPeek 디컴파일러 다운로드
dotPeek: 무료, JetBrains이 만든. NET 디컴파일러 및 어셈블리 브라우저

[그림 4] dotPeek 13.exe

우측 Assembly Explorer에서 RijndaelSimpleTest에서 익숙한 문구와 코드를 볼 수 있었다.

[그림 5] plainText, cipherText

코드를 분석하는 도중 RijndaelSimple의 암호화 코드에서는 평문 Text를,
복호화 코드에서 받는 인자는 암호화된 Text를 인자 값으로 받아 str에 저장하는 것을 확인하였다.

[그림 6] if문 조건

프로그램의 동작 원리는 Console.ReadLine()과 str이 같을 때 성공 문구를 출력해 주고, 아니면 Bad Luck! 문구를 출력해 준다.
str에 어떠한 문장이 들어있는지를 알아내면 된다. 따라서 이 코드를 패치를 해줄 필요가 있다.

C# 코드를 수정하기 위해서. NET SDK가 필요하였고, 별도로 VSCode에서 C#환경 구성도 해주었다.
Visual Studio Code용. NET SDK 다운로드 

 

Visual Studio Code용 .NET SDK 다운로드 | .NET

Linux, macOS 또는 Windows에서 Visual Studio Code를 사용하여 .NET 앱을 빌드하기 위한 .NET SDK를 다운로드하고 설치합니다.

dotnet.microsoft.com

[그림 7] 13.exe 실행 후 cmd 창

Please enter the password 위에 str에 대해 문구를 출력해 주기로 했다.

[그림 8] dotPeek에서 ConsoleApplication3을 Export to Project… 클릭

코드 수정을 위해서 위 코드를 Export해서 VScode로 열어보기로 했다.

[그림 9] Export할 폴더 지정

해당 코드를 저장할 폴더와 프로젝트 명을 지정하고 Export해준다.

[그림 10] VScode 코드 수정

 if문의 조건에서 str과 같은 문구를 확인하기 위해 [그림 10]과 같은 코드를
"Please enter the password : "코드 위에 추가한다면 Serial값을 확인해 볼 수 있을 것이다.

Console.WriteLine(str);

[그림 11] 정상적으로 .NET SDK를 설치, PATH 설정했지만 실행에 문제가 생길 경우
[그림 12] .NETFramework의 버전을 v3.5를 지원하는 프로그램 필요

.NETFramework에서 v3.5버전을 찾을 수 없다고 한다. 이 에러를 해결하는 방법을 찾아보았다.

[그림 15] 제어판 > 프로그램 및 기능 > Windows 기능 켜기/끄기

해당 부분이 체크가 되어있는지 확인하면 편할 것이다.
예전 .NET Framework 버전은 해제되어 있는 경우가 있을 수 있다. 해당 부분이 체크해제 되어있어서 많이 헤맸다...
혹시 모르니 .NET Framework v3.5 수동 설치 링크도 남겨두었다.

.NET Framework v3.5 설치
Download Microsoft .NET Framework 3.5 from Official Microsoft Download Center

 

Download Microsoft .NET Framework 3.5 from Official Microsoft Download Center

Microsoft .NET Framework 3.5에는 .NET Framework 2.0 및 3.0 위에 추가된 새로운 기능이 들어 있으며 .NET Framework 2.0 서비스 팩 1과 .NET Framework 3.0 서비스 팩 1이 포함되어 있습니다.

www.microsoft.com

혹시나 비슷한 다른 에러가 발생할 때 이 글도 참조한다면 도움이 될 수 있을 것이다.
.NET Framework 대상 지정 오류 문제 해결 - Visual Studio | Microsoft Learn

 

.NET Framework 대상 지정 오류 문제 해결 - Visual Studio

이 문서에서는 참조 문제로 인해 발생할 수 있는 MSBuild 오류에 대한 해결을 제공합니다.

learn.microsoft.com

[그림 16] 에러 발생 1

이 msbuild 에러로 인해 시간이 꽤 오래 잡아먹었다. 여러 방안을 통해 해결해보고자 했다.

Microsoft C++ Build Tools - Visual Studio

 

Microsoft C++ Build Tools - Visual Studio

 

visualstudio.microsoft.com

별도로 Visual Studio Build Tools도 다운로드 해주었다.

[그림 17] .NET Framework 3.5 개발 도구

다운로드 받은 후 [그림 17]에 있는 2개의 항목 체크 후 다운로드했다.

Windows, Mac, Linux용 Visual Studio 및 VS Code 다운로드

 

Windows, Mac, Linux용 Visual Studio 및 VS Code 다운로드

Visual Studio IDE 또는 VS Code를 무료로 다운로드하세요. Windows 또는 Mac에서 Visual Studio Professional 또는 Enterprise Edition을 사용해 보세요.

visualstudio.microsoft.com

그래도 에러가 발생하는 것 같아 VScode가 아닌 Visual Studio도 설치해 디버깅을 시도해보기로 했다.

[그림 18] 에러 발생 2

C# 관련 에러는 언어 버전을 통해서 해결해야 한다고 한다.
이 언어 버전을 수정하기 위해서는 2가지 방식을 따라야 했다.

[그림 19] 에러 해결 1 - nullable 주석처리

우선 RijndaelSimpleTest파일에서 C#으로 주석처리를 위해 nullable앞에 새로 //을 앞에 붙여주고 저장한다.

[그림 20] 에러 해결 2 - LangVersion 추가

에러 문구에서 C# 8.0 버전 이상을 사용해야 한다고 했으므로 PropertyGroup 안에 다음 코드를 추가해주었다.

<LangVersion>8.0</LangVersion>

[그림 21] str의 복호화 문구 출력

이제 디버깅을 진행해보면 코드에 str을 출력해주는 문구를 저장한 뒤 디버깅 해보면 Leteminman 이라는 문구를 확인 해 볼 수 있었다.

 

'Reversing > CodeEngn' 카테고리의 다른 글

[CodeEngn] RCE basic L15 풀이  (0) 2025.09.03
[CodeEngn] RCE basic L14 풀이  (0) 2025.09.03
[CodeEngn] RCE basic L12 풀이  (1) 2025.09.01
[CodeEngn] RCE basic L11 풀이  (2) 2025.09.01
[CodeEngn] RCE basic L10 풀이  (3) 2025.09.01