팀명 : 파이브(5)너블
활동 일시 : 2021.09.04 14:00 ~ 15:00
1주차 활동 계획 : 해커스쿨 F.T.Z 리눅스 공부(1)
학습 내용: 해커스쿨 F.T.Z를 통한 리눅스 기초 명령어 습득
파이브(5)너블팀의 본격적인 스터디가 시작되었습니다!
첫 스터디로 해커스쿨 F.T.Z를 통해 리눅스 기초 명령어를 습득 하는 시간을 가졌으며, FTZ 트레이닝 과정: trainer 1단계부터 10단계까지 진행하였습니다.
FTZ trainer1
<프롬포트>
프롬포트는 항상 대기상태에서 어떤 명령을 내리기 만을 기다린다.
리눅스의 가장 기초적인 명령어 ls
ls : 파일,디렉토리 리스트 출력
ls -l : 파일, 디렉토리 리스트 상세하게 출력
ls -a : 숨겨진 파일,디렉토리 리스트 출력
ls -al: 숨겨진 파일, 디렉토리 리스트 상세하게 출력
ls –l 명령어 입력
가장 왼쪽 부분에서 –로 시작하면 파일, d로 시작하면 디렉토리
ls –a 명령어 입력
앞에 ‘.’붙는 경우 숨겨진 파일
Trainer1 Clear!
리눅스의 파일과 디렉토리를 살펴보는 간단한 명령어에 대해 배울 수 있었습니다.
FTZ trainer2
▶ 디렉토리 간 이동
pwd : 현재경로
cd .. : 한단계 위로 경로 이동
cd [디렉토리명]: 입력한 디렉토리로 이동
cd / : 최상위 디렉토리로 이동
현재 경로 출력
cd ..명령어를 이용해 /home/trainer2 에서 /home으로 이동
cd trainer2 명령어를 이용해 /home에서 /trainer2로 이동
cd /명령어를 이용해 최상위 디렉토리로 이동
▶ 디렉토리 관리
mkdir [디렉토리명] : 디렉토리 생성
rmdir [디렉토리명] : 디렉토리 삭제
mkdir linuxer 명령어를 이용해 linuxer 디렉토리 생성
(리눅스는 명령어 수행 성공 시 별다른 대답이 없음. 따라서 따로 확인이 필요)
ls –al 명령어를 이용해 linuxer 디렉토리 생성을 확인
rmdir linuxer 명령어를 이용해 linuxer 디렉토리 삭제
▶ 파일관리
cp [파일1] [파일2] : 파일1이 파일2라는 이름으로 복사
rm [파일명] : 파일삭제
mv [파일1] [파일2] : 파일1이 파일2라는 이름으로 복사된 후 파일1 삭제
cp 복사원본 복사사본 명령어를 이용해 ‘복사원본’을 ‘복사사본’ 이름으로 복사
ls –al 명령어를 이용해 복사된 것을 확인
rm 복사사본을 명령어를 이용해 ‘복사사본’ 파일 삭제
mv 복사원본 복사사본 명령어를 통해 ‘복사원본’이 ‘복사사본’이라는 이름으로 변경된 후 ‘복사원본’은 삭제
Trainer2 Clear!
FTZ trainer3
w : 서버에 접속자 보기 / TTY 콘솔 접속, PST 터미널 접속
1. 어떤 ID로 login 했는지를 보여주며, 현재 trainer3 이란 ID로 로그인 되어 있다.
2. 이 콘솔로 접속을 했는지, 또는 터미널로 접속을 했는지를 보여주며, tty로 나타나면 콘솔 접속, pts로 나타나면 터미널 접속을 의미한다. 그 뒤의 숫자는 몇 번째 터미널로 접속 했는지를 보여준다. 만약 3명이 동시에 텔넷 접속을 하게 되면, 순서대로 pts/0, pts/1, pts/2 의 PTS를 받게 되는 것이다.
3. 접속한 사람의 컴퓨터 ip를 보여주며, root의 경우엔 콘솔 접속을 하였기 때문에 ip가 나타나지 않는다.
4. 로그인한 시간을 알려준다.
5. 지연시간으로, 사용자가 입력하지 않고 쉬었던 시간을 알 수 있다.
6. 각 사용자가 CPU를 사용한 지연 시간을 보여준다.
7. WHAT필드에 있는 명령이 지연된 사간을 보여준다.
8. 접속된 사용자들이 현재 어떤 명령을 사용하고 있는지 보여준다.
finger -l : 사용자 정보 자세히 보기
tty : 자신의 터미널 확인
ifconfig : 현재 접속한 서버의 IP확인
write ID /dev/pts/숫자 : 쪽지보내기
wall "내용" : 모든 사용자에게 쪽지보내기
finger –l 명령어를 이용해 사용자의 자세한 정보 확인
tty를 명령어를 이용해 터미널 확인
ifconfig를 이용해 서버의 ip 확인
Trainer3 Clear!
FTZ trainer4
▶ 디렉토리
- bin : 가장 필수적인 리눅스 실행파일이 들어가 있으며, ls와 rm 모두 여기에 들어있음
- boot : 리눅스 부팅 관련 파일들, 리눅스의 심장인 커널 있음
- dev : 컴퓨터에 설치된 하드웨어에 관한 정보들이 파일 형태로 저장되어 있는 곳
- etc : 많은 중요 파일들이 들어있음 (패스워드 파일, 쉐도우 파일 그외 대부분의 리눅스 설정 파일)
- home : 일반 사용자들의 디렉토리 가 들어가는 곳, guest와 trainer1~10, level1~10 있음
- lib : 많은 라이브러리 파일들이 들어있음
- mnt : mount 명령을 사용하여 마운트 시킨 시디롬, 플로피 디스켓 등이 들어가는 디렉토리
- proc : 프로세스들이 파일 형태로 저장되는 디렉토리
- root : 일반 사용자의 디렉토리는 /home 아래에 존재하지만 루트의 홈 디렉토리는 여기 들어있음
- sbin : 기본 명령을 제외한 시스템 관리용 실행 파일들이 들어 잇는 디렉토리
- tmp : 임시로 파일을 저장하는 디렉토리이며, 권한에 상관없이 누구나 이 디렉토리에 파일 생성 가능함
- usr : 다양한 응용프로그램들이 설치되어 있는 곳
- var : 시스템 운영 중에 생성되는 각종 임시 파일들이 들어가 있음. 외부 접속에 대한 로그 파일들 저장
▶ 파일
- /etc/passwd : 사용자들에 대한 간단한 정보
- /etc/shadow : 사용자들의 패스워드, 아무나 볼 수 없도록 설정되어있음
- /etc/services : 서버가 어떤 서비스를 활성화중인지를 보여줌
- /etc/issue.net : 처음 접속될 때 나오는 화면
- /etc/motd : 로그인 후에 나오는 메세지
- ~/public_html : 각 사용자들의 홈페이지 파일
trainer4를 마치기 위한 마지막 관문인 문제들을 풀고, 100점으로 모두 trainer4 Clear!
FTZ trainer5
▶ 정보를 수집하는 방법
whoami : 내가 누구인가?
id : 좀 더 자세하게 나와 있는 나의 정보
cat /etc/passwd : 서버를 사용하는 사용자들의 모든 정보를 기록해 놓은 파일
uname -a : 커널 버전 확인
cat /etc/*release : 서버에 설치된 OS가 어떤 버전인지 확인
rpm -qa : 패키지 정보
cat /proc/cpuinfo : 서버의 cpu 정보
패키지: 한 프로그램에 그 프로그램이 실행되기 위해 존재하는 부속 파일들을 합친 것
whoami 명령어 입력
id 명령어 입력
cat /etc/passwd 명령어 입력
uname –a 명령어 입력
unnamed –a 명령어를 입력하여 서버의 버전이 레드햇 리눅스 9.0이라는 것을 알 수 있음
rpm –qa 명령어 입력
cat /proc/cpuinfo 명령어 입력
trainer5 Clear!
FTZ trainer 6
cat은 리눅스의 기본 명령
cat 파일이름: 파일의 속 내용을 화면으로 보여줌
cat /etc/passwd 명령어 입력
▶ 패스워드 파일이란?
한 서버를 사용하는 사용자들의 모든 정보를 기록해 놓은 파일
root : 서버에 로그인할 때 사용되는 아이디(계정)
x : 패스워드가 적혀있는 부분. 사용자들의 패스워드만 모아 /etc/shadow/ 라는 파일을 만들었음. 쉐도우파일을 관리자 권한이 없으면 열어볼 수 없음
0 : 컴퓨터의 입장에서 root라는 의미
0 : 해당 사용자가 속해있는 그룹
Admin : 사용자의 이름
/root : 사용자가 로그인에 성공했을 때 기본적으로 위치하게 되는 디렉토리
/bin/bash : 사용자가 처음 로그인했을 때 실행되게 할 프로그램
trainer6 Clear!
FTZ trainer7
▶ tar의 사용법
합치기 : tar cvf [합칠파일이름] [합칠파일들]
해제하기 : tar xvf [해제할파일]
c(create) : 새로운 파일을 만드는 옵션
x(extract) : 압축을 해제시키는 옵션
v(view) : 압축이 되거나 풀리는 과정을 출력하는 옵션
f(file) : 파일로서 백업을 하겠다는 옵션
tar cvf song. tar * 명령어를 이용해 모든파일(*)을 songs라는 새로운 파일로 합침
ls –al 명령어로 songs.tar 명령어가 생성된 것을 확인
그러나 tar는 압축을 하는 프로그램이 아니며 오히려 용량이 더 증가함.
따라서 tar은 속도가 매우 빠르다는 장점이 있기에 압축이 아닌 파일을 압축하지 않고 그냥 합쳐서 파일들을 다시 불러올 때 사용됨.
▶ gzip의 사용법
합치기 : gzip [파일이름]
해제하기 : gzip -d [파일이름]
gzip songs.tar 명령어를 이용해 songs.tar을 압축
ls –al 명령어를 통해 잘 압축된 것을 확인
tar을 이용하여 여러 파일을 하나로 뭉치고, gzip프로그램을 사용하여 압축하면 완벽!
▶ 확장자 형태
tar : tar 프로그램을 사용하여 압축된 파일. 압축이 아닌 여러파일들이 하나로 뭉쳐져 있는 파일임
gz : gzip 프로그램을 사용하여 압축된 파일
tar.gz : tar 프로그램을 사용하여 파일을 합친 후, gzip을 사용하여 압축한 파일
tgz : tar.gz를 합쳐 tgz라는 확장자로 만들 때도 있음
gzip –d songs.tar.gz 명령어를 이용해 해제
ls –al 명령어를 이용하여 tar.gz가 tar로 변하면서 용량이 늘어난 것을 확인할 수 있음.
tar xvf songs.tar 명령어를 이용하여 tar을 해제
ls – al 명령어를 이용하여 처음의 파일들이 다시 생성된 것을 확인할 수 있음
따라서 정리하면,
1. tar cvf 명령을 이용하여 이 파일들을 하나로 합쳐버린다.
2. gzip 명령을 이용하여 용량을 줄여버린다.
3. 이 압축된 파일을 잘 보관한다.
4. 후에 리눅스를 재설치하거나, 크래킹을 당하여 자료가 손실되었을 때,
4-1. gzip -d 명령을 이용하여 다시 tar로 만든다.
5. tar xvf 명령을 이용하여 파일들을 복구한다.
6. 손실된 파일들이 고스란히 되살아난다.
trainer7 Clear!
FTZ trainer8
우리가 만드는 파일에는 두가지 종류가 있으며,
첫번째는 일반 텍스트 파일(글자로만 이루어진 파일)
두번째는 프로그램 소스 파일(컴퓨터 언어로 입력한 파일, 컴파일 과정을 거쳐 실행이 가능하도록 만 든 후 사용)
▶ 텍스트 파일 생성법
1. 쉘 프롬포트 상태에서 cat > 파일이름.txt 입력
2. 원하는 내용 입력
3. ctrl + d 누르기
cat > test.txt 명령어를 이용하여 test.txt 생성
ls –al test.txt 명령어를 이용하여 test.txt 파일이 생성된 것을 확인
cat test.txt 명령어를 이용하여 test.txt파일에 입력한 내용을 확인
* 내용 추가할 경우 리다이렉션 두번 입력 cat >> 내용추가할파일이름.txt
리다이렉션 두 번 입력한 후 추가할 내용 입력
cat test.txt로 추가한 내용 확인
▶ 컴파일 하는 방법
- gcc -o 파일이름1 파일이름2 : 파일이름2를 파일이름1로 컴파일한다.
- 컴파일한 파일 실행시킬 때 경로를 모두 입력하는 것 보다는 ./파일이름.형식을 입력해주면 더 편리하다.
(ex ./program.c)
gcc -o program.exe program.c 명령어를 이용해 컴파일
program.exe이 잘 실행되는 것을 확인할 수 있음
trainer8 Clear!
FTZ trainer9
▶ 리눅스에 존재하는 4가지 종류의 사용자
유저(user) : 자신을 의미
그룹(group) : 모든 유저는 하나 이상의 그룹에 속하게 되며 임의로 그룹을 변경하지 않는 한 모든 유저는 자신의 유저 네임과 같은 그룹에 속함
아더(other) : 유저와 그룹을 제외한 모든 사람을 의미
id 명령어를 이용해 정보 획득
- uid : user ID의 약자. 컴퓨터가 알아보기 쉽게 부여한 숫자
즉, uid=2009(trainer9)는 결국 2009=trainer9를 뜻함
- gid : Group ID의 약자. 일반적으로 gid와 uid는 항상 같음
- groups : 현재 자신이 속한 그룹
ls –al test1 명령어를 이용해 파일 권한 정보 획득
rwx rwx rwx 순서대로 유저의 권한, 그룹의 권한, 아더(유저와 그룹외의 사람들other)의 권한
r : 읽기권한
w : 쓰기권한
x : 실행권한
id 명령에 대한 분석 방법
1. test1 이라는 파일은
2. trainer9라는 uid를 가진 사용자에게
3. 읽기(r), 쓰기(w), 실행(x) 권한이 있고,
4. trainer10 이라는 gid를 가진 사용자에게도
5. 읽기(r), 쓰기(w), 실행(x) 권한이 있고,
6. trainer9와 10을 제외환 모든 사람에게도
7. 읽기(r), 쓰기(w), 실행(x) 권한이 있다.
즉, test1 파일은 아이디를 가지고 있는 사람이라면 누구나 마음대로 변경가능 한 파일 이라는 것을 알 수 있다.
읽기권한 : cat 명령으로 파일내용 보기 가능
쓰기권한 : cat >> 명령으로 내용 덧붙이거나 편집기를 사용하여 내용편집 가능
실행권한 : 확장자만 보고 실행파일인지 아닌지 판단 불가능. id명령을 이용해서 x가 있는지 없는지를 통해 판단가능
shadow파일은 관리자(루트)가 아니면 볼 수 없기에 오로지 루트에게만 읽기 권한이 부여되어 있음
trainer9 Clear!
FTZ trainer10
Local 해킹에는 두가지 존재
Remote 해킹 : 자신이 해킹하고자 하는 서버에 아이디를 가지고 있지 않을 때, 아이디를 얻고자 시도하는 것
Local 해킹 : 해킹하고자 하는 서버에 일반 계정을 가지고 있을 때, 관리자 권한 (root)를 얻고자 시도하는 것
▶ SetUID란?
set(변경하다) + UID(user ID) = 'ID를 변경한다'
즉 SetUID는 ID를 변경한다 라고 해석되며, 일시적으로 자신의 ID를 변경하는 것을 말함
s가 SerUID를 의미하며, x(실행권한)이 있어야할 부분에 들어가 있음 -> s가 x를 포함하고 있기 때문
* /usr/bin/passwd 파일은 root에게 읽기와 실행(s는 x를 포함)이 있고, root라는 그룹에게는 실행 권한만 있으며, 나머지 사용자들에게는 실행 권한 만 있다. 하지만 root에게 SetUID가 걸려 있기 때문에 어느 사용자이던지 간에 파일을 실행할 때는 root권한을 갖게 된다.
▶ 서버 전체에서 SetUID가 걸린 파일을 찾는 방법
find / -perm -4000
-> / 에서부터 적어도 SetUID가 걸린 모든 파일을 찾아라
4000앞의 ‘-‘가 적어도를 의미
-perm은 권한을 찾겠다는 옵션
-4000의 4는 SetUID를 의미 000은 rwx모두를 의미
▶ find 명령의 옵션
-perm : 권한과 일치하는 파일을 찾는다
-name : 이름과 일치하는 파일을 찾는다
-user : 유저와 일치하는 파일을 찾는다
-group : 그룹과 일치하는 파일을 찾는다
trainer10 Clear!
'3. Pwnable (포너블) > 2) 개념 정리' 카테고리의 다른 글
[2021.09.18] 해커스쿨 F.T.Z Level9, 10 풀이 및 Level11 풀이 방향 (0) | 2021.09.19 |
---|---|
[2021. 09. 11] 해커스쿨 F.T.Z를 통한 기초 명령어 실전 활용 (0) | 2021.09.12 |
[2021.05.22] 8주차 : Bandit Level 15,16,17->18 | 달고나 문서 p.34 ~ ~ p.44 (0) | 2021.05.22 |
[2021.05.15] 7주차 : Bandit Level 12,13,14->15 | 달고나 문서 p.27 ~ ~ p.34 (0) | 2021.05.15 |
[2021.05.8] 6주차 : Bandit Level 10,11,12->13 | 달고나 문서 p.13 ~ p.27 (0) | 2021.05.08 |