ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CodeEngn Advance RCE 6
    $ 리버싱 $/CodeEngn Advance RCE 2019. 7. 19. 18:49

     

    해당 문제는 저번 4번 문제와 비슷한 문제 입니다. 

     

    문제 파일을 열어보겠습니다.

     

    이런식으로 해서 맨마지막 숫자가 답이 되는 문제입니다.

     

    파일을 한번 확인해 보겠습니다.

     

     

    UPX 언패킹을 해보겠습니다.

     

    올리디버거에 넣고 바로 실행을 하면 안티 디버깅 기법이 적용 되어 있습니다.

     

    이렇게 뜨게 됩니다. 

     

    IsDuggerPresent 함수에 BP를 걸어서 문제를 해결할 수 있을 것 같습니다.

     

    바로 다음인 40E967 주소에 TEST EAX, EAX 를 이용해서 디버거 툴을 이용해서 분석을 하면 EAX에 1이 들어가는데 EAX값이 1이 되면 JNZ 에서 점프를 해서 위와 같은 문자열을 출력하게 됩니다.

     

    그래서 TEST EAX, EAX를 CMP EAX, EAX로 바꾸면 우회를 할 수 있습니다.

    수정하고 파일을 아예 저장하고 조금이나마 편하게 분석을 해보겠습니다.

     

    먼저  MessageBox가 나오기 때문에 MessageBoxW함수에 BP를 걸어 보겠습니다.

     

    한번 실행을 하면 숫자 1의 창이 뜨고 닫으면 넘어갑니다.

    계속 쭉 진행을 하다 보면 Switch문이 많은 부분에 도달하게 됩니다.

     

    여기에서 좀만 아래로 내리면 처음 EAX가 1이였고 이제 1이 증가된 값이 2가 된후 for문과 비슷하게 eax값이 어떠한 수가 될때 까지 반복하는 구문입니다.

     

     

    408F13을 보면 다음과 같이 CMP EBP, EAX가 있는데 EAX는 2고 EBP가 316인것을 확인 할 수 있습니다.

     

    316은 16진수 이므로 10진수로 바꾸면 790입니다.

    결국 790번의 루프를 돌때 까지 프로그램은 종료가 되지 않는 것 입니다.

     

    790을 MD5 해시로 만들어서 제출하면

     

     

    Clear!!

     

    또다른 풀이 방법이 있습니다.

     

    해당 파일은 다음과 같은 프로그램으로 제작이 되어있는데 4번문제와 똑같은 파일입니다.

     

     

    790...

    너무 쉬운 풀이네요!..

     

     

     

     

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

    CodeEngn Advance RCE 8  (0) 2019.07.20
    CodeEngn Advance RCE 7  (0) 2019.07.19
    CodeEngn Advance RCE 5  (0) 2019.07.18
    CodeEngn Advance RCE 4  (0) 2019.07.18
    CodeEngn Advance RCE 3  (0) 2019.07.17

    댓글

Designed by Tistory.