WARGAME/FTZ

FTZ training 1~10 정리

msh1307 2022. 2. 10. 22:01

*FTZ를 공부하면서 배운 것들을 정리했습니다. 틀린 정보가 있을 수 있습니다.

FTZ training 계정/비번

1. trainer1/trainer1

2. trainer2/linuxer

3. trainer3/computer

4. trainer4/mungguta

5. trainer5/goodluck

6. trainer6/coffee

7. trainer7/to the top

8. trainer8/player

9. trainer9/programming

10. trainer10/best!

ls : 'list segments'의 약자로 디렉토리들과 파일들을 보여주는 기본적인 명령어

ls -l : 파일 형태, 퍼미션, 크기등을 출력.

ls -a : 숨긴 파일도 출력.(리눅스에선 파일 앞에 .을 숨긴 파일로 인식함.)

파일 성격: -은 특수파일, d는 디렉토리, l은 링크

파일 성격  퍼미션   유저     그룹       용량      생성 시간         이름

-rw-rw-r--     1 trainer1 trainer1    779     9월 24 18:37   start.txt

drwxr-xr-x    2 trainer2 trainer2   1024    9월 24 11:52   tmp

pwd : 현재 경로 출력.

cd 절대경로 or 상대경로 : 경로로 이동.

*참고

- 절대경로 VS 상대경로 : 절대경로는 고유한 경로. 위치, 주소같은 느낌, 상대경로는 현재 위치한 곳의 경로를 기준으로한 경로.

- 절대경로 예) /dev/null , /home 등

- 상대경로 예) ./ , ../ 등 

 

 

mkdir 디렉토리 : 디렉토리 생성.

rmdir 디렉토리 : 디렉토리 삭제.

cp 원본파일 파일1: 원본파일을 파일1이라는 이름으로 복사.

rm 파일 : 파일 삭제.

mv 파일 : 파일 이동, 이름 수정.

 

터미널 VS 콘솔 : 텔넷을 통해 접속하면 터미널, 직접 리눅스를 설치하고 로그인하면 콘솔

터미널 : 텍스트 입출력 환경

콘솔 : 컴퓨터 조작에 쓰이는 입출력 장치, 물리적 터미널 

 

w : 서버 접속자 보기 

USER    TTY     FROM                  LOGIN@    IDLE    JCPU   PCPU   WHAT

root     tty1                               12:51pm    0.00s   0.20s   0.03s    w

guest   pts/0    210.95.24.129    03:21am    3.10m 0.12s   0.01s    -bash

USER : 로그인한 ID

TTY : 콘솔/터미널 (tty는 콘솔, pts는 터미널)

FROM : 접속한 컴퓨터 IP (root는 콘솔 접속이라 ip가 나타나지 않음.)

LOGIN@ : 로그인 시간

IDLE : 최종 명령 수행 후 대기시간(아무것도 안한 시간)

JCPU : TTY 필드에서 사용되는 장치가 사용하는 모든 프로세스의 CPU 사용시간을 나타냄.

PCPU : WHAT 필드에 나와있는 프로세스의 CPU총 사용시간(명령 지연시간)

WHAT : 현재 어떤 명령 사용하는 지를 보여줌.

 

finger -l : 원격, 로컬 유저 정보 보기. /etc/passwd에서 불러와서 보여줌. w보다 조금 더 자세하게 정보를 볼 수 있음.

tty : 자신의 터미널 정보 확인

ifconfig : 현재 활성화된 네트워크 인터페이스의 정보 출력. 현재 접속한 서버의 ip볼 수 있음.

write ID /dev/pts/pts번호 : 쪽지 보내기.

wall 내용 : 모두에게 쪽지 보내기.

 

*디렉토리

- /bin : 중요하고 필수적인 리눅스 실행 파일들이 위치한 곳, ls같은 것들도 이곳에 위치함.

- /boot : 리눅스 부팅 관련 파일

- /dev : 하드웨어 관련된 정보

- /etc : passwd파일, shadow파일, 리눅스 설정 파일 등이 위치한 곳

- /home : 일반 사용자들의 홈 디렉토리, guest,trainer1-10, level1-10도 이 디렉토리에 속해있다.

- /lib : 라이브러리 파일들이 위치한 곳

- /mnt : 마운트 시킨 시디롬 등이 들어가는 곳

- /proc : 프로세스들이 파일 형태로 저장되는 곳

