ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Reversing] level 9 [144pt]
    $ Wargame $/$ Suninatas $ 2019. 8. 19. 14:24

    문제를 다운 받으려 했으나 악성코드에 대한 의심으로 브라우저에서 차단을 미리 받아 버리는 상태이다.

     

    필자는 wget를 이용해서 다운 받아 보겠습니다.

     

    이제 문제를 풀어보겠습니다. 

    먼저 프로그램을 실행시켜 보도록 해봅시다.

     

    이런 UI의 프로그램이 있는데 Serial 값을 넣는 문제 인것 같스빈다.

    한번 ollydbg를 이용해서 열어보겠습니다.

     

    우리 눈에 보이는 문자열을 이용해서 main으로 접근 할 것이므로 "Suninatas"를 찾아보겠습니다.

     

    위로 좀만 올라가서 PUSH EBP 자리에 breakpoint를 걸고 실행 해보겠습니다.

    입력 값으로는 1234를 넣어 보겠습니다.

     

    문자열 검색 할때 부터 눈에 거슬렸던 6자리의 숫자..

    매우 Serial 스러워서 입력을 해보았습니다.

     

     

    일단... 시리얼은 맞습니다.

    물론 CTF 였다면 여기까지 하고 바로 Skip 했겠지만 이건 Wargame 이니까..!

     

    왜 저문자열이 Serial 이 되는지 한번 알아 보겠습니다.

     

    주소값 : 4502FC 

    어셈코드 : PUSH EBP

    에서 부터 첫 CALL 명령이 나오는 곳이 45031C입니다.

     

    해당 주소에서 내부로 들어가면 Serial 값을 변수에 담는 작업을 확인 하실수 있습니다.

     

    그리고 다음 CALL을 확인해 보면 45032A입니다.

    해당 함수에서는 입력한 값의 자리수를 반환하는 작업을 합니다.

     

    내부로 들어가서 바로 보이는 위의 42F4CD에서 자리수를 구하게 됩니다.

     

    다실행 하고 나오면 EAX 값에 4라는 값이 return 되어서 나온것을 확인 할 수 있습니다.

     

    그리고 대망의 마지막 CALL!!

    주소는 450338 입니다. 

    EAX값과 EDX 값을 한번 확인해 보면 다음과 같은 결과를 확인 할 수 있습니다.

     

    당연히 해당 CALL은 값을 비교하는 곳 일것입니다.

     

    거의 들어오자마자 EAX와 EDX를 비교하게 됩니다.

     

    이렇게 Suninatas의 Reversing 9번 문제를 마치겠습니다.

     

     

    '$ Wargame $ > $ Suninatas $' 카테고리의 다른 글

    [Reversing] Level 11 [198pt]  (0) 2019.09.17
    [Reversing] Level 10 [150pt]  (0) 2019.09.17
    [Forensic] Level 32 [180pt]  (0) 2019.08.19
    [Forensic] Level 31 [200pt]  (0) 2019.08.19
    [Forensic] Level 30 [366pt]  (0) 2019.08.19

    댓글

Designed by Tistory.