ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CodeEngn Basic RCE 16
    $ 리버싱 $/CodeEngn Basic RCE 2019. 5. 7. 16:08

    해당 파일을 열어 보니 다음과 같이 프로그램이 실행 됩니다.

     

    Name을 입력받고 Password를 입력 받는 것으로 보아 CodeEngn을 입력 했을때 필요한 Password를 찾는 것 같습니다.

     

    일단 문자열을 찾아 보겠습니다.

    프로그램 화면에 등장하는 아무 문자열이나 BP을 걸고 주소를 따라 가 봤습니다.

     

    시작 주소는 401390 이였습니다. 

     

    하지만 저는 문자열이 다 출력된 후에 입력을 받는 구간 까지 도달 해야 하기때문에 F9를 이용해서 401447로 한번 가보겠습니다.

     

    그리고 Name을 입력받는 주소인 401501에 BP를걸고 F9를 입력하면 다음과 같이 Name을 입력 할 수 있습니다.

     

     

    그리고 아래로 좀 더 내려가 보면 Password를 입력 받는 주소인 401589가 나옵니다. 해당 주소를 실행하면 Password를 입력 받을 수 있습니다.

    Password로 1234를 입력해 보겠습니다. 

     

    그리고 아래쪽을 보면 성공과 실패로 나뉘어 지는 CMP 명령어와 분기 점을 찾을 수 있습니다. 

    CMP 명령어가 존재 하는 40159F를 BP 걸고 F9를 실행하면 다음과 같은 명령어를 확인 할 수 있습니다.

     

     

    CMP EAX, DWORD PTR SS:[EBP-3C] 라는 명령어를 찾을 수 있고 현재 EBP는 70FF38이라는 것을 알 수 있습니다. EBP의 현재 주소를 Dump로 확인해 보겠습니다. 

     

     

    명령어를 확인해 보면 제가 입력한 Password가 EAX에 현재 들어있기 때문에 EAX와 EBP-3C에 위치한 문자열과 비교 하는 것을 알수 있습니다. 

    EBP-3C = 70FF38 - 3C = 70FEFC입니다.

     

    70FEFC ~ 70FEFF 까지의 문자열을 확인해 보면 다음과 같습니다.

     

    리틀 엔디안 방식으로 들어 있기 때문에 변환을 시키면 16진수로 E4C60D97 입니다. 

     

    그러므로 16진수인 E4C60D97를 10진수로 바꾸면 다음과 같습니다.

    16 진수 E4C60D97 = 10진수  3838184855

     

    Password는 3838184855입니다.

     

     

     

    '$ 리버싱 $ > CodeEngn Basic RCE' 카테고리의 다른 글

    CodeEngn Basic RCE 19  (0) 2019.05.07
    CodeEngn Basic RCE 17  (0) 2019.05.07
    CodeEngn Basic RCE 15  (0) 2019.05.07
    CodeEngn Basic RCE 14  (0) 2019.05.07
    CodeEngn Basic RCE 13  (0) 2019.05.06

    댓글

Designed by Tistory.