- /root : 루트의 홈 디렉토리

- /sbin : 기본명령 제외한 시스템 관리용 실행파일 위치한 곳.

- /tmp : 임시로 파일 저장하는 디렉토리(누구나 이 디렉토리에 엑세스 가능) 

- /usr : 다양한 프로그램들 설치된 곳

- /var : 시스템 운영중 생성되는 임시파일, 외부 접속에 대한 로그 파일들이 저장된 곳

*파일

/etc/passwd : 사용자들에 대한 정보가 저장되어 있는 파일. 보안상의 문제로 비밀번호는 더 이상 저장되지 않는다. 

/etc/shadow : 실질적으로 비밀번호가 저장되어있는 파일. root만 접근가능.

/etc/services : 서버가 무슨 서비스 활성화중인지 보여줌.

/etc/issue.net : 처음 접속할 때 나오는 화면.

/etc/motd : 로그인 후 나오는 메세지

~/public_html : 각 사용자들의 홈페이지 파일. 해킹에 성공하면 수정해서 hacked by xxx같은 문구를 남기기도 함.

*참고: ~ 는 홈 디렉토리를 의미함.

 

whoami : 자신에 대한 정보

id : 자세한 자신에 대한 정보

cat /etc/passwd : 서버에 활동중인 사람들의 간단한 계정 정보

uname -a : 커널 버전 확인, 모든 정보 출력.

cat /etc/*release : 설치된  OS 버전 출력. 

*참고: * 는 정규 표현식으로 뒤에 release가 포함된 파일을 의미함. 이를 쓰는 이유는 배포판마다 앞에 붙는 이름이 다르기 때문. 

rpm -qa : 패키지 정보 출력. 

cat /proc/cpuinfo : cpu 정보 출력.

 

*/etc/passwd 파일 분석

ex) 

root : x : 0 : 0 : Admin : /root : /bin/bash

  1     2    4                6        7

1 : 로그인 할 때 사용되는 ID (여기선 root)

2 : 패스워드(보안상의 이유로 현재는 /etc/shadow에 저장됨) 

3 : 컴퓨터에 입력되는 사용자 - 컴퓨터 입장에선 숫자로 받아들임. (여기서 0은 root를 의미함)

4 : 해당 사용자가 속한 그룹

5 : 사용자의 이름

6 : 사용자의 홈 디렉토리

7 : 처음 로그인 했을 때 실행되는 프로그램

 

tar cvf 합쳐질파일 합칠파일들 : 파일들을 합침. 백업용으로 많이 사용. 

tar xvf 해제할파일 : 합쳐진 파일 해제.

*참고: c는 create, x는 extract, v는 view,f는 file을 의미함.

- c : 새 파일을 생성시킨다는 옵션

- x : 합쳐진 파일들을 다시 해제시킨다는 옵션

- v : 과정을 출력하는 옵션

- f : 파일로서 백업을 하겠다는 옵션

 

gzip 파일 : 압축

gzip -d 파일 : 압축 해제

*압축 확장자 

- .tar : tar로 합쳐진 파일

- .gz : gzip으로 압축된 파일

- .tar.gz : tar로 합쳐진 뒤 압축된 파일

- .tgz : tar로 합쳐진 뒤 압축된 파일(위와 동일)

 

cat > 파일 : 파일 생성, 입력되는 내용을 파일안에 적음. 

*참고 : >는 리다이렉션을 의미함. 리다이렉션은 입출력의 방향을 바꿀 수 있음. 

기본적인 문법 형태는 아래의 형태임.

명령어 > 파일 

위의 줄은 명령어의 표준 출력이 파일에 기록되는 것을 의미함.

기본적으로 >는 1>이 생략된 것으로, 1은 표준 출력, 2는 표준 오류, 0은 표준 입력을 의미함. 

만약 파일에 덧붙여서 추가하고 싶다면 >>를 사용해 내용을 추가할 수 있다. 

명령어 2>/dev/null 같이 사용하여 오류 메세지를 /dev/null이라는 일종의 쓰레기통?에 버려서 오류메세지를 안볼 수 있다.

 

gcc -o c파일1 파일2 : c파일1을 파일2로 컴파일.

 

*id 명령어 결과 분석

uid=2009(trainer9) gid=2009(trainer9) groups=2009(trainer9)

- uid : User ID약자로 컴퓨터가 알아보기 쉽게 숫자를 부여한 것

