Wargame
-
lvl 02Wargame/HackerSchool FTZ 2018. 12. 11. 23:43
→ level 2 계정을 로그인 하면, level 2 계정의 디렉토리 파일 구조를 살펴볼 수 있다. → hint 파일을 살펴본다. → "텍스트 파일 편집 중 쉘의 명령을 실행시킬 수 있다"는 힌트를 얻을 수 있으며, vi편집기의 명령어 실행 기능을 검색해야 한다. → 힌트 내용을 살펴본 후, level3의 권한을 얻기 위해 해당 SetUID가 설정된 파일을 찾는다. → 찾은 파일을 실행하면 vi 편집기가 나타난다. 현재 editor라는 프로세스를 생성했으며 해당 프로그램의 소유자는 level3이다. 그리고 SetUID가 설정되어 있으므로, 해당 프로그램을 실행할 때 level3의 권한을 획득할 수 있다. → 힌트를 통해 해당 프로세스에서 bash를 실행했으며 level3 권한의 쉘을 획득한다. → my-..
-
lvl 08Wargame/CodeEngn Basic RCE 2018. 12. 11. 23:34
문제 OEP를 구하시오Ex) 00400000 풀이 → 프로그램을 실행한다. Rekenmachine 이라는 계산기이다. 기능상 특이한 점은 없어 보이고, 문제에서 OEP란 말이 있으므로, 패킹된 것으로 추측한다. → IDA로 디스어셈블한 결과, UPX로 패킹되었으며 UPX 특성상 POPAD 후 jmp 분기문이 OEP 이므로 다음과 같이 바로 찾을 수 있다. → 디버깅을 통해 찾으면 굉장히 복잡하지만 디스어셈블의 그래프 뷰로 찾으면 굉장히 찾기 수월하다.
-
lvl 07Wargame/CodeEngn Basic RCE 2018. 12. 11. 20:17
문제 컴퓨터 C 드라이브의 이름이 CodeEngn 일경우 시리얼이 생성될 때 CodeEngn은 "어떤것"으로 변경되는가 풀이 → 프로그램을 실행한 후, 임의의 시리얼을 입력한 후 "Check"를 클릭하면 잘못된 시리얼이라는 메시지가 출력된다. → 디스어셈블한 후, 문제 중 컴퓨터 C드라이브의 이름이 언급됬으므로, 이에 해당하는 라이브러리 함수를 찾아본다. 적당히 "lpVolumeNameBuffer"이라는 변수가 있으며 네이밍을 봐서 드라이브 이름으로 추측할 수 있다. 게다가, 뒷 부분에 VolumeNameBuffer에 일련의 연산작업을 하는 것도 볼 수 있다. 여기에 bp를 설정한 후 디버깅한다. → break 후, VolumeNameBuffer의 값이 저장된 주소 값으로 따라가서, 값을 "CodeEng..
-
lvl 06Wargame/CodeEngn Basic RCE 2018. 12. 11. 18:37
문제 Unpack을 한 후 Serial을 찾으시오. 정답인증은 OEP + Serial Ex) 00400000PASSWORD 풀이 → 프로그램을 실행한 후, 임의의 시리얼을 입력한 후 "Check Serial"를 클릭한다. → IDA를 이용하여 디스어셈블한 결과, UPX로 패킹된 것을 확인할 수 있다. → 언패킹을 한 후, start 함수의 주소 값이 OEP이며 OEP의 주소는 아래와 같다. → 추가적으로, 시리얼을 찾기 위해 분석을 진행했으며 다음과 같은 시리얼 비교 분기문을 찾을 수 있다. → 찾은 문자열을 입력할 시, 성공 메시지가 나타난다.