1 분 소요

1. 강의 수강

Linux Command Line 강의 수강

Linux Command Line 이란 shell 이라고도 하는 인터페이스.
커맨드를 입력하면 시스템이 실행하고 결과를 출력하는 방식으로 동작.
보통 실행할 프로그램 이름과 인자를 입력하여 실행.

프로세스랑 실행 중인 프로그램.
프로그램은 컴퓨터에 존재하는 파일이고, 파일들은 파일 시스템에 존재.

/ : root, 파일 시스템의 기본 디렉토리
/usr : Unix System Resource. 모든 시스템 파일을 포함
/usr/bin : 컴퓨터에 설치되어 실행 가능한 파일들
/usr/lib : 컴퓨터 프로그램들이 사용하는 공유 라이브러리
/usr/share : 프로그램 resource
/etc : System Configuration
/var : 로그, 캐시 등
/home : 사용자 소유 데이터
/proc : 런타임 프로세스 데이터
/tmp : 임시 데이터 저장공간

2. 문제 풀이

문제 수가 많아 해결한 모든 문제를 다루지는 못하기 때문에
몇 가지만 선택해 풀이를 작성했다.

1. babysuid7

babysuid7-1

SUID를 통해 vim 프로그램 실행 시 root 권한을 얻도록 설정이 되어있다.
따라서 flag 파일을 읽기 위해서는 vim 프로그램을 이용해야 한다.
cat flag 대신 vim flag를 입력해 vim 에디터로 flag 파일의 내용을 볼 수 있다.

2. babysuid10

babysuid10-1

SUID를 통해 rev 실행 시 root 권한을 얻도록 설정되어있다.
마찬가지로 rev 프로그램을 이용해 flag 파일을 열어야 한다.
rev flag 명령어를 통해 flag 파일의 내용을 볼 수 있다.
하지만 rev 프로그램은 입력으로 들어온 파일의 내용을
역순으로 바꿔 출력해주는 프로그램이다.
따라서 출력된 내용을 복사해 임시로 파일을 하나 생성한 뒤
해당 파일을 다시 rev 프로그램의 입력으로 주고 실행하면
역순이 아닌 원래 flag 파일의 내용을 알 수 있다.

3. babysuid17

babysuid17-1

SUID를 통해 gzip 실행 시 root 권한을 얻도록 설정되어있다.
gzip 프로그램을 이용해 flag를 열어야 하는데,
gzip을 이용해 압축하고 다시 해제해도 여전히 권한 설정은 그대로이다.
따라서 두 가지 방법을 사용해 flag 파일을 읽을 수 있는데
첫 번째는 gzip을 사용해 flag 파일을 압축한 뒤
압축된 flag.gz 파일을 gzip -c flag.gz라는 커맨드를 입력함으로써
파일을 읽을 수 있다. -c 옵션은 터미널 화면에 파일 내용을 출력하는 옵션이다.
두 번째는 마찬가지로 압축된 flag.gz 파일을 zcat으로 읽는 것이다.
zcat은 gz 형태로 압축된 파일의 내용을 압축을 해제하지 않은 상태로
미리 볼 수 있게 해주는 프로그램이다.
따라서 zcat flag.gz를 입력하면 flag 파일의 내용을 읽을 수 있다.