FTZ #2 - trainer6~10

흑흑코더·2022년 5월 22일
0

FTZ

목록 보기
3/5

FTZ trainer 6~10 학습내용 정리

trainer6 - 패스워드 파일 분석

  • 패스워드 파일 : 한 서버를 사용하는 사용자들의 모든 정보를 기록해 놓은 파일
  • cat : 파일의 속 내용을 화면으로 출력하는 기본 명령어
  • ':' : 7개의 필드를 구분
  • 첫 번째 필드 : 서버에 로그인 할 때 사용되는 아이디 (계정)
  • 두 번째 필드 : 패스워드 정보를 'x'로 대체
    -> 원래 암호화된 문자열이 들어가 있었으나 해커들이 해독하는 프로그램 (크래커)를 만들어 암호화를 무력화 시킴. 이 일을 방지하기 위해 두번째 필드에서 x라는 문자만 남겨두고 사용자들의 패스워드를 / etc/ shadow 파일에 모아두었다.
  • 세 번째 / 네 번째 필드 : 컴퓨터가 판단하는 사용자의 이름 / 그룹
  • 다섯 번째 필드 : 사용자의 이름
  • 여섯 번째 필드 : 해당 사용자가 로그인에 성공하면 위치하게 되는 디렉토리
  • 일곱 번째 필드 : 사용자가 로그인 했을 때 실행되게 할 프로그램 (쉘이 실행되는 것이 보통)

trainer7 - 파일의 압축과 해제

  • tar cvf 새파일이름 파일들이름 : 합치기
  • tar cvf 파일이름 * : 현재 디렉토리의 모든 파일 (*)을 새로운 파일로 합치기
  • tar xvf 파일이름 : 해제하기

    c - Create : 새파일을 만드는 옵션
    x - eXtract : 압축 해제
    v - View : 압축 / 압축 해체 과정 출력
    f - File : 파일로서 백업을 하는 옵션

  • gzip 파일이름 : 선택된 파일을 압축 (1개 파일씩 개별로 압축가능)
  • gzip -d 파일이름 : 선택된 파일을 해제

    tar는 압축을 하는 프로그램이 아님. 용량이 오히려 증가 -> gzip 프로그램으로 한 번 더 압축을 해줘야함.

<파일 확장자>

  • tar : tar 프로그램을 사용하여 압축된 파일 (압축X 하나로 뭉쳐져있음)
  • gz : gzip 프로그램을 사용하여 압축된 파일
  • tar.gz : tar 프로그램 사용 파일 합친뒤 gzip을 사용하여 압축
  • tgz : tar.gz 파일을 합쳐서 만든 확장자

trainer8 - 파일생성, 컴파일, 실행하기

  • 텍스트 파일 생성
  1. 쉘 프롬프트 상태에서 cat > 파일이름.txt 입력
  2. 원하는 내용 작성
  3. ctrl + D (입력 종료)

    리다이렉션 : 방향을 전환
    '>' : 왼쪽에서 출력되는 것들을 받아서 오른쪽의 입력으로 보낸다.
    '>>' : 기존 내용에 추가 입력

  • 프로그램 소스 파일 생성
  1. cat > 파일이름.c 입력 (C언어의 경우)
  2. 프로그램 작성
  3. ctrl + D (입력 종료)
  • 프로그램 소스 파일 컴파일 -> 실행
  1. 쉘 프롬프트에 gcc -o 프로그램이름 소스파일이름 입력
  2. 절대경로/프로그램이름 입력 ('.'은 현재 디렉토리를 의미 -> ./프로그램이름 과 같이 입력해도 됨)

    절대경로 : 최상위 디렉토리 인 루트(/)에서부터 시작되는 경로
    (ex. cd/home/guest/public_html)
    상대경로 : 자신의 위치한 디렉터리를 기준으로 따지는 경로
    (ex. cd public_html/)


trainer9 - 권한


<리눅스의 사용자 종류>

  • 유저 : 자기 자신
  • 그룹 : 모든 유져는 하나 이상의 그룹에 속함. 임의로 변경하지 않는 이상 그룹이름은 자신의 유저네임과 같음.
  • 아더 : 유저와 그룹을 제외한 모든 다른 사람
  • 루트 : 절대적인 권한을 가지고 있는 사용자

  • uid : User ID의 약자, 뒤의 숫자는 컴퓨터가 인식하는 ID.
  • gid : Group ID의 약자, 특별한 일이 없는 한 gid는 항상 uid와 같음.
  • groups : 자신이 현재 속해있는 그룹
  • 파일권한 분석하기
    ① test1 이라는 파일은
    ② trainer9 라는 uid를 가진 사용자에게
    ③ 읽기(r) 쓰기(w) 실행(x) 권한이 있고
    ④ trainer10 이라는 gid를 가진 사용자에게도
    ⑤ 읽기(r) 쓰기(w) 실행(x) 권한이 있고
    ⑥ trainer9와 10을 제외한 모든 사람에게도
    ⑦ 읽기(r) 쓰기(w) 실행(x) 권한이 있다.

trainer10 - SetUID

  • Remote 해킹 : 자신이 해킹하고자 하는 서버의 아이디를 얻고자하는 시도
  • Local 해킹 : 해킹하고자 하는 서버에 계정이 있을 때, 관리자 권한(root)를 얻고자하는 시도
  • SetUID : ID를 일시적으로 변경

    지신의 암호를 변경하는 passwd파일에 루트 권한의 SetID가 걸려있으면 passwd파일을 실행하는 동안에는 루트로의 일시적인 아이디 변경이 됨
    -> SetUID가 걸린 허술한 파일을 속이면 관리자 권한 획득 = 해킹 가능
    *버퍼 오버플로우 : 해킹 기법 중 하나, SetID가 걸린 파일에 오버플로우를 일으켜 루트 권한의 쉘 획득

  • s -> SetUID를 의미하고 x(실행권한)을 포함

  • find / -perm -4000 : 적어도(-) SetUID가(4) 걸린 모든파일을 찾아라(-perm). ('000' = rwx 모두)

  • -name : 이름과 일치하는 파일 찾기 (ex. find / -name cat)

  • -user : 유져와 일치하는 파일 찾기 (ex. find / -user mmung2)

  • -group : 그룹과 일치하는 파일 찾기 (ex. find / -group guta)
    *조합하여 사용가능 (ex. find / -user root -perm -4000)


<FTZ레벨별 해킹 통과하는 방법>

  • 다음 레벨으로 넘어가기 위해 다음 레벨의 권한으로 SetUID가 걸린 파일 찾기
  • 그 파일을 이용해 다음 레벨의 쉘을 얻으면 성공
  • my-pass라고 입력하면 다음 레벨의 패스워드가 나타남

와!! 끝났다!!(가 아니라 이제 시작)

profile
공부합시다

0개의 댓글