ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • lvl 03
    Wargame/CodeEngn Basic RCE 2018. 12. 10. 20:44

    문제



    비주얼베이직에서 스트링 비교함수 이름은? 





    풀이



    ※ 처음에 실행하니 MSVBVM50.dll 이 없어서, 실행이 안된다. 검색 결과, 다음 사이트의 msvbvm50.exe 를 다운받아서 라이브러리를 설치한 후 실행이 가능.


    https://support.microsoft.com/ko-kr/help/180071/file-msvbvm50-exe-installs-visual-basic-5-0-run-time-files


    → 프로그램을 실행한다. 무슨말인지 모르겠다.





    → 확인을 누르면, 다음과 같은 프로그램이 실행되며, 임의의 Regcode를 입력하면 Error 메시지가 출력된다.








    → IDA로 디스어셈블 후, Function Window에 보이듯이 비쥬얼베이직에 관련된 프로그램으로 추측된다. 여기서 더 자세히 살펴보면 문제에서 비쥬얼베이직의 스트링 비교함수를 언급하였으며, 보이는 Function 중 "__vbaStrCmp" 라는 것이 보이는 것을 알 수 있다.






    → [View]-[Open Subview]-[Strings] 메뉴를 실행하여, 의심가는 함수 "__vbaStrCmp"를 더블클릭한다.





    → "__vbaStrCmp"를 Trace한 후, db '__vbaStrCmp' xref를 찾는다. 아래와 같이 두 곳에서 사용되고 있으며 둘 중 아무곳을 더블클릭하여 Trace한다.





    → 사용되는 곳을 분석하니, 사용자 입력 값의 주소인 [ebp-58h] 과 "2G83G35Hs2" 문자열을 함수의 파라미터로 전달하는 곳을 확인할 수 있다. 추가적으로, 아래 분기를 살펴보면, 성공문구를 볼 수 있다.





    → 즉, 사용자 입력값과, "2G83G35Hs2" 문자열을 비교하고 있으므로, 성공분기를 가기 위해 사용자 입력값을 "2G83G35Hs2" 입력하면 성공하는 것을 볼 수 있다.





    → 추가적으로 사용자 입력 값이 아닌 바이너리 패치를 이용하여 분기를 변조하는법으로도 충분히 우회가능한 것을 예상할 수 있다.






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

    lvl 06  (0) 2018.12.11
    lvl 05  (0) 2018.12.11
    lvl 04  (0) 2018.12.11
    lvl 02  (0) 2018.12.09
    lvl 01  (0) 2018.12.09

    댓글

Designed by Tistory.