Bandit Level 6 → Level 7

Minchae Kim·2023년 5월 3일
0

📌 Level 6 → Level 7


https://overthewire.org/wargames/bandit/bandit7.html

🚩 Level Goal

The password for the next level is stored somewhere on the server and has all of the following properties:

owned by user bandit7
owned by group bandit6
33 bytes in size

🚩 Problem Solving

ls -al 명령어를 활용하여 출력하면 홈 디렉터리에는 아무것도 찾아볼 수 없고, 대신 /(root) 디렉터리에 무언가 들어있음을 알 수 있다.

ls -al
total 20
drwxr-xr-x  2 root root 4096 Apr 23 18:04 .
drwxr-xr-x 70 root root 4096 Apr 23 18:05 ..
-rw-r--r--  1 root root  220 Jan  6  2022 .bash_logout
-rw-r--r--  1 root root 3771 Jan  6  2022 .bashrc
-rw-r--r--  1 root root  807 Jan

cd 이용해서 루트 디렉터리로 이동 후, find 명령어를 활용하여 password를 찾아내야 하는 상황이다.

🔹 Process

Level Goal에서는 'is stored somewhere on the server'에 있다고 하였으니, 최상위 경로인 /에서 find 명령어를 활용하여 주어진 조건들을 만족시키는 file을 찾도록 한다. Level 5 → Level 6에서 간단하게 적어두었던 find 명령어의 expression을 사용하면 된다.

find / -size 33c -user bandit7 -group bandit6
→ Permission denied 된 파일을 포함해서 수많은 파일들이 출력

Permission denied된 파일들이 상당함으로, 적당히 걸러서 볼 필요가 있다. 이때 error난 결과들을 걸러낼 수 있는 명령어를 활용하면 된다. ('Permission denied'에 대한 이야기는 밑에서 더 자세히 다루도록 하겠다.)

find / -size 33c -user bandit7 -group bandit6 2> /dev/null
→ /var/lib/dpkg/info/bandit7.password

cat 명령어로 위에 주어진 것 출력 값을 읽으면 password를 얻어낼 수 있다.

🔹 Password

Bandit7 Password : z7WtoNQU2XfjmMtWA8u5rN4vzqu4v99S

📌 Linux Commands


  • Commands you may need to solve this level : ls , cd , cat , file , du , find , grep

🚩 find Expression

매 level마다 find Expression이 등장하는 것 같아, 별도로 정리해두면 편리할 것 같다. 추후 필요한 expression이 늘어난다면 글을 작성해볼 생각이다.

🔹 Expression 정리

  • -user : 지정한 '사용자'의 파일이나 디렉터리를 찾는다. (Level 5 → Level 6에서 다루었던, 파일/디렉터리 이름을 의미하는 -name 명령어와는 엄연히 다르다.)
  • -group : 지정한 그룹 소유의 파일이나 디렉터리를 찾는다.

두 명령어 모두 명령어 뒤에 해당하는 user 이름과 group 이름을 적어주면 된다.

🚩 2 > /dev/null

/dev/null를 설명하기 전에 앞서, Level 1 → Level 2에서 다루었던 File DiscriptorRedirection에 대해 다시 한 번 더 상기시키고 넘어가겠다.

🔹 Permission denied Error

File Descriptor는 프로세스에서 특정 파일에 접근할 때 사용하는 추상적인 값으로, 0~2의 FD 값 중, 2Standard Error 즉 표준 에러에 해당한다. 해당 level를 풀 때 마주했던 상당한 양의 Permission denied(표준 에러, 2)들을 걸러서 원하는 값을 출력하려면, 표준 에러들을 다른 곳으로 보내면 된다. 이때 사용하는 것이 바로 Redirection이다.

🔹 Redirection

Redirection은 간단하게 말해서 입, 출력의 방향을 지정할 때 사용한다. 표준 에러, 즉 FD가 2번인 것들을 특정 공간으로 이동시켜 원하는 값을 걸러내야 한다.

  • A > B : A의 결과를 B로 보낸다. (덮어쓰기)
  • A >> B : A의 결과를 기존 B의 데이터에 추가한다.
  • A < B : B의 데이터를 A에 입력한다. (입력)

🔹 /dev/null

/dev/null는 linux의 쓰레기 통이라고 보면 된다. 간단하게 비유해서, 모든 출력을 흡수하는 블랙홀이다. 앞서 언급한 표준 에러인 2를 전부 쓰레기 통으로 보내면 된다. 즉 표준 에러를 /dev/null로 보내 출력하지 않게 해주면 된다.

2 > /dev/null

📌 Linux Concept


🚩 ROOT Directory

profile
The Bloom of Youth

0개의 댓글