
💡Trainer 비번
root - hackerschool │guest - guest │trainer1 - trainer1│trainer2 - linuxer│trainer3 - compute
trainer4 - mungguta│trainer5 - goodluck│trainer6 - coffee│trainer7 - to the top│trainer8 - player
trainer9 - programming│trainer10 - best!
Trainer1
리눅스를 처음 접속하면 "prompt"가 나타나며, 서버에 성공적으로 로그인 되었다는 것을 의미한다.
💡 [trainer@ ftz trainer1]$
접속ID 서버 현재위치
ls : 리스트 출력
ls -l : 파일 & 디렉터리
💡 파일 성격 Permission 용량 생성 날짜 이름
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
파일/디렉터리 구분 : 앞부분이 -이면 파일, d이면 디렉터리(directory)
ls -a : 숨겨진 파일 리스트 출력 (숨겨진 파일은 앞자리에 "."이 들어감)
ls -al : 숨겨진 파일 & directory list 출력
Trainer2
pwd : 현재 경로 출력
👉 [trainer2@ftz trainer2]$ pwd
/home/trainer2
[trainer2@ftz trainer2]$
cd : 경로 이동
👉[trainer2@ftz trainer2]$ pwd
/home/trainer2
[trainer2@ftz trainer2]$ cd ..
[trainer2@ftz home]$ pwd /home
[trainer2@ftz home]$ cd trainer2
[trainer2@ftz trainer2]$ pwd
/home/trainer2
[trainer2@ftz trainer2]$ cd /
[trainer2@ftz /]$
mkdir [디렉터리명] : 디렉터리 생성
👉[trainer2@ftz trainer2]$ mkdir linuxer
[trainer2@ftz trainer2]$ ls -al
drwxrwxr-x 2 trainer2 trainer2 1024 9월 25 16:36 linuxer
rmdir [디렉터리명] : 디렉터리 삭제
👉 [trainer2@ftz trainer2]$ rmdir linuxer
[trainer2@ftz trainer2]$ ls -al
cp [복사할 파일명] [복사된 파일명] : 파일 복사
👉 [trainer2@ftz trainer2]$ copy 복사원본 복사사본
[trainer2@ftz trainer2]$ ls -al
rw-rw-r-- 1 trainer2 trainer2 5 9월 25 11:18 복사원본
-rw-rw-r-- 1 trainer2 trainer2 5 9월 25 12:50 복사사본
rm [파일명] : 파일 제거
👉 [trainer2@ftz trainer2]$ remove 복사사본
[trainer2@ftz trainer2]$ ls -al
rw-rw-r-- 1 trainer2 trainer2 5 9월 25 11:18 복사원본
mv [변경할 파일명] [변경된 파일명] : 이름 변경 or 잘라내기-붙여넣기
👉 [trainer2@ftz trainer2]$ mv 복사원본 복사사본
[trainer2@ftz trainer2]$ ls -al
-rw-rw-r-- 1 trainer2 trainer2 5 9월 25 12:50 복사사본
Trainer3
w : 서버에 접속자 보기 / TTY 콘솔접속(telnet etc..), PTS 터미널 접속
- 어떤 아이디로 로그인 하였는지 출력
- 콘솔 or 터미널 접속 여부 ( tty는 콘솔, pts는 터미널)
- 접속한 사람의 IP를 출력
- 어느 시간에 로그인 했는지 출력
- 지연시간 (얼마나 아무것도 입력을 하지 않고 쉬고 있는지)
- 각 사용자가 CPU를 사용한 지연 시간
- WHAT 필드에 있는 명령이 지연된 시간
- 접속된 사용자들이 현재 어떤 명령을 사용하는지 출력
💡 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
1 2 3 4 5 6 7 8
finger -l : 서버에 접속한 사용자 정보 자세히 보기
💡 [trainer3@ftz trainer3]$ finger -l
Login: guest Name: 손님
Directory: /home/guest Shell: /bin/bash
Last login Tue Sep 26 08:08 (KST) on 0 from 192.168.0.2
2통의 메일이 도착되어 있습니다.
예약된 작업이 없습니다.
tty : 자신의 터미널 정보 확인
💡 [trainer3@ftz trainer3]$ tty
/dev/pts/0
ifconfig : 현재 접속한 서버의 IP 확인
💡 [trainer3@ftz trainer3]$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:01:2B:20:13:DA
inet addr:211.195.119.130 Bcast:211.195.119.191 Mask:255.255.255.192
UP BROADCAST NOTRAILERS RUNNING MTU:1500 Metric:1
RX packets:862 errors:0 dropped:0 overruns:0 frame:0
TX packets:191 errors:33 dropped:0 overruns:0 carrier:33
collisions:3 txqueuelen:100
Interrupt:12 Base address:0xe800
write ID /dev/pts/번호 : 쪽지 보내기
❗❗Guest로 서버에 접속 후 하기! - 끝낼려면 Ctrl+d
💡 [trainer3@ftz trainer3]$ w
18:10:14 up 1:42, 3 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 - 5:01pm 3:08 0.04s 0.04s -bash
trainer3 pts/0 192.168.1.1 6:06pm 0.00s 0.00s 0.00s -sh
guest pts/1 192.168.1.1 6:08pm 21.00s 0.01s 0.01s -bash
[trainer3@ftz trainer3]$ write guest /dev/pts/1
Hi
Bye
wall "내용" : 모든 사용자에게 쪽지 보내기
❗❗Guest로 서버에 접속 후 하기!
💡 [trainer3@ftz trainer3]$ wall test
testBroadcast message from trainer3 (pts/0) (Wed Mar 2 18:22:31 2022):
test
Trainer4
※ 최상위 디렉터리 모음
- bin : 가장 필수적인 리눅스 실행 파일. (기본적인 실행 파일) - ls, rm 모두 이곳에 들어가 있음
- boot : 리눅스 부팅 관련 파일과, 커널
- dev : 컴퓨터에 설치된 하드웨어에 관한 정보
- etc : 패스워드 파일, 쉐도우 파일, 리눅스 설정 파일 등...
💡 etc/passwd : 사용자들에 대한 간단한 정보
/etc/shadow : 사용자들의 패스워드 (아무나 보지 못함)
/etc/services : 서버가 어떤 서비스를 활성화중인지 보여줌
/etc/issue.net : 처음 접속될 때 나오는 화면. ex) 해커스쿨의 F.T.Z에 오신걸 환영!
/etc/motd : 로그인 후에 나오는 메세지
~/public_html : 각 사용자들의 홈페이지 파일. 보통 해킹에 성공하면 이 파일을 수정하여 hacked by xxx라는 문구를 남김
etc/os-release : os에 대한 정보 확인
- home : 일반 사용자들의 디렉터리가 들어가는 곳. guest와 trainer1-10, level 1-10 모두 이 디렉터리 안에 속해 있음
- lib : 라이브러리 파일
- mnt : mount 명령을 사용하여, 마운트 시킨 시디롬 등이 들어가는 디렉터리
- proc : 프로세스들이 파일 형태로 저장되는 디렉터리
- root : 루트의 홈 디렉터리
- sbin : 기본 명령을 제외한 시스템 관리용 실행 파일
- tmp : 임시로 파일을 저장하는 디렉터리 (누구나 이 디렉터리에 파일 생성 가능)
- usr : 다양한 응용 프로그램들이 설치되어 있는 곳
- var : 시스템 운영 중에 생성되는 각종 임시 파일과 외부 접속에 대한 로그 파일
Trainer5
※ 정보를 수집하는 방법!
whoami : 자신의 기본 정보
💡 [trainer5@ftz trainer5]$ whoami
trainer5
id : 자세한 자신의 정보
💡 [trainer5@ftz trainer5]$ id
uid=2005(trainer5) gid=2005(trainer5) groups=2005(trainer5)
cat /etc/passwd : 서버에서 활동 중인 사람들의 계정 정보
💡 [trainer5@ftz trainer5]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
uname -a : 커널 버전 확인
💡 [trainer5@ftz trainer5]$ uname -a
Linux ftz.hackerschool.org http://ftz.hackerschool.org 2.4.20-8 #1 Thu Mar 13 17:54:28 EST 2003 i686 i686 i386 GNU/Linux
※ root 권한이란 리눅스나 유닉스에서 모든 파일을 관리하는 절대적인 관리자 권한
cat /etc/os-release : 설치된 OS 버전 확인
❗❗Hacker_FTZ는 레드햇이기에 명령어의 차이가 있다
💡 [trainer5@ftz trainer5]$ cat /etc/*release
Red Hat Linux release 9 (Shrike)
rpm -qa : 패키지 정보
❗❗레드햇이라 명령어가 위와 같고 rpm = redhat package manager 보통의 경우에는 vi /etc/apt/sources.list
💡 [trainer5@ftz trainer5]$ rpm -qa
setup-2.5.25-1 bzip2-libs-1.0.2-8 e2fsprogs-1.32-6 glib-1.2.10-10 iputils-20020927-2
cat /proc/cpuinfo : cpu 정보
💡 [trainer5@ftz trainer5]$ cat /proc/cpuinfo
processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 14 model name : Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz stepping : 12 cpu MHz : 2304.685
Trainer6
※ 패스워드 파일 분석 방법
💡 root : x : 0 : 0 : Admin : /root : /bin/bash
1 2 3 4 5 6 7
- 로그인할 때 사용되는 아이디
- 패스워드 - 사용자들의 패스워드만 모아 새로운 파일을 만듦 (/etc/shadow)
- 컴퓨터에 입력되는 사용자 아이디 (컴퓨터 입장에서의 root라는 의미)
- 해당 사용자가 속해있는 그룹
- 사용자의 이름
- 로그인에 성공 했을 때 기본으로 위치하게 되는 디렉터리
- 처음 로그인 했을 때 실행되게 할 프로그램 (로그인 했을 때 쉘이 실행되는 것)
Trainer7
※ 리눅스 환경에서 압축하고, 해제하는 방법 (tar, gzip)
tar는 사실 압축 프로그램이 아님 압축을 하면 용량이 줄어야 하는데 늘기 때문이다.
일단 파일을 압축하지 않고 그냥 합쳐버리기만 하니 기존 파일을 복구할 때 속도가 엄청 빠르다.
즉, tar는 속도면에서 볼 때 백업용 프로그램으로 따라올 자가 없음
$ tar cvf [합칠파일] [합칠파일들]
$ tar xvf [해제할파일]
c - Create : 새로운 파일을 만드는 옵션
x - eXtract : 압축을 해제시키는 옵션
v - View : 압축이 되거나 풀리는 과정을 출력하는 옵션
f - File : 파일로서 백업을 하겠다는 옵션
리눅스 gzip 프로그램은 한번에 한개의 파일만 압축할 수 있음.
그렇기 때문에 tar를 사용하여 여러 파일을 1개로 뭉쳐버리고, gzip 프로그램을 사용하여 압축해 버리면 됨!
$ gzip [파일이름] : 압축
$ gzip -d [파일이름] : 압축 해제
※ 리눅스 압축 확장자 형태
tar : tar 프로그램을 사용하여 압축된 파일 (여러 파일들이 하나로 뭉쳐져 있는 파일)
gz : gzip 프로그램을 사용하여 압축된 파일
tar.gz : tar 프로그램을 사용하여 파일을 합친 후, gzip을 사용하여 압축한 파일
tgz : 위의 tar.gz과 동일
Trainer8
텍스트 파일 생성법
- 쉘 프롬프트 상태에서 $ cat > 파일이름.txt 라고 입력 ('>' 리다이렉션)
- 원하는 내용 입력
- Ctrl + D
- 내용을 추가할 경우 리다이렉션을 두번 입력한다. $ cat >> 내용추가할파일.txt
💡 [trainer8@ftz trainer8]$ cat > test.txt
안녕하세요 라라라랄
라라라라
[trainer8@ftz trainer8]$ cat >> test.txt← 초기화X 이어서
bbbㅠㅠㅠ
소스 파일 생성법
- 쉘 프롬프트 상태에서 $ cat > 파일이름.c 라고 입력
- 컴퓨터 언어로 내용 입력
- $ gcc -o [파일이름1] [파일이름2] : 파일이름2를 파일이름1로 컴파일한다.
※ 절대경로는 최상위 디렉터리부터 시작되는 경로
※ 상대경로는 자신이 위치한 디렉터리를 기준으로 따지는 경로
💡 [trainer8@ftz trainer8]$ vi programe.c
[trainer8@ftz trainer8]$ gcc -o programe.exe programe.c
Trainer9
id 설명
user : 자신을 의미
group : 자신이 속한 그룹
other : user와 group을 제외한 모든 다른 사람
root : 절대적인 권한을 지닌 사람
uid=2009(trainer9) gid=2009(trainer9) groups=2009(trainer9)
- uid : User ID의 약자. 컴퓨터가 알아보기 쉽게 숫자를 부여한 것. (trainer9 = 2009)
- gid : Group ID의 약자. 특별한 일이 없는 한 gid는 항상 uid와 같음.
- groups : 현재 자신이 어떤 그룹에 속해 있는지를 보여줌. (default uid와 같음)
파일 분석법
💡 rwx rwx rwx 1 trainer9 trainer10 5 10월 20 21:35 test
1 2 3 4 5 6
r(읽기) w(쓰기) x(실행) s(SetUID로 x를 포함)
user의 권한 group의 권한 Other의 권한
User Group 파일 이름
Trainer10
local 해킹 시 핵심이 되는 SetUID 설명
❗❗Local 해킹 : 관리자 권한 (root)를 얻고자 시도
❗❗Remote 해킹 : 일반 아이디를 얻을 때
SetUID : 일시적으로 자신의 ID를 변경하는 것 (잠시동안 root 권한을 가질 수 있음)
- Set이란 말은 "변경하다"란 뜻을 가지고 있고, UID는 User ID의 약자입니다. 따라서 SetUID는 "일시적으로 자신의 ID를 변경하는 것"을 의미합니다.
지금까지 발견된 기법
- 레이스컨디션
- IFS버그
- 링크버그
- 버퍼 오버플로우
이러한 버그에 의해 루트 권한을 넘겨준 파일
- userhelper
- imwheel-solo
- restore
- screen
서버 전체에서 SetUID가 걸린 파일을 찾는 방법
💡$ find / -perm -4000
※find 명령어 옵션
- perm 권한과 일치하는 파일을 찾는다. ex) # find / -perm 4755
- name 이름과 일치하는 파일을 찾는다. ex) # find / -name cat
- user 유저와 일치하는 파일을 찾는다. ex) # find / -user mmung2
- group 그룹과 일치하는 파일을 찾는다. ex) # find / -group guta
'🌇│System_Study > 📕│HackerSchool_FTZ' 카테고리의 다른 글
HackerSchool_level5 (0) | 2022.06.30 |
---|---|
HackerSchool_level4 (0) | 2022.04.07 |
HackerSchool_level3 (0) | 2022.04.06 |
HackerSchool_level2 (0) | 2022.04.06 |
HackerSchool_level1 (0) | 2022.04.06 |

💡Trainer 비번
root - hackerschool │guest - guest │trainer1 - trainer1│trainer2 - linuxer│trainer3 - compute
trainer4 - mungguta│trainer5 - goodluck│trainer6 - coffee│trainer7 - to the top│trainer8 - player
trainer9 - programming│trainer10 - best!
Trainer1
리눅스를 처음 접속하면 "prompt"가 나타나며, 서버에 성공적으로 로그인 되었다는 것을 의미한다.
💡 [trainer@ ftz trainer1]$
접속ID 서버 현재위치
ls : 리스트 출력
ls -l : 파일 & 디렉터리
💡 파일 성격 Permission 용량 생성 날짜 이름
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
파일/디렉터리 구분 : 앞부분이 -이면 파일, d이면 디렉터리(directory)
ls -a : 숨겨진 파일 리스트 출력 (숨겨진 파일은 앞자리에 "."이 들어감)
ls -al : 숨겨진 파일 & directory list 출력
Trainer2
pwd : 현재 경로 출력
👉 [trainer2@ftz trainer2]$ pwd
/home/trainer2
[trainer2@ftz trainer2]$
cd : 경로 이동
👉[trainer2@ftz trainer2]$ pwd
/home/trainer2
[trainer2@ftz trainer2]$ cd ..
[trainer2@ftz home]$ pwd /home
[trainer2@ftz home]$ cd trainer2
[trainer2@ftz trainer2]$ pwd
/home/trainer2
[trainer2@ftz trainer2]$ cd /
[trainer2@ftz /]$
mkdir [디렉터리명] : 디렉터리 생성
👉[trainer2@ftz trainer2]$ mkdir linuxer
[trainer2@ftz trainer2]$ ls -al
drwxrwxr-x 2 trainer2 trainer2 1024 9월 25 16:36 linuxer
rmdir [디렉터리명] : 디렉터리 삭제
👉 [trainer2@ftz trainer2]$ rmdir linuxer
[trainer2@ftz trainer2]$ ls -al
cp [복사할 파일명] [복사된 파일명] : 파일 복사
👉 [trainer2@ftz trainer2]$ copy 복사원본 복사사본
[trainer2@ftz trainer2]$ ls -al
rw-rw-r-- 1 trainer2 trainer2 5 9월 25 11:18 복사원본
-rw-rw-r-- 1 trainer2 trainer2 5 9월 25 12:50 복사사본
rm [파일명] : 파일 제거
👉 [trainer2@ftz trainer2]$ remove 복사사본
[trainer2@ftz trainer2]$ ls -al
rw-rw-r-- 1 trainer2 trainer2 5 9월 25 11:18 복사원본
mv [변경할 파일명] [변경된 파일명] : 이름 변경 or 잘라내기-붙여넣기
👉 [trainer2@ftz trainer2]$ mv 복사원본 복사사본
[trainer2@ftz trainer2]$ ls -al
-rw-rw-r-- 1 trainer2 trainer2 5 9월 25 12:50 복사사본
Trainer3
w : 서버에 접속자 보기 / TTY 콘솔접속(telnet etc..), PTS 터미널 접속
- 어떤 아이디로 로그인 하였는지 출력
- 콘솔 or 터미널 접속 여부 ( tty는 콘솔, pts는 터미널)
- 접속한 사람의 IP를 출력
- 어느 시간에 로그인 했는지 출력
- 지연시간 (얼마나 아무것도 입력을 하지 않고 쉬고 있는지)
- 각 사용자가 CPU를 사용한 지연 시간
- WHAT 필드에 있는 명령이 지연된 시간
- 접속된 사용자들이 현재 어떤 명령을 사용하는지 출력
💡 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
1 2 3 4 5 6 7 8
finger -l : 서버에 접속한 사용자 정보 자세히 보기
💡 [trainer3@ftz trainer3]$ finger -l
Login: guest Name: 손님
Directory: /home/guest Shell: /bin/bash
Last login Tue Sep 26 08:08 (KST) on 0 from 192.168.0.2
2통의 메일이 도착되어 있습니다.
예약된 작업이 없습니다.
tty : 자신의 터미널 정보 확인
💡 [trainer3@ftz trainer3]$ tty
/dev/pts/0
ifconfig : 현재 접속한 서버의 IP 확인
💡 [trainer3@ftz trainer3]$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:01:2B:20:13:DA
inet addr:211.195.119.130 Bcast:211.195.119.191 Mask:255.255.255.192
UP BROADCAST NOTRAILERS RUNNING MTU:1500 Metric:1
RX packets:862 errors:0 dropped:0 overruns:0 frame:0
TX packets:191 errors:33 dropped:0 overruns:0 carrier:33
collisions:3 txqueuelen:100
Interrupt:12 Base address:0xe800
write ID /dev/pts/번호 : 쪽지 보내기
❗❗Guest로 서버에 접속 후 하기! - 끝낼려면 Ctrl+d
💡 [trainer3@ftz trainer3]$ w
18:10:14 up 1:42, 3 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 - 5:01pm 3:08 0.04s 0.04s -bash
trainer3 pts/0 192.168.1.1 6:06pm 0.00s 0.00s 0.00s -sh
guest pts/1 192.168.1.1 6:08pm 21.00s 0.01s 0.01s -bash
[trainer3@ftz trainer3]$ write guest /dev/pts/1
Hi
Bye
wall "내용" : 모든 사용자에게 쪽지 보내기
❗❗Guest로 서버에 접속 후 하기!
💡 [trainer3@ftz trainer3]$ wall test
testBroadcast message from trainer3 (pts/0) (Wed Mar 2 18:22:31 2022):
test
Trainer4
※ 최상위 디렉터리 모음
- bin : 가장 필수적인 리눅스 실행 파일. (기본적인 실행 파일) - ls, rm 모두 이곳에 들어가 있음
- boot : 리눅스 부팅 관련 파일과, 커널
- dev : 컴퓨터에 설치된 하드웨어에 관한 정보
- etc : 패스워드 파일, 쉐도우 파일, 리눅스 설정 파일 등...
💡 etc/passwd : 사용자들에 대한 간단한 정보
/etc/shadow : 사용자들의 패스워드 (아무나 보지 못함)
/etc/services : 서버가 어떤 서비스를 활성화중인지 보여줌
/etc/issue.net : 처음 접속될 때 나오는 화면. ex) 해커스쿨의 F.T.Z에 오신걸 환영!
/etc/motd : 로그인 후에 나오는 메세지
~/public_html : 각 사용자들의 홈페이지 파일. 보통 해킹에 성공하면 이 파일을 수정하여 hacked by xxx라는 문구를 남김
etc/os-release : os에 대한 정보 확인
- home : 일반 사용자들의 디렉터리가 들어가는 곳. guest와 trainer1-10, level 1-10 모두 이 디렉터리 안에 속해 있음
- lib : 라이브러리 파일
- mnt : mount 명령을 사용하여, 마운트 시킨 시디롬 등이 들어가는 디렉터리
- proc : 프로세스들이 파일 형태로 저장되는 디렉터리
- root : 루트의 홈 디렉터리
- sbin : 기본 명령을 제외한 시스템 관리용 실행 파일
- tmp : 임시로 파일을 저장하는 디렉터리 (누구나 이 디렉터리에 파일 생성 가능)
- usr : 다양한 응용 프로그램들이 설치되어 있는 곳
- var : 시스템 운영 중에 생성되는 각종 임시 파일과 외부 접속에 대한 로그 파일
Trainer5
※ 정보를 수집하는 방법!
whoami : 자신의 기본 정보
💡 [trainer5@ftz trainer5]$ whoami
trainer5
id : 자세한 자신의 정보
💡 [trainer5@ftz trainer5]$ id
uid=2005(trainer5) gid=2005(trainer5) groups=2005(trainer5)
cat /etc/passwd : 서버에서 활동 중인 사람들의 계정 정보
💡 [trainer5@ftz trainer5]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
uname -a : 커널 버전 확인
💡 [trainer5@ftz trainer5]$ uname -a
Linux ftz.hackerschool.org http://ftz.hackerschool.org 2.4.20-8 #1 Thu Mar 13 17:54:28 EST 2003 i686 i686 i386 GNU/Linux
※ root 권한이란 리눅스나 유닉스에서 모든 파일을 관리하는 절대적인 관리자 권한
cat /etc/os-release : 설치된 OS 버전 확인
❗❗Hacker_FTZ는 레드햇이기에 명령어의 차이가 있다
💡 [trainer5@ftz trainer5]$ cat /etc/*release
Red Hat Linux release 9 (Shrike)
rpm -qa : 패키지 정보
❗❗레드햇이라 명령어가 위와 같고 rpm = redhat package manager 보통의 경우에는 vi /etc/apt/sources.list
💡 [trainer5@ftz trainer5]$ rpm -qa
setup-2.5.25-1 bzip2-libs-1.0.2-8 e2fsprogs-1.32-6 glib-1.2.10-10 iputils-20020927-2
cat /proc/cpuinfo : cpu 정보
💡 [trainer5@ftz trainer5]$ cat /proc/cpuinfo
processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 14 model name : Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz stepping : 12 cpu MHz : 2304.685
Trainer6
※ 패스워드 파일 분석 방법
💡 root : x : 0 : 0 : Admin : /root : /bin/bash
1 2 3 4 5 6 7
- 로그인할 때 사용되는 아이디
- 패스워드 - 사용자들의 패스워드만 모아 새로운 파일을 만듦 (/etc/shadow)
- 컴퓨터에 입력되는 사용자 아이디 (컴퓨터 입장에서의 root라는 의미)
- 해당 사용자가 속해있는 그룹
- 사용자의 이름
- 로그인에 성공 했을 때 기본으로 위치하게 되는 디렉터리
- 처음 로그인 했을 때 실행되게 할 프로그램 (로그인 했을 때 쉘이 실행되는 것)
Trainer7
※ 리눅스 환경에서 압축하고, 해제하는 방법 (tar, gzip)
tar는 사실 압축 프로그램이 아님 압축을 하면 용량이 줄어야 하는데 늘기 때문이다.
일단 파일을 압축하지 않고 그냥 합쳐버리기만 하니 기존 파일을 복구할 때 속도가 엄청 빠르다.
즉, tar는 속도면에서 볼 때 백업용 프로그램으로 따라올 자가 없음
$ tar cvf [합칠파일] [합칠파일들]
$ tar xvf [해제할파일]
c - Create : 새로운 파일을 만드는 옵션
x - eXtract : 압축을 해제시키는 옵션
v - View : 압축이 되거나 풀리는 과정을 출력하는 옵션
f - File : 파일로서 백업을 하겠다는 옵션
리눅스 gzip 프로그램은 한번에 한개의 파일만 압축할 수 있음.
그렇기 때문에 tar를 사용하여 여러 파일을 1개로 뭉쳐버리고, gzip 프로그램을 사용하여 압축해 버리면 됨!
$ gzip [파일이름] : 압축
$ gzip -d [파일이름] : 압축 해제
※ 리눅스 압축 확장자 형태
tar : tar 프로그램을 사용하여 압축된 파일 (여러 파일들이 하나로 뭉쳐져 있는 파일)
gz : gzip 프로그램을 사용하여 압축된 파일
tar.gz : tar 프로그램을 사용하여 파일을 합친 후, gzip을 사용하여 압축한 파일
tgz : 위의 tar.gz과 동일
Trainer8
텍스트 파일 생성법
- 쉘 프롬프트 상태에서 $ cat > 파일이름.txt 라고 입력 ('>' 리다이렉션)
- 원하는 내용 입력
- Ctrl + D
- 내용을 추가할 경우 리다이렉션을 두번 입력한다. $ cat >> 내용추가할파일.txt
💡 [trainer8@ftz trainer8]$ cat > test.txt
안녕하세요 라라라랄
라라라라
[trainer8@ftz trainer8]$ cat >> test.txt← 초기화X 이어서
bbbㅠㅠㅠ
소스 파일 생성법
- 쉘 프롬프트 상태에서 $ cat > 파일이름.c 라고 입력
- 컴퓨터 언어로 내용 입력
- $ gcc -o [파일이름1] [파일이름2] : 파일이름2를 파일이름1로 컴파일한다.
※ 절대경로는 최상위 디렉터리부터 시작되는 경로
※ 상대경로는 자신이 위치한 디렉터리를 기준으로 따지는 경로
💡 [trainer8@ftz trainer8]$ vi programe.c
[trainer8@ftz trainer8]$ gcc -o programe.exe programe.c
Trainer9
id 설명
user : 자신을 의미
group : 자신이 속한 그룹
other : user와 group을 제외한 모든 다른 사람
root : 절대적인 권한을 지닌 사람
uid=2009(trainer9) gid=2009(trainer9) groups=2009(trainer9)
- uid : User ID의 약자. 컴퓨터가 알아보기 쉽게 숫자를 부여한 것. (trainer9 = 2009)
- gid : Group ID의 약자. 특별한 일이 없는 한 gid는 항상 uid와 같음.
- groups : 현재 자신이 어떤 그룹에 속해 있는지를 보여줌. (default uid와 같음)
파일 분석법
💡 rwx rwx rwx 1 trainer9 trainer10 5 10월 20 21:35 test
1 2 3 4 5 6
r(읽기) w(쓰기) x(실행) s(SetUID로 x를 포함)
user의 권한 group의 권한 Other의 권한
User Group 파일 이름
Trainer10
local 해킹 시 핵심이 되는 SetUID 설명
❗❗Local 해킹 : 관리자 권한 (root)를 얻고자 시도
❗❗Remote 해킹 : 일반 아이디를 얻을 때
SetUID : 일시적으로 자신의 ID를 변경하는 것 (잠시동안 root 권한을 가질 수 있음)
- Set이란 말은 "변경하다"란 뜻을 가지고 있고, UID는 User ID의 약자입니다. 따라서 SetUID는 "일시적으로 자신의 ID를 변경하는 것"을 의미합니다.
지금까지 발견된 기법
- 레이스컨디션
- IFS버그
- 링크버그
- 버퍼 오버플로우
이러한 버그에 의해 루트 권한을 넘겨준 파일
- userhelper
- imwheel-solo
- restore
- screen
서버 전체에서 SetUID가 걸린 파일을 찾는 방법
💡$ find / -perm -4000
※find 명령어 옵션
- perm 권한과 일치하는 파일을 찾는다. ex) # find / -perm 4755
- name 이름과 일치하는 파일을 찾는다. ex) # find / -name cat
- user 유저와 일치하는 파일을 찾는다. ex) # find / -user mmung2
- group 그룹과 일치하는 파일을 찾는다. ex) # find / -group guta
'🌇│System_Study > 📕│HackerSchool_FTZ' 카테고리의 다른 글
HackerSchool_level5 (0) | 2022.06.30 |
---|---|
HackerSchool_level4 (0) | 2022.04.07 |
HackerSchool_level3 (0) | 2022.04.06 |
HackerSchool_level2 (0) | 2022.04.06 |
HackerSchool_level1 (0) | 2022.04.06 |