- gid : Group ID의 약자로 특별히 변경하지 않는 한 gid와 uid는 같음.

- groups : 현재 자신이 어떤 그룹에 속해 있는지를 보여줌. 

 

*퍼미션 분석

Read : 읽기

Write : 쓰기

eXecute : 실행

*참고 : 쉘 스크립트같은 파일들은 실행시키기 위해선, execute뿐만 아니라 read 퍼미션도 필요하다. 읽고 해석하는 과정이 추가되기 때문. 

-rwxrwxrwx      1  trainer9 trainer10    5  10월 20 21:35     test1

   1     2    3                   5                                      6

1 : 유저의 권한

2 : 그룹의 권한

3 : 아더의 권한 

4 : 유저 이름

5 : 그룹 이름

6 : 파일 이름

 

*SetUID

Local 해킹 : 해킹하고자 하는 서버에 일반 계정을 가지고 있을 때, 관리자 권한을 얻고자 시도하는 것

Remote 해킹 : 해킹하고자 하는 서버에 ID를 얻고자 시도하는 것

*참고 : Remote 해킹에는 여러가지 방법이 쓰일 수 있음. 예를 들어 아이디와 비밀번호를 무작위로 대입하는 방법부터, 데몬의 취약점을 공략하거나 계시판이나 방명록을 이용해 접속하는 방법까지 다양한 방법이 있음.

 

SetUID : Local 해킹에서 관리자 권한을 탈취하는 데 중요한 역할을 함. SetUID가 걸린 파일은 일시적으로 UserID가 변경되게 됨. 

*참고 

- 기법: 레이스 컨디션, IFS버그, 링크 버그, 버퍼 오버플로우, 포맷 스트링 어택 ...

- 이러한 버그에 의해 루트 권한을 넘겨준 파일 : userhelper, imwheel-solo,restore,screen ... 

 

*SetUID가 걸린 파일을 찾는 방법

find / -perm -4000 : / 부터 SetUID가 걸려있고 000 이상의 권한을 가진 파일을 찾는다.

*참고 

-perm : 권한과 일치하는 파일을 찾는 옵션

-name : 이름이 일치하는 파일을 찾는 옵션

-user : 유저와 일치하는 파일을 찾는 옵션

-group : 그룹과 일치하는 파일을 찾는 옵션

 

*알면 좋은 것 

- 일반 퍼미션

파일의 퍼미션 각 자리는 8진수로 읽는다. 퍼미션 rwx는 2진수 111로 나타내고 8진수 7로 읽는다. 즉 각자리에 r, w, x가 표시되면 1로 -가 표시되면 0으로 대체하는 것이다. 때문에 rwx는 111로, r--는 100가 된다. 어떤 파일의 퍼미션이 751이라면 rwxr-x--x로 읽을 수 있다. 

- 특수 퍼미션

SetUID,SetGID,Sticky bit 까지 세가지 특수 퍼미션을 8진수로 표시해 일반 퍼미션의 앞에 써준다. SetUID,SetGID가 설정되고 Sticky bit가 설정되지 않았다고 가정하면 2진수로 110으로 표현되고 이는 8진수로 6을 나타낸다. 

- 예) 파일 퍼미션이 751이고 SetUID가 붙어있으면, 4751이 되고, rws-wx--x로 표시됨. SetUID와 SetGID는 실행퍼미션 자리에 s로 표시됨. (실행권한이 없다면 대문자 S로 표시됨. Sticky bit도 t로 표시되지만 실행권한이 없다면 T로 표시함.)

*참고

- SetUID : 일시적으로 UID변경

- SetGID : 일시적으로 GID변경

- Sticky bit : 퍼미션이 777이더라도 root를 제외하고 소유자만 파일이나 디렉토리를 삭제할 수 있다.

- umask : 파일이나 디렉토리를 초기에 생성할 때 기본적으로 퍼미션을 설정할 때 사용됨. 기본 파일의 퍼미션은 666, 디렉토리는 777로 이값들에 umask값을 빼서 초기에 설정될 퍼미션을 알 수 있음. umask의 기본값은 0002임.

'WARGAME > FTZ' 카테고리의 다른 글

FTZ level5 풀이  (0) 2022.02.24
FTZ level4 풀이  (0) 2022.02.17
FTZ level3 풀이  (0) 2022.02.15
FTZ level2 풀이  (0) 2022.02.12
FTZ level1 풀이  (0) 2022.02.12