All
-
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의 주소는 아래와 같다. → 추가적으로, 시리얼을 찾기 위해 분석을 진행했으며 다음과 같은 시리얼 비교 분기문을 찾을 수 있다. → 찾은 문자열을 입력할 시, 성공 메시지가 나타난다.
-
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 파일은 누가 실행하든지 관계없이 해당 파일이 실행될 때 파일 소유자의 ..