[CodeEngn] BASIC RCE L13
Reversing/Reversing (Wargame)

[CodeEngn] BASIC RCE L13

728x90

파일 확인

실행

password를 입력받고 비교하여 적절한 메시지를 출력하는 프로그램이다!

- detect it easy

패킹되지 않은 파일이다.

- PEiD

  • C#으로 작성된 프로그램이다!

파일 분석

디버깅 (어셈블리 코드 확인)

C#으로 작성된 코드라서 그런가.. 익숙한 형태의 어셈블리 코드가 아니다. 그래도 나름대로 해석을 해보자면,,

사용자로부터 password를 입력받고, op_Equality를 호출해 두 개의 string 즉, 사용자가 입력한 password와 실제 password를 비교해 일치하는 경우 "Well Done!"메시지가 출력되도록, 일치하지 않는 경우 loc_202로 이동해서 (아마도 branch if false가 아닐까..) "Bad Luck!"메시지를 출력하도록 한다.

 

✔ 검색을 좀 해봤더니 C#으로 작성된 파일은 올리디버거, x64dbg와 같은 동적 분석 도구로는 분석이 어렵다고 한다!!

✔ 그래서 필요한 것이 "dotPeek"로, C#으로 작성된 파일을 따로 디컴파일해줄 수 있는 도구다.

- dotPeek

[File] > [Open]으로 디컴파일할 파일(13.exe)를 선택하고,

"ConsoleAppllication3" > "<Root Namespace>" > "RijndaelSimpleTest" > "Main"을 선택하면 소스코드를 확인할 수 있다.

  • str은 사용자가 입력한 값과 비교하는 password로, while문에서 사용자의 입력값에 따라 출력되는 문자열이 달라진다.
  • while문의 바로 앞 코드를 보면 str에 Decrypt함수의 반환값을 저장하는 것을 알 수 있다.

코드를 수정해서 password를 찾아내기 위해 "Export to Project"를 선택한다.

Visual Studio

잘못된 값을 입력했을 경우의 WriteLine 문 뒤에 입력해야할 password인 str을 출력하는 코드를 추가한다.

SMALL

'Reversing > Reversing (Wargame)' 카테고리의 다른 글

[Reversing.Kr] Easy Unpack  (0) 2021.06.01
[CodeEngn] BASIC RCE L14  (0) 2021.06.01
[CodeEngn] BASIC RCE L12  (0) 2021.05.28
[CodeEngn] BASIC RCE L11  (0) 2021.05.28
[HackCTF] strncmp  (0) 2021.05.28