Wargame/CodeEngn Basic RCE
-
lvl 04Wargame/CodeEngn Basic RCE 2018. 12. 11. 00:33
문제 이 프로그램은 디버거 프로그램을 탐지하는 기능을 갖고 있다. 디버거를 탐지하는 함수의 이름은 무엇인가 풀이 → 프로그램을 실행한다. 정상을 확인한다. → 디버깅을 탐지한다고 하니 일단 IDA로 Attach 시도한다. → 디버깅 당한다고 나타난다. 따라서, 프로그램 내부에 디버깅을 탐지하는 함수가 존재하여, 이 결과에 따라 상태문구를 출력하는 로직으로 추측된다. → 디스어셈블한다. _main_0 함수를 살펴보면 "IsDebuggerPresent" 함수라는 함수에 의해 디버깅을 탐지하고 있으며, 디버거가 탐지되면 왼쪽분기가 실행되며, 디버거가 탐지되지 않는다면, 오른쪽 분기가 실행된다. → 따라서, 디버깅을 탐지하는 함수의 이름은 "IsDebuggerPresent"이고, 이를 우회하려면 바이너리 패치를..
-
lvl 03Wargame/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에 보이듯이 비쥬얼베이직에 관련된 프로그램으로 추측된다. 여기서 더 자세히 살..
-
lvl 02Wargame/CodeEngn Basic RCE 2018. 12. 9. 19:39
문제 패스워드로 인증하는 실행파일이 손상되어 실행이 안되는 문제가 생겼다. 패스워드가 무엇인지 분석하시오 풀이 → 프로그램을 실행한다. 다음과 같은 에러가 나타난다. → 실행되지 않는다. 그렇다면 IDA로 열어본다. → PE 실행파일로 인식하지 못한다. 그렇다면, 실행파일 구조가 깨져있는 것을 예상해볼 수 있으며, 문제에서도 실행파일이 손상되었다고 제시한 것을 참고한다. → 따라서, 실행파일 구조를 살펴보기 위해, [Binary file] 메뉴를 선택해서 로드한다. → MZ 시그니처는 확인할 수 있으나, PE 시그니처를 찾을 수 없다. → PE시그니처 값인 (50 45 00 00)이 없는 것을 확인했고, PE 헤더부분이 일정부분 없어진 것으로 추측할 수 있다. → 패스워드 값을 찾기 위해, 나머지 바이너..
-
lvl 01Wargame/CodeEngn Basic RCE 2018. 12. 9. 18:11
문제 HDD를 CD-Rom으로 인식시키기 위해서는 GetDriveTypeA의 리턴값이 무엇이 되어야 하는가 풀이 → 프로그램을 실행한다. → 음.. CD-ROM Drive가 아니라고 Alert 메시지가 나타난다. → 디스어셈블을 해보았다. 프로그램 구조가 대충 파악된다. → GetDriveTypeA 함수를 실행한 후, eax 레지스터와 esi 레지스터를 비교한 결과를 통해 성공 유무를 파악한다. → 적당한 곳에 bp를 찍고 디버깅한다. → GetDriveTypeA 함수를 실행한 직후, eax 레지스터의 값이 "3"임이 확인된다. → eax 레지스터는 값이 1이고, esi 레지스터는 401003인 것을 알 수 있다. → 따라서, cmp eax, esi 코드가 실행되기 전, esi 레지스터를 강제로 1로 맞..