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

bandit level 26에서는
제한된 쉘 환경을 우회하여 비밀번호를 획득하여야 합니다.

터미널 창이 충분히 커서 모든 텍스트가 한 번에 출력되면
more는 즉시 종료되고 뒤이어 프로세스가 종료되면서 SSH 세션이 닫힙니다.
vi, more, less, man와 같은 유닉스 유틸리티에 구현된 쉘 이스케이프(Shell Escape) 기능을 호출하면,
부모 프로세스의 제어권을 Suspend시키고 주소 공간을 복제하여 하위 쉘 프로세스를 실행하여 제어권을 획득합니다.
터미널 창의 세로 길이를 5행 이하로 축소하여 more가 출력을 멈추고 사용자의 입력을 기다리는 상태를 유지하게 만듭니다.
more가 대기 상태일 때, v 키를 눌러 현재 보고 있는 파일을 vi 편집기로 열 수 있습니다.


:set shell=/bin/bash
:shell
vi는 편집 도중 쉘 명령을 실행할 수 있는 기능을 제공합니다.
set 명령어로 편집기 내부의 Shell Variable를 /bin/bash로 하이재킹하여 escape 시 호출될 Interpreter를 사용자 의도에 따라 재설정합니다. 해당 명령어가 없으면 :shell 명령 시 시스템의 기본값(제한된 쉘)이 다시 호출되어 escape에 실패합니다.
이후 정의된 쉘을 기동하여 interactive session을 획득합니다.
화면과 같이 bandit@bandit:~$가 나오면 정상적인 interactive session이 활성화된 것입니다.

ls -l bandit27-do를 통해 bandit27-do 파일이 bandit27의 권한으로 실행되는 Setuid 파일이라는 사실을 파악했다면,
RUID는 bandit26이지만 Setuid 파일을 통해 일시적으로 EUID를 bandit27로 상승시켜
cat /etc/bandit_pass/bandit27 명령을 수행시키면 비밀번호가 출력됩니다.
Escape Sequence의 보편성
- vi뿐만 아니라 nmap, tcpdump, gdb 등 외부 명령 실행 기능을 지원하는 수많은 관리 도구들이 잠재적인 권한 상승 경로가 될 수 있다.
'Bandit' 카테고리의 다른 글
| Bandit Level 28 -> Level 29 (0) | 2026.01.19 |
|---|---|
| Bandit Level 27 -> Level 28 (0) | 2026.01.19 |
| Bandit Level 25 -> Level 26 (0) | 2026.01.13 |
| Bandit Level 24 -> Level 25 (0) | 2026.01.13 |
| Bandit Level 23 -> Level 24 (1) | 2026.01.13 |