ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • lvl 16
    Wargame/CodeEngn Basic RCE 2019. 1. 4. 15:34

    문제



    Name이 CodeEngn일때 Serial을 구하시오 





    풀이


    → 프로그램을 실행한다. Name 값을 "CodeEngn" 값을 입력한 후 비밀번호는 임의의 값 "1234"를 입력한 후 확인한다.





    → PEiD 도구를 이용하여 프로그램을 확인한 결과, "Dev-C++4.9.9.2" 인 것을 확인할 수 있다.





    → IDA 도구를 이용하여 디스어셈블한다. 메인함수를 쉽게 찾을 수 있으며 분석을 진행한다.





    → 문제를 풀기 위해선 비밀번호를 입력받은 후 성공/실패 메시지를 출력하는 분기부터 집중적으로 봐야하는 것을 추측할 수 있다. 따라서, 해당 부분의 코드를 찾은 후 bp를 설정한다.




    → 디버깅을 시작한 후, Name에 "CodeEngn" 값을 입력하고 비밀번호는 임의의 값 "1234"를 입력하여 진행한다. cmp eax, [ebp+var_3C] 명령어에서 break 되며, EAX 레지스터에는 사용자 입력값 "1234"의 16진수 값인 "4D2"가 입력된 것을 확인할 수 있다. 




    → 따라서, 사용자 입력 값과 비교될 [ebp+var_3C]의 값이 어떠한 값인지 확인해보았으며, 값은 아래와 같다.



    → 해당 값은 리틀엔디안 방식으로 저장되었으므로 값은 "E4C60D97" 값이다. 이 값을 10진수의 값으로 변환한다.




    → 확인한 값을 입력하면 정상적으로 문제가 풀리는 것을 확인할 수 있다.





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

    lvl 18  (0) 2019.01.07
    lvl 17  (0) 2019.01.06
    lvl 15  (0) 2019.01.03
    lvl 14  (0) 2019.01.03
    lvl 13  (0) 2019.01.03

    댓글

Designed by Tistory.