1. 지문


2. 분석
우선 파일 정보를 확인

UPX 2.90 패치되어있으니 원활한 분석을 위해 언패킹을 먼저함

IDA로 열면 오류를 뿜어대길래
Olly로 열 수 밖에 없었다.

언패킹된 문제 바이너리를 열면

이렇게 다양한 함수들을 볼 수 있다.

우선 스트링을 검색해서 실패로 의심되는 문구를 출력하는 부분을 찾아보자


더블클릭하고 이동하면

이 곳으로 이동된다.

(미리 디버깅을 하고 핵심 BP들을 걸었다)

조금더 위로 올라가면 빨갛게 BP가 걸린부분인
4012FB가 있는데 저기가 내가 입력한 이름부분이다.

자. 문제에서 CodeEngn/12345(아무숫자)를 입력하고 CHECK를 눌러보자

그럼 저렇게 두 군데가 변경될 것이다.
그리고 왠만하면 아랫부분(401300~40132C)이 패스워드 부분을 결정하는 곳이라고 생각을 할 수가 있었다.
왜냐하면 별달리 키값을 조정하는 부분을 찾지 못했기 때문이다.

아 미리 알아둘게 있는데, 문제지문에서 숫자5자리라 했으니, 왠만하면 특정 주소에 값이 저장되어 있다는 것도 대강 눈치를 채야한다. 문자열이아니라.

키값 뽑는 분석은 나중에하고, 바로 결론부터말하면
40133A부분에 ESI부분을 보면 키 값을 볼 수가 있다.

패스워드는 76193이다.

이제 디버거 다시 실행해서 저 숫자를 패스워드로 입력하면

성공했다!

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

CodeEngn Basic RCE 13 풀이 (최초 C# 분석??)  (0) 2017.07.04
CodeEngn Basic RCE 12 풀이  (0) 2017.07.04
CodeEngn Basic RCE 11 풀이  (0) 2017.07.04
CodeEngn Basic RCE 10 풀이  (0) 2017.01.31
CodeEngn Basic RCE 09 풀이  (0) 2016.11.10
  1. 문제 지문
     

     별다른 특징이 없다. 그냥 키값 찾아서 인증만하면 되는것 같다.


  1. IDA로 열어보고, OllyDBG로도 열어보기

     OllyDBG로 열었더니 에러
     

     
     IDA로 열었더니 ...
     

     일단 코드는 나오나 처음보는 패턴이라 패쓰

     알아본 결과 이 문제는 C#으로 코딩이 된것이였다.
     C#으로 코딩되어있으니 OllyDBG를 통한 분석은 불가능이다.

     위 문제들을 해결하는 방법을 검색한 결과
     

     .NET Reflector를 이용해서 디버깅을 진행해야한다.
     
     (사용법을 먼저 조사하고..)

     

     프로그램 실행후 문제 파일을 불러오면 위와 같이 나온다.
     스샷은 메인 소스코드를 나타낸것. 

     이제 위 소스코드를 파악하면 된다.
     
     위 소스코드에서 해답을 찾기위한 코드를 보자면
     

     이 부분이다. 한 줄을 읽어 오는데, plainText와 같으면 된다..!
     그러면 우리는 plainText를 찾으면 된다.

     이 소스코드들을 추출하자.
     

     
     추출한뒤 plainText를 보기위해서 드래그한 영역을 추가로 적어주자.
     


     Ctrl+F5로 컴파일 해서 확인해보자.
     

     바로 Leteminman이라는 문자열이 출력되고

     이것을 값으로 입력해 주면된다.
     

  1. 문제 지문
     

  • 보아하니 Key값을 먼저 찾고, HxD로 메시지 부분을 수정하면 될 것 같다.





  1. 풀어보자

CFF Explorer로 열람한 화면이고 패커가 걸려있는거 같다.

일단 올리로 열자.

Key값으로 의심되는 부분이 있었으나.. 저 기다란 문자열은 훼이크다. 중요한 것은 그 밑에 있었다.

바로 이 부분이다. cmp, jnz부분을 봐야한다. 그 바로 밑에 인증을 축하한다는 MessageBox함수가 있기 때문이다.

그리고 인증 키값이 훼이크라고 했는데. cmp eax, 7A2896BF에서 7A2896BF가 핵심 Key값이라는 것을 알아야한다.
저 부분을 10진수 변환하면 

이렇게 된다. 저 2049480383을 실행해서 Key값에 입력하면

위와 같이 뜬다.

자 이제 지문에 맞게 파일을 HxD로 수정을 해보면

이 부분을 수정하면된다. 일단 문제의 답을 적자면
2049480383 + 0D3B + 0D45 => 20494803830D3B0D45

이렇게 적으면 인증되고
패치결과 

위와 같이 잘 되었다.


  1. 문제 지문
     

  • 핵심 : Stolenbyte


  1. 문제 풀이
  • StolenByte란, EP의 ㅋ드를 몇개 이동시킨 것이라고 생각하면 된다.

upx2.90 패킹이 되어 잇는 것을 확인




Avast에서 Malware로 감지.. 진행 중단


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

CodeEngn Basic RCE 13 풀이 (최초 C# 분석??)  (0) 2017.07.04
CodeEngn Basic RCE 12 풀이  (0) 2017.07.04
CodeEngn Basic RCE 10 풀이  (0) 2017.01.31
CodeEngn Basic RCE 09 풀이  (0) 2016.11.10
CodeEngn Basic RCE 08 풀이  (0) 2016.11.06

 문제 지문

인증키 문제인듯


아무입력이 되지않았다..

그러면 여기서는 뭐 할수가 없겠구..


CFF로 본 결과 ASPack이라는 패커로 패킹이 되어있다.


그래서 패킹을 풀어서 찾는방법이 있겠으나


그냥 올리로 열어서 디버깅해서 OEP를 찾아보도록 하겠다



역시..



일단 ASPack패커를 풀어 OEP로가는 방법을 구글에서 찾아본결과


일단 F8을 눌러서 스택의 변화를 보자


자, ESP가 변화한것을 볼 수 있다. 이제 이 값을 왼쪽 하단 HEX에서 검색하면



위와같이 주소 값(?)이 나오고, 여기서 드래그를 하고 



브레이크 포인트를 걸어주고 F9를 눌러준다



여기서 F8을 눌러 RETN까지 가면


그러면 이곳이 원래의 EP가 된다

컨트롤+A를 눌르면 자동으로 분석이 되는것은 분석이 된다.



이제 2번째로 정답인증으로 가는 곳으로 찾아보자


문자열 검색으로 찾아보면



친절하게 성공문자열이 보여진다.

더블클릭하자.



여기로 보내주는 OP코드를 찾기위해 스크롤을 위로 땡겨서 뒤져보면



JNZ부분이 보이고 이 부분에서 갈려서 성공구문을 통과하느냐 거치느냐가 결정되는것 같았다.


위의 결과들을 Auth에 입력하면 클리어

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

CodeEngn Basic RCE 12 풀이  (0) 2017.07.04
CodeEngn Basic RCE 11 풀이  (0) 2017.07.04
CodeEngn Basic RCE 09 풀이  (0) 2016.11.10
CodeEngn Basic RCE 08 풀이  (0) 2016.11.06
CodeEngn Basic RCE 07 풀이  (0) 2016.11.05

+ Recent posts