해당 게시글은 bandit wargame에 대한 스포일러(방향성/힌트/정답)를 제공할 수 있습니다.

bandit level 24에서 비밀번호를 얻기 위해
무작위 대입(Brute force)하는 Shell script를 작성해야 합니다.

접속 직후의 CWD인 홈 디렉토리는 쓰기 권한이 없습니다.
mktemp -d 명령어를 실행하여 쓰기 권한이 있는 임시 디렉토리를 생성하고, cd 명령어를 실행하여 임시 디렉토리로 이동합니다.
vi 편집기로 Brute force shell script를 작성합니다.
#!/bin/bash
PASSWORD="gb8KRRCsshuZXI0tUuR6ypOFjiZbf3G8"
for i in {0000..9999};
do
printf "$PASSWORD $i\n"
done
Bash의 중괄호 기능을 활용하여 0000부터 9999까지의 연속된 정수 문자열을 생성합니다.
echo보다 제어 문자 처리가 엄밀한 printf를 사용하고,
각 페이로드 끝에 개행 문자(\n)를 삽입하여 서버가 각 행을 독립된 입력으로 처리하게 만듭니다.
chmod 755 명령어를 실행하여 작성한 쉘 스크립트에 실행 권한을 부여합니다.

시험적으로 ncat을 실행시켜 error message 내용을 출력시킵니다.
서버로부터 유입되는 대량의 응답 중 Wrong!를 Negative Matching 방식의 grep -v 옵션으로 지우기 위한 인자를 파악하기 위함입니다.

Shell script의 표준 출력을 파이프라인으로 전달하여 ncat으로 접속한 서버에 보냅니다.
grep -v 옵션을 이용하였으므로 서버의 응답 중에서 비밀번호가 포함된 메세지만 출력됩니다.
시간복잡도는 O(N)이며 이 경우, N=10000.
만약 서버가 시도마다 연결을 끊었다면 매번 ncat을 실행하는 로직을 스크립트에 첨부해야 했을 것.
'Bandit' 카테고리의 다른 글
| Bandit Level 26 -> Level 27 (Escape Sequence) (0) | 2026.01.13 |
|---|---|
| Bandit Level 25 -> Level 26 (0) | 2026.01.13 |
| Bandit Level 23 -> Level 24 (1) | 2026.01.13 |
| Bandit Level 22 -> Level 23 (0) | 2026.01.13 |
| Bandit Level 21 -> Level 22 (0) | 2026.01.13 |