본문 바로가기

CodeEngn

[CodeEngn] Basic RCE L13

<문제>

 

 

<풀이>

우선 문제 파일을 다운로드하고, 7-Zip File Maneger로 압축을 푼다.

 

 

13.exe를 실행해본다.

패스워드를 입력하라는 콘솔창이 뜬다.

 

임의의 비밀번호를 입력해보니

틀렸다는 메시지가 뜨고, 다시 패스워드를 입력 프롬프트가 뜬다.

 

 

프로그램에 대한 정보를 알아보기 위해

PE 파일을 정적 분석할 때 사용하는 툴인 PEiD를 이용해 13.exe를 열어보았다.

닷넷(.NET) 프로그램인 것을 확인할 수 있다.

닷넷 프로그램은 닷넷 프레임워크를 기반으로 작성된 프로그램이다.

 

닷넷 프로그램을 확인하려면 닷넷 디컴파일러가 필요하다.

무료 닷넷 디컴파일러인 dotPeek 이라는 프로그램을 설치했다.

https://www.jetbrains.com/decompiler/

 

dotPeek: Free .NET Decompiler & Assembly Browser by JetBrains

dotPeek is a free tool based on ReSharper. It can reliably decompile any .NET assembly into C# or IL code.

www.jetbrains.com

위의 링크에서 다운로드 가능하다.

 

 

dotPeek으로 13.exe를 열고

ConsoleApplication3 > <RootNamespace> > RijndaelSimpleTest 의 코드를 열어보았다.

RinjdaelSimple 클래스를 이용해서 암호화된 str 문자열을 생성하는 코드를 살펴볼 수 있다.

 

조건문을 살펴보면, 사용자가 입력한 패스워드와 str 문자열 변수을 비교해서

다르면 Bad luck! Try again! 이라는 오류 메시지를 출력하고,

같으면 Well Done! You cracked it! 이라는 성공 메시지를 출력하는 것을 볼 수 있다.

 

 

 

소스코드에서 이 str 변수를 출력하는 코드를 추가하고

프로그램을 실행해서 비밀번호가 출력되도록 해볼 것이다.

 

비주얼 스튜디오를 활용했다.

 

새 프로젝트 만들기를 선택하고

Console App(.NET Framework) 를 선택하고 Next를 클릭한다.

 

프로젝트명을 입력하고 Create한다.

 

dotPeek에서 RijndaelSimple 코드를 복사해서 Program.cs를 overwrite한다.

 

프로젝트에서 우클릭해서 Add > New Item...을 클릭한다.

 

CodeFile을 선택하고 Add를 클릭한다.

 

dotPeek에서 RijndaelSimpleTest 코드를 복사해서 CodeFile1.cs에 overwrite하고 저장한다.

 

코드의 중간에 위와 같이 str을 출력하는 코드를 추가한다.

Console.WriteLine(str);

프로그램을 빌드하고 성공적으로 빌드가 되었으면 프로그램을 실행한다.

 

Leteminman 이라는 str의 내용이 출력되었다.

 

Please enter the password에 Letemanmin을 입력하면 성공메시지가 뜬다.

 

 

<정답 제출>

코드엔진의 Auth페이지에 Key 값으로 Leteminman 입력하면 Success!!가 뜬다.

'CodeEngn' 카테고리의 다른 글

[CodeEngn] Basic RCE L15  (0) 2023.11.13
[CodeEngn] Basic RCE L14  (0) 2023.11.13
[CodeEngn] Basic RCE L12  (0) 2023.11.09
[CodeEngn] Basic RCE L11  (0) 2023.11.07
[CodeEngn] Basic RCE L10  (0) 2023.11.05