시스템 해킹을 빠르게 배울 수 있는 해커스쿨에서 FTZ 를 편하게 풀려면 로컬 서버를 구축해야합니다.
서버 구축에 관한 내용은 Shionista의 보안블로그 로 구축하실 수 있습니다.
https://blog.naver.com/is_king/221490460244
Trainer1
아이디/비번은 'trainer1'으로 동일합니다.
프롬프트 관련 내용
ls : 파일을 보여줌
-a : 숨김파일 출력, 파일 앞에 . 를 이면 숨김 파일이고 .를 제일 앞에 붙으면 숨김파일이 된다.
-l : 디렉토리와 파일을 구분하여 출력
가장 왼쪽이 'd' 이면 디렉토리 , '-' 이면 파일
Trainer2 (linuxer)
pwd : 현재 자신의 경로를 출력
cd .. : 상위 폴더로 이동
cd / : 어디서나 최상위 디렉토리로 이동
cd 절대경로 : 절대경로로 이동
mkdir : 디렉토리 생성
rmdir : 디렉토리 삭제
cp 원본 복사본 : 원본을 복사본 이름으로 복사
Trainer3 (computer)
w : 사람들이 접속해있는지 확인
1. 어떤 ID 로 로그인되어 있는지 확인
2. tty 으면 콘솔로 접속, pts 면 터미널 접속, 뒤의 숫자는 몇번째로 접속했는지 보여줌
3. 접속한 사람의 IP
4. 어느 시간에 로그인 했는지
5. 지연 시간, 사용자가 아무 입력 안 한 시간
6. 각 CPU 사용한 지연 시간
7. WHAT 필드에 있는 명령이 지연된 시간
8. 접속된 사용자들이 현재 어떤 명령을 사용하고 있는지
finger -l : 사용자에 대한 더 많은 정보를 볼 수 있음
tty : 자신의 터미널 정보
ifconfig : 현재 접속한 서버의 ip 를 보는 방법
접속한 사용자들과 대화(chating)
write ID /dev/pts/ 번호
wall test : 모든 사용자에게 쪽지
Trainer4(mungguta)
최상위 디렉토리에 있는 폴더들 의미 확인
- bin : 가장 필수적인 리눅스 실행 파일(rm,ls)
- boot : 리눅스 부팅 관련 파일들과 커널 존재
- dev : 컴퓨터에 설치된 하드웨어에 관한 정보들이 파일 형태로 저장
- etc : 중요한 파일 많음, 패스워드 파일, 쉐도우 파일, 대부분의 리눅스 설정파일
- home : 일반 사용자들의 디렉토리가 들어있는 곳
- lib: 많은 라이브러리 파일
- mnt : mount 명령 사용해서 마운트 시킨 시디롬,플로피 디스켓들이 들어있는 디렉토리
- proc : 프로세스들이 파일 형태로 저장
- root : 일반 사용자의 디렉토리와는 달리 root 만의 디렉토리 존재
- abin : 기본 명령들을 제외한 시스템 관리용 실행 파일들이 들어있는 디렉토리
- tmp : 임시로 파일을 저장하는 디렉토리로서, 권한이 상관없이 생성가능한 곳
- usr : 다양한 으용 프로그램들이 설치되어 있음
- var : 시스템 운영 중에 생성되는 임시 파일 들어 있음 , 외부 접속에 대한 로그 파일들이 저장되어 있음
- /etc/passwd : 사용자들에 대한 간단한정보
- /etc/shadow : 사용자들의 패스워드 들어 있음
- /etc/services : 서버가 어떤 서비스 하는 중인지 보여줌
- /etc/issue.net : 처음 접속될 때 나오는 화면
- /etc/motd : 로그인 후에 나오는 메시지
- ~/public_html : 각 사용자들의 홈페이지 파일 들어 있음. 보통 해킹에 성공하면 여기 흔적을 남김
Trainer5(goodluck)
whoami : 자신이 누군지 출력
id : 자신에 대한 자세한 정보
uname -a : 커널 버전 보기
cat /etc/*release : OS 가 어떤 서버인지
rpm -qa : 패키지의 정보 확인 -> 이를 보고 해킹 가능 여부를 알 수 있다.
cat /proc/cpuinfo : 해당 서버의 cpu 정보를 수집
Trainer6(coffee)
root : 서버에 로그인할 때 사용되는 아이디
x : 암호
0 : 숫자를 통해 사용자 판단
0 : 숫자를 통해 그룹 판단
Admin : 사용자 이름
/root : 해당 사용자가 로그인에 성공 했을 때 기본으로 위치하게 되는 디렉토리
/bin/bash : 처음 로그인 했을 때 실행되게 할 프로그램
Trainer7(to the top)
tar 사용법
-c Create : 새로운 파일 만들기
-x eXtract : 압축 해제
-v View : 압축이 되거나 풀리는 과정 출력
-f File : 파일로서 백업을 하겠다는 옵션
tar cvf songs.tar *
tar 은 사실 압축이 아니라 한 파일로 묶는 역할
-> 용량이 오히려 증대함.
따라서 gzip 으로 압축을 해주어야함.
gzip 은 하나밖에 압축을 못해주기 때문에 결론은 tar 로 한개로 합친 다음 이를 gzip 으로 압축해줌
gzip -d : 압축 해제
Trainer8 (player)
cat > test.txt
> 은 리다이렉션. 입력 받은 걸 오른쪽으로 보내주겠다 . 하는 의미 컨트롤 +D 를 눌리면 멈춤
덧붙일려면 cat >>test.txt 하면 됨
cat > program.c
컴파일
gcc -o program.exe program.c
파일을 실행시키려면 절대경로를 모두 입력시켜줘야 실행됨
너무 귀찮으니깐 현재경로라는 의미인 '.' 을 넣어줘서 실행시킴
Trainer9( programming)
유저 : 자신
그룹 : 모든 유저는 하나 이상의 그룹에 속해 있음
아더 : 유저와 그룹을 제외한 모든 다른 사람
루트 : 절대적인 권한을 가지고 있는 사용자
id : 자신의 정보 출력
uid : user id
gid : group id
groups : 현재 자신이 어떤 그룹에 속해 있는지
유저의 권한 ,그룹의 권한, 아더의 권한
r : 읽기 권한
w : 쓰기 권한
x : 실행 권한
리눅스에서는 확장자(exe,bat,com) 인지만 보고 실행 파일인지 구분을 못함. x 가 있는지 없는지보고 판단
Trainer10(best!)
해킹의 종류 2가지
1. 로컬 해킹 : 해킹하고자 하는 서버에 계정을 가지고 있을 때 루트 권한을 얻을 려고 하는 해킹
2. remote 해킹 : 해킹하고자 하는 서버에 아이디를 가지고 있지 않을 때 아이디어를 얻고자 시도하는 것
중요한 건 SetUID
SetUID 가 걸린 파일을 조작해서 권리자 권한을 얻을 수 있게 된다.
SetUID는 일시적으로 자신의 ID 를 변경하는 것을 말함
비밀번호가 들어있는 /etc/shadow 는 루트 권한이 있어서 변경 할 수 있다.
근데 우리는 비밀번호를 변경할 수 있다. 왜 일까 ?
답은 SetUID
자신의 암호를 변경하는 passwd 파일이 루트 권한의 SetUID 가 걸려 있어서 이 파일을 설정하는 동안 '일시적으로 루트의 권한'을 얻게 된다.
SetUID 가 걸려있는 파일에 일부러 버퍼오버플로우를 내서 에러가 날 때 /bin/bash 파일을 실행
-> 루트 쉘 권한 획득
s 가 바로 SetUID 를 이미
서버 전체에서 SetUID 걸린 파일을 찾는 방법
find / -perm -4000
" / 에서 부터 적어도 SetUID 가 걸린 모든 파일을 찾아라 "
-perm 은 '권한을 찾겠다' 라는 옵션
4 자가 바로 SetUID 의미
'000' 은 rwx 의미
find 명령 옵션
-perm : 권한을 찾겠다
-name : 이름과 일치하는 파일 찾음
-user : 유저와 일치하는 파일 찾음
-group : 그룹과 일치하는 파일 찾음
해커스쿨 트레이닝을 끝냈습니다. 이제 level 20개를 깨러 가보겠습니다.
'Wargame > FTZ' 카테고리의 다른 글
FTZ level4 복기 (0) | 2020.11.18 |
---|---|
FTZ level3 풀이 복기 (0) | 2020.11.17 |
FTZ level2 풀이 복기 (0) | 2020.11.12 |