(2020.11.04)
FTZ 트레이닝 과정 1~10에서 배운 것들을 정리했다.
리눅스 공부의 기초적인 부분들이다. 자주 보면서 익숙해지자.
FTZ trainer 1
: 리눅스 쌩기초 1
프롬포트는 항상 대기상태에서 우리가 명령을 내리기를 기다린다.
ls는 리눅스의 가장 기초적인 명령어
ls : 파일,디렉토리 리스트 출력
ls -l : 파일, 디렉토리 리스트 상세하게 출력
ls -a : 숨겨진 파일,디렉토리 리스트 출력
ls -al: 숨겨진 파일, 디렉토리 리스트 상세하게 출력
가장 왼쪽 부분에서 -로 시작하면 파일, d로 시작하면 디렉토리
앞에 .이 붙으면 숨겨진 파일
FTZ trainer 2
: 리눅스 쌩기초 2
pwd : 현재경로
cd .. : 한단계 위로 경로 이동
cd 디렉토리명: 입력한 디렉토리로 이동
cd / : 최상위 디렉토리로 이동
mkdir 디렉토리명 : 디렉토리 생성
rmdir 디렉토리명 : 디렉토리 삭제
cp 파일1 파일2 : 파일1이 파일2라는 이름으로 복사
rm 파일명 : 파일삭제
mv 파일1 파일2 : 파일1이 파일2라는 이름으로 복사된 후 파일1 삭제
FTZ trainer 3
: 리눅스 쌩기초 3
w : 서버에 접속자 보기 / TTY 콘솔 접속, PST 터미널 접속
finger -l : 사용자 정보 자세히 보기
tty : 자신의 터미널 정도 확인
ifconfig : 현재 접속한 서버의 IP확인
write ID /dev/pts/숫자 : 쪽지보내기
wall "내용들" : 모든 사용자에게 쪽지보내기
FTZ trainer 4
: 디렉토리와 파일
디렉토리 설명
- bin : 가장 필수적인 리눅스 실행파일이 들어가 있음. ls와 rm 모두 여기에 들어있음
- boot : 리눅스 부팅 관련 파일들, 리눅스의 심장인 커널 있음
- dev : 컴퓨터에 설치된 하드웨어에 관한 정보들이 파일 형태로 저장되어 있는 곳
- etc : 많은 중요 파일들이 들어있음 (ex 패스워드 파일, 쉐도우 파일 그외 대부분의 리눅스 설정 파일)
- 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 : 각 사용자들의 홈페이지 파일
FTZ trainer 5
: 해킹에서 가장 중요한 것은 '정보'이다.
정보를 수집하는 방법
- whoami : 내가 누구인가?
- id : 좀 더 자세하게 나와 있는 나의 정보
- cat /etc/passwd : 서버를 사용하는 사용자들의 모든 정보를 기록해 놓은 파일
- uname -a : 커널 버전 확인
- cat /etc/*release : 서버에 설치된 OS가 어떤 버전인지 확인
- rpm -qa : 패키지 정보
- cat /proc/cpuinfo : 서버의 cpu 정보
패키지: 한 프로그램에 그 프로그램이 실행되기 위해 존재하는 부속 파일들을 합친 것
FTZ trainer 6
: 패스워드 파일 분석방법
cat은 리눅스의 기본 명령
cat 파일이름: 파일의 속내용을 화면으로 뿌려줌
패스워드 파일이란?
한 서버를 사용하는 사용자들의 모든 정보를 기록해 놓은 파일
root : 서버에 로그인할 때 사용되는 아이디(계정)
x : 패스워드가 적혀있는 부분. 사용자들의 패스워드만 모아 /etc/shadow/ 라는 파일을 만들었음. 쉐도우파일을 관리자 권한이 없으면 열어볼 수 없음
0 : 컴퓨터의 입장에서 root라는 의미
0 : 해당 사용자가 속해있는 그룹
Admin : 사용자의 이름
/root : 사용자가 로그인에 성공했을 때 기본적으로 위치하게 되는 디렉토리
/bin/bash : 사용자가 처음 로그인했을 때 실행되게 할 프로그램
FTZ trainer 7
: 리눅스에서 압축할 때 사용하는 명령어
tar의 사용법
합치기 : tar cvf 합칠파일이름 합칠파일들
해제하기 : tar xvf 해제할파일
c(create) : 새로운 파일을 만드는 옵션
x(extract) : 압축을 해제시키는 옵션
v(view) : 압축이 되거나 풀리는 과정을 출력하는 옵션
f(file) : 파일로서 백업을 하겠다는 옵션
그러나 tar는 압축을 하는 프로그램이 아님. 용량이 더 증가함.
파일을 압축하지 않고 그냥 합쳐서 파일들을 다시 불러올 때 속도가 매우 빠름.
백업용 프로그램으로는 따라올 자가 없음
gzip의 사용법
합치기 : gzip 파일이름
해제하기 : gzip -d 파일이름
tar을 이용하여 여러 파일을 하나로 뭉치고, gzip프로그램을 사용하여 압축하면 완벽하다!
확장자 형태
tar : tar 프로그램을 사용하여 압축된 파일. 압축이 아닌 여러파일들이 하나로 뭉쳐져 있는 파일임
gz : gzip 프로그램을 사용하여 압축된 파일
tar.gz : tar 프로그램을 사용하여 파일을 합친 후, gzip을 사용하여 압축한 파일
tgz : tar.gz를 합쳐 tgz라는 확장자로 만들 때도 있음
FTZ trainer 8
우리가 만드는 파일에는 두가지 종류가 있음
첫번째는 일반 텍스트 파일임
두번째는 프로그램 소스 파일임
텍스트 파일 생성법
1. 쉘 프롬포트 상태에서 cat > 파일이름.txt 입력
2. 원하는 내용 입력
3. ctrl + d 누르기
*내용 추가할 경우 리다이렉션 두번 입력 cat >> 내용추가할파일이름.txt
컴파일 하는 방법
gcc -o 파일이름1 파일이름2 : 파일이름2를 파일이름1로 컴파일한다.
컴파일한 파일 실행시킬 때 경로를 모두 입력하는 것 보다는 ./파일이름.형식을 입력해주면 더 좋다
(ex ./program.c)
FTZ trainer 9
: id 명령에 대한 분석방법
- uid : user ID의 약자. 컴퓨터가 알아보기 쉽게 부여한 숫자
즉, uid=2009(trainer9)는 결국 2009=trainer9를 뜻함
- gid : Group ID의 약자. 일반적으로 gid와 uid는 항상 같음
- groups : 현재 자신이 속한 그룹
rwx rwx rwx 순서대로 유저의 권한, 그룹의 권한, 아더(유저와 그룹외의 사람들other)의 권한
r : 읽기권한
w : 쓰기권한
x : 실행권한
읽기권한 : cat 명령으로 파일내용 보기 가능
쓰기권한 : cat >> 명령으로 내용 덧붙이거나 편집기를 사용하여 내용편집 가능
실행권한 : 확장자만 보고 실행파일인지 아닌지 판단 불가능. id명령을 이용해서 x가 있는지 없는지를 통해 판단가능
shadow파일은 x가 없음
FTZ trainer 10
: local 해킹시 핵심이 되는 것은 SetUID
Local 해킹에는 두가지 존재
Remote 해킹 : 자신이 해킹하고자 하는 서버에 아이디를 가지고 있지 않을 때, 아이디를 얻고자 시도하는 것
Local 해킹 : 해킹하고자 하는 서버에 일반 계정을 가지고 있을 떄, 관리자 권한 (root)를 얻고자 시도하는 것
SetUID란 무엇인가?
set(변경하다) + UID(user ID) = 'ID를 변경한다'
즉 SetUID는 ID를 변경한다 라고 해석!! 일시적으로 자신의 ID를 변경하는 것을 말함
서버 전체에서 SetUID가 걸린 파일을 찾는 방법
find / -perm -4000
---> / 에서부터 적어도 SetUID가 걸린 모든 파일을 찾아라
4000앞의 -가 적어도를 의미
-perm은 권한을 찾겠다는 옵션
-4000의 4는 SetUID를 의미 000은 rwx모두를 의미
find 명령의 옵션
-perm : 권한과 일치하는 파일을 찾는다
-name : 이름과 일치하는 파일을 찾는다
-user : 유저와 일치하는 파일을 찾는다
-group : 그룹과 일치하는 파일을 찾는다
FTZ 해커스쿨 트레이닝 공부는 여름방학때도 했는데 그땐 그냥 슥슥넘기면서 봐서 머리에 하나도 안들어왔었다... ctf스터디에서 ftz공부하기로 해서 다시 보면서 최대한 머리에 넣으려고 노력했다. 블로그에 올리면서 다시한번 해보고 정리하니까 이제 완벽하게 기본 명령어와 개념을 이해한 것 같다!! 이제 구글링 안하고 FTZ 문제를 직접 풀어볼 수 있을 것 같은 근거없는 자신감이 생긴다!!!
C언어 공부를 더 열심히 해야겠다.....
'Write Up > FTZ' 카테고리의 다른 글
[해커스쿨] FTZ 트레이닝 과정: FTZ 설치하기 (2) | 2020.12.30 |
---|