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 |