SONOTRI
  • Level 2 -> Level 4
    2024년 12월 27일 19시 16분 50초에 업로드 된 글입니다.
    작성자: sonootri

    Level 2 -> Level 3

    <Level Goal>
    The password for the next level is stored in a file called spaces i this filename located in the home directory

     

     

    Solve

    홈 디렉토리에 위치한 'space in this filename'에 password가 있다고 한다. pwd로 현재 디렉토리가 home 디렉토리인 것을 확인하고 ls 명령어로 어떤 파일이 있는지 살펴봤다.

     

    일단 space in this filename이라는 파일이 존재하는 것은 확인했다. 하지만 cat 명령어에서 error가 난다. 스페이스로 인해 하나의 파일 이름이 4개의 파일로 분리되서 해석되고 있는 것 같다.

    bandit2@bandit:~$ pwd
    /home/bandit2
    
    bandit2@bandit:~$ ls
    spaces in this filename
    
    bandit2@bandit:~$ cat space in this filename
    cat: space: No such file or directory
    cat: in: No such file or directory
    cat: this: No such file or directory
    cat: filename: No such file or directory

     

    그렇다면 스페이스가 포함된 파일 명이 하나의 파일명으로 인식되게 하면 된다.

    작은 따옴표는 모든 특수 문자를 무시하고, 큰 따옴표는 $와 `(백 따옴표)와 \(백슬래시)를 제외한 모든 문자를 무시한다.

    # 큰 따옴표로 묶기
    bandit2@bandit:~$ cat "spaces in this filename"
    MNk8KNH3Usiio41PRUEoDFPqfxLPlSmx
    
    # 작은 따옴표로 묶기
    bandit2@bandit:~$ cat 'spaces in this filename'
    MNk8KNH3Usiio41PRUEoDFPqfxLPlSmx

     

    아니면 \(백슬래시)를 이용해 공백을 이스케이프 할 수도 있다.

    bandit2@bandit:~$ cat spaces\ in\ this\ filename
    MNk8KNH3Usiio41PRUEoDFPqfxLPlSmx

     

     

    More

    공백이 있는 파일을 만들 때도 위의 방식을 사용하면 된다. 아래의 3가지 방식으로 공백을 포함한 파일 이름을 만들 수 있다.

    ┌──(kali㉿kali)-[~/bandit]
    └─$ touch 'file name with space' 
    
    ┌──(kali㉿kali)-[~/bandit]
    └─$ touch file\ name\ with\ spaces 
    
    ┌──(kali㉿kali)-[~/bandit]
    └─$ vi 'file name with enter'

    Level 3 -> Level 4

    <Level Goal>
    The password for the next level is stored in a hidden file in the inhere directory

     

     

    Solve

    inhere 디렉토리의 hidden file(숨겨진 파일)에 password가 존재한다고 한다.

    ls 명령어 결과 home 디렉토리 하위에 inhere 디렉토리가 존재한다. inhere 디렉토리로 이동한 위 ls 명령어를 써봤을 떄는 아무 것도 없다고 뜬다.

    bandit3@bandit:~$ ls
    inhere
    
    bandit3@bandit:~$ cd inhere
    bandit3@bandit:~/inhere$ ls
    bandit3@bandit:~/inhere$

     

    ls -l 명령어 결과가 total 0이라 '정말 아무것도 없나?'라고 생각했지만, hidden file이라는 이름이 걸려서 ls -a 명령어를 써봤다. 그랬더니 뭔가 출력되었다.

    bandit3@bandit:~/inhere$ ls -l
    total 0
    
    bandit3@bandit:~/inhere$ ls -a
    .  ..  ...Hiding-From-You

     

    출력된 ...Hiding-From-Yor 파일을 cat 명령어로 읽어봤다. 그랬더니 password가 나왔다. 4단계도 클리어다!

    -> cat 명령어로는 숨겨진 파일도 읽을 수 있구나.

    bandit3@bandit:~/inhere$ cat ...Hiding-From-You
    2WmrDFRmJIq3IPxneAaMGhap0pFhF3NJ

     

     

    Question

    ls -a 결과에 나타나는 .과 ..는 뭘까?

     

    ls -a는 숨겨진 파일을 포함해 디렉토리 내의 모든 항목을 표시한다. 리눅스 파일 시스템에서 .와 ..는 모든 디렉토리에 기본적으로 존재하는 특수 엔트리이다. 이는 파일이나 디렉토리는 아니며, 파일 시스템의 구조를 나타내기 위한 메타 데이터이다.

    -> 우리가 cd. 또는 cp ../file.txt 등과 같은 명령어를 사용할 때 사용된다.

     

     

    More

    01. 자주 사용하는 ls 옵션

    -l 파일들을 나열할 경우 자세히 출력한다
    -a 경로 안의 모든 파일을 나열한다(숨긴 파일도 포함)
    -R 위치한 디렉토리 하부 디렉토리의 파일까지 모두 출력한다
    -h 파일의 크기를 해석하기 편하게 출력한다
    -r 출력 결과를 내림차순으로 정렬한다
    -t 출력 결과를 파일이 수정된 시간을 기준으로 정렬한다.

     

     

    02. Linux 숨긴 파일

    리눅스에서 숨겨진 파일을 만드는 방법은, 파일 이름 앞에 .을 붙이는 것이다.

    ┌──(kali㉿kali)-[~/bandit]
    └─$ touch .hidden_file            
                                                                                                 
    ┌──(kali㉿kali)-[~/bandit]
    └─$ ls
                                                                                                 
    ┌──(kali㉿kali)-[~/bandit]
    └─$ ls -a       
    .  ..  .hidden_file

     

    반대로 숨겨진 파일을 숨김 해제하고 싶으면 파일명 앞의 .를 제거하면 된다.

    ┌──(kali㉿kali)-[~/bandit]
    └─$ mv .hidden_file hidden_file
                                                                                                 
    ┌──(kali㉿kali)-[~/bandit]
    └─$ ls   
    hidden_file

     

    숨겨진 파일을 읽으려면 숨겨진 파일의 이름을 그대로 입력해야한다(.을 포함해야 한다는 의미이다).

    ┌──(kali㉿kali)-[~/bandit]
    └─$ ls
                                                                                                 
    ┌──(kali㉿kali)-[~/bandit]
    └─$ ls -a
    .  ..  .hidden_file
                                                                                                 
    ┌──(kali㉿kali)-[~/bandit]
    └─$ cat hidden_file
    cat: hidden_file: No such file or directory
    
    # 이렇게 하면 .hidden_file의 내용을 읽을 수 있다
    ┌──(kali㉿kali)-[~/bandit]
    └─$ cat .hidden_file

     

    'PRIVATE > bandit' 카테고리의 다른 글

    Level 4 -> Level 6  (0) 2024.12.27
    Level 0 -> Level 2  (0) 2024.12.26
    Level 0-SSH  (0) 2024.12.25
    댓글