1. 풀이

- level2 홈 디렉터리의 내용이며, hint 파일의 내용 확인

- 텍스트 파일 편집, 즉 vi 편집기의 명령모드를 통해 쉘의 명령을 수행할 수 있음

VI(Visual Editor)
- 유닉스 환경에서 가장 많이 쓰이는 문서 편집기
- 마우스 입력 장치가 필요 없으며, 키보드 입력으로 모든 기능을 사용할 수 있기 때문에 터미널 환경에서 주로 사용되는 프로그램

모드 설명
명령 모드 - vi를 실행시키면 가장 먼저 접하는 기본 모드 
- 커서의 이동, 수정, 삭제, 복사 붙이기, 탐색 등 가능
- i,a,o,I,A,O 등을 입력하면 입력 모드로 전환되며, shift + : 입력 시 ex 명령 모드로 전환됨
입력 모드 - 글자를 입력하는 문서를 만드는 모드
- 명령 모드에서 입력 전환키를 입력해 전환시 화면 아래에 '-- INSERT --' 표시 
- [ESC]를 입력해 명령 모드로 전환
ex 명령 모드 - 명령 모드에서 ':'키를 입력했을 때 화면 맨 아랫줄에서 명령을 수행하는 모드
- 저장, 종료, 탐색, 치환 및 vi 환경 설정 등의 역할을 하는 모드
- [ESC]를 입력해 명령 모드로 전환

- ex 명령 모드에서 ":!명령어" 형식을 통해 쉘 명령 수행이 가능

- ex 명령 모드를 통해 :!/bin/bash 수행 결과 반응이 없으며, :!my-pass 수행level2의 비밀번호가 출력됨.

- level3의 쉘 명령을 수행하기 위해 level3 권한이면서, setUID가 설정된 파일을 찾아봄.

- /usr/bin/editor 파일이 해당 조건을 만족하는 파일인것을 알 수 있음.

- 해당 파일을 실행 시켜보면 vi 에디터인 것을 알 수 있으며, ex 명령모드를 통해 :!/bin/bash를 수행할 경우 setUID가 설정되어 있어, level3의 권한으로 쉘이 실행됨.

- my-pass 명령을 통해 level3의 비밀번호를 확인할 수 있음.

2. GDB를 통한 의사 코드 복원

- setreuid>system 순으로 함수가 호출

- level3의 권한으로 system 함수를 통해 /bin/vi를 실행

#include <stdio.h>
#include <stdlib.h>

int main()
{
setreuid(3003,3003) // level3의 권한 부여

system("/bin/vi") // vi 실행

return 0;
}

'문제풀이 > FTZ' 카테고리의 다른 글

FTZ Level5 풀이  (0) 2022.10.27
FTZ Level4 풀이  (0) 2022.10.27
FTZ Level3 풀이  (0) 2022.10.25
FTZ Level1 풀이  (0) 2022.10.24
FTZ 환경 구축  (0) 2022.10.23

+ Recent posts