Wargame
-
lvl 05Wargame/CodeEngn Basic RCE 2018. 12. 11. 10:32
문제 이 프로그램의 등록키는 무엇인가 풀이 → 프로그램을 실행한다. [Register now !]를 클릭하면 시리얼이 잘못되서 다시 시도하라고 출력된다. → 바이너리 분석을 위해, 디스어셈블 해본 결과 UPX 세그먼트가 보인다. UPX로 패킹된 것으로 추측 가능하다. → UPX 언패킹을 위해서, UPX 도구를 다운받는다. https://upx.github.io/ → 다운받은 UPX를 실행하면 다음과 같은 옵션을 확인할 수 있다. → "-d" 옵션이 언패킹인 것을 확인할 수 있으므로, 다음과 같이 바이너리를 언패킹한다. → 언패킹한 바이너리를 디버깅을 디스어셈블하면 다음과 같이 시리얼을 매칭하는 분기를 분석할 수 있다. → 첫 번째 입력 값의 확인 문자열과 두 번째 입력 값의 확인 문자열은 아래와 같다. ..
-
lvl 01Wargame/HackerSchool FTZ 2018. 12. 11. 01:05
→ level 1 계정을 로그인 하면, level 1 계정의 디렉토리에 들어와져 파일 구조를 살펴볼 수 있다. → hint 파일과, public_html, tmp 디렉토리로 구성되어 있다. hint 파일의 내용은 다음과 같다. → "level2 권한에 setuid가 걸린 파일을 찾는다" 라는 힌트를 볼 수 있다. 여기서 setuid의 개념을 정리. SetUID, SetGID 개념 [참조: http://terms.naver.com/entry.nhn?docId=3431935&cid=58437&categoryId=58437&expCategoryId=58437, http://brothernsister.tistory.com/32] SetUID 파일은 누가 실행하든지 관계없이 해당 파일이 실행될 때 파일 소유자의 ..
-
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에 보이듯이 비쥬얼베이직에 관련된 프로그램으로 추측된다. 여기서 더 자세히 살..