반응형

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

 

OverTheWire: Level Goal

We're hackers, and we are good-looking. We are the 1%. <!-- Please read and accept the Rules! --> 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 ban

overthewire.org

 

Bandit Level 6 → Level 7

 

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


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

 

find : 파일 시스템에서 명령을 사용하여 디렉토리 트리에서 지정된 각 경로를 반복적으로 검색하여 다음 텍스트에 제공된 용어를 사용하여 작성된 부울 표현식과 일치하는 파일을 찾습니다.


문제 해석

서버 어딘가에 다음과 같은 항목을 만족하는 곳에 비밀번호가 저장되어 있다

 

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

 


 

 

bandit6@bandit:~$ ls
bandit6@bandit:~$ cd /
bandit6@bandit:/$ ls
bin                formulaone  lib.usr-is-merged  proc                srv
bin.usr-is-merged  home        libx32             root                sys
boot               krypton     lost+found         run                 tmp
dev                lib         media              sbin                usr
drifter            lib32       mnt                sbin.usr-is-merged  var
etc                lib64       opt                snap

우선, 홈 디렉터리(~)에서 ls 명령어를 통해 파일이나 디렉터리가 없음을 확인했다

(al하면 몇 개 나오지만, 문제와는 상관없음)

 

그래서 최상위 디렉토리(/)로 접근하여 ls 명령을 수행하니 여러 파일이 나오는 것을 알 수 있다.

문제에서 stored somewhere라고, 어디인지 구체적인 말을 안해주었기에 최사위 디렉터리에서 접근하는 것이 좋을 것 같다.

 

주어진 조건을 만족하는 파일을 찾기위해 find 명령어를 사용하자

 

bandit6@bandit:/$ find . -user bandit7 -group bandit6 -size 33c
find: ‘./sys/kernel/tracing’: Permission denied
find: ‘./sys/kernel/debug’: Permission denied
find: ‘./sys/fs/pstore’: Permission denied
find: ‘./sys/fs/bpf’: Permission denied
find: ‘./snap’: Permission denied
find: ‘./run/lock/lvm’: Permission denied
find: ‘./run/systemd/inaccessible/dir’: Permission denied
find: ‘./run/systemd/propagate/systemd-udevd.service’: Permission denied


....
해당 오류를 자세히 보면 Permission denied가 공통적으로 나옴

Permission denied라는 에러를 포함한 응답을 휴지통에 넣으면 정답을 찾을 수 있을 것 같다.

그런데 리눅스에서 휴지통은 어디에 있고, Permission denied라는 에러를 어떻게 집어넣을 수 있을까?

 

그 전에, 표준 입출력에 대한 내용을 잠시 살펴보자

 

 

표준 입력(Standard Input Stream ; 0) : 쉘에 명령어, 데이터를 입력하는 것

표준 출력(Standard Output Stream ; 1) : 프로ㅡ램의 실행 결과를 쉘 화면에 보여주는 것

표준 에러(Standard Error Stream ; 2) : 사용자 요청을 반환할 수 없을 때 에러

 

0, 1, 2는 File Descriptor라는 값이다.

 

이 File Descriptor라는 것을 이용하여, 리눅스의 휴지통 역할을 하는 /dev/null에 Permission denied 오류를 집어넣는다

 

 

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

리다이렉션 방법은 [숫자][>] [경로] 로 작성하면 된다.

여기서 [숫자]는 File Descriptor인데, 1은 생략이 가능하다.

 

즉, ./var/lib/dpkg/info/bandit7.password에 패스워드가 있는 것을 확인할 수 있다.

 

bandit6@bandit:/$ cat ./var/lib/dpkg/info/bandit7.password
morbNTDkSW6jIlUc0ymOdMaLnOlFVAaj

이번 문제는 조금 어렵지만, 우리는 해커가 될 사람이니까 이지하다고 떼쓰자

 


정리

1. find -user bandit7 -group bandit6 -size 33c 2> /dev/null

2. cat ./var/lib/dpkg/info/bandit7.password

반응형

'네트워크 공부 > bandit' 카테고리의 다른 글

[Bandit] Level 7 -> Level 8  (0) 2024.07.19
[Bandit] Level 5 -> Level 6  (0) 2024.07.19
[Bandit] Level 4 -> Level 5  (0) 2024.07.19
[Bandit] Level 3 -> Level 4  (0) 2024.07.18
[Bandit] Level 2 -> Level 3  (0) 2024.07.18

+ Recent posts