본문 바로가기

Bandit

Bandit Level 24 -> Level 25

해당 게시글은 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