Bandit17


diff [옵션] <파일1> <파일2> : 파일1과 파일2를 비교하여 차이점을 표준 출력으로 보여준다.
cmp
명령어는 두 파일을
바이트 단위
로 비교하여 차이점을 찾아내는 데 사용됩니다.
diff
명령어가 줄 단위로 내용을 비교하는 반면,
cmp
는 이진(binary) 파일까지도 비교할 수 있어 더 원시적인 차이를 감지하는 데 적합
Bandit18




Bandit19

→ 홈 디렉터리에 있는 setuid 바이너리를 사용해야 합니다. 사용법을 알아내기 위해 인수(argument) 없이 실행하세요.
setuid 바이너리를 사용한 후에는 평소처럼 /etc/bandit_pass 에서 이 레벨의 비밀번호를 찾을 수 있습니다
ls -l 명령어를 사용하여 현재 디렉터리의 파일을 자세히 살펴보면 bandit20-do 라는 실행 파일을 찾을 수 있다.
이 파일의 소유자는 bandit20이고, rws라는 특별한 권한이 설정되어 있다. 이 s는 setuid 비트를 의미한다.
setuid가 설정된 파일은 이 파일을 실행하는 사용자가 아닌, 파일의 소유자(owner) 권한으로 실행된다.
즉, 이 파일을 실행하면 현재 bandit19 사용자가 bandit20 사용자의 권한을 일시적으로 얻게 된다.

"Run a command as another user" 라는 메시지와 함께 Example: ./bandit20-do id 와 같은 사용 예시가 출력된다.
이 예시를 통해 이 바이너리가 다른 사용자의 권한으로 명령어를 실행하는 데 사용된다.

./bandit20-do cat /etc/bandit_pass/bandit20
bandit20-do를 사용하여 bandit20 사용자의 비밀번호가 저장된 파일을 읽는다. bandit19는 이 파일에 접근할 수 없지만, bandit20-do를 통해 bandit20의 권한을 얻을 수 있다.
Bandit20

→ 홈 디렉터리에 있는 setuid 바이너리는 다음과 같은 기능을 수행합니다:
- 명령줄 인자로 지정된 포트를 사용하여 localhost에 연결합니다.
- 해당 연결에서 한 줄의 텍스트를 읽어들입니다.
- 읽어들인 텍스트가 이전 레벨(bandit20)의 비밀번호와 일치하는지 비교합니다.
- 만약 비밀번호가 올바르면, 다음 레벨(bandit21)의 비밀번호를 전송합니다.


Bandit21

정해진 시간마다 작업을 자동으로 실행해주는 스케줄러인 cron에 의해 프로그램이 자동 실행되고 있다. /etc/cron.d/ 디렉토리에서 설정을 확인하여 어떤 명령어가 실행되는지 찾아보자.


Bandit22

자동화된 작업 스케줄러인 cron에 의해 정기적으로 프로그램이 실행되고 있습니다. /etc/cron.d/ 디렉터리에서 설정 파일을 확인하고 어떤 명령이 실행되는지 찾아보세요.
참고: 다른 사람이 작성한 셸 스크립트를 읽는 것은 매우 유용한 기술입니다. 이 레벨의 스크립트는 이해하기 쉽게 의도적으로 만들어졌습니다. 만약 스크립트가 무슨 일을 하는지 이해하기 어렵다면, 직접 실행해서 디버그 정보가 어떻게 출력되는지 확인해 보세요.

Bandit23

참고: 이 레벨은 직접 셸 스크립트를 작성해야 합니다. 이 레벨을 통과하면 아주 큰 한 걸음을 내딛는 것이니 스스로에게 자랑스러워해도 좋습니다!
참고 2: 여러분이 작성한 셸 스크립트는 실행된 후에 제거되니, 사본을 따로 보관해 두는 것이 좋습니다.



Bandit24

30002번 포트에서 **데몬(daemon)**이 실행되고 있으며, bandit24의 비밀번호와 4자리 숫자 핀코드를 입력하면 bandit25의 비밀번호를 알려줄 것입니다. 핀코드는 브루트 포스(brute-force) 공격이라고 불리는 10,000가지 조합을 모두 시도하는 것 외에는 알아낼 방법이 없습니다.
참고: 매번 새로운 연결을 만들 필요는 없습니다.


Bandit25

Bandit25에서 Bandit26으로 로그인하는 것은 비교적 쉬울 것입니다.
하지만 Bandit26 사용자의 셸(shell)이 /bin/bash가 아닌 다른 것입니다. 그 셸이 무엇인지, 어떻게 작동하는지, 그리고 어떻게 그 셸을 벗어날 수 있는지 알아내야 합니다.
참고: 만약 Windows 사용자이고 평소에 PowerShell을 사용해 ssh로 Bandit에 접속했다면, PowerShell은 이 레벨의 의도된 해결책과 충돌을 일으킬 수 있습니다. 대신 **명령 프롬프트(Command Prompt)**를 사용해야 합니다.






Bandit26


Bandit27




Bandit28




'Bandit' 카테고리의 다른 글
| [9월 18일] Bandit Walkthrough Level 11~16 (0) | 2025.09.18 |
|---|---|
| [9월 17일] Bandit Walkthrough Level 1~10 (0) | 2025.09.17 |