Bandit Wargame 풀이 기록입니다.
1. 문제 목표 및 접속 정보
- 목표:
- 접속 정보:
- Host:
bandit.labs.overthewire.org - Port:
2220 - User:
bandit25 - Password:
iCi86ttT4KSNe1armKiwbQNmB3YJP3q4
- Host:
ssh bandit25@bandit.labs.overthewire.org -p 2220
2. 풀이 과정
1. (첫 번째 단계) 오랜만에 파일이 있네..
bandit25@bandit:~$ ls
bandit26.sshkey
bandit25@bandit:~$ cat bandit26.sshkey
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEApis2AuoooEqeYWamtwX2k5z9uU1Afl2F8VyXQqbv/LTrIwdW
pTfaeRHXzr0Y0a5Oe3GB/+W2+PReif+bPZlzTY1XFwpk+DiHk1kmL0moEW8HJuT9
/5XbnpjSzn0eEAfFax2OcopjrzVqdBJQerkj0puv3UXY07AskgkyD5XepwGAlJOG
xZsMq1oZqQ0W29aBtfykuGie2bxroRjuAPrYM4o3MMmtlNE5fC4G9Ihq0eq73MDi
1ze6d2jIGce873qxn308BA2qhRPJNEbnPev5gI+5tU+UxebW8KLbk0EhoXB953Ix
3lgOIrT9Y6skRjsMSFmC6WN/O7ovu8QzGqxdywIDAQABAoIBAAaXoETtVT9GtpHW
qLaKHgYtLEO1tOFOhInWyolyZgL4inuRRva3CIvVEWK6TcnDyIlNL4MfcerehwGi
il4fQFvLR7E6UFcopvhJiSJHIcvPQ9FfNFR3dYcNOQ/IFvE73bEqMwSISPwiel6w
e1DjF3C7jHaS1s9PJfWFN982aublL/yLbJP+ou3ifdljS7QzjWZA8NRiMwmBGPIh
Yq8weR3jIVQl3ndEYxO7Cr/wXXebZwlP6CPZb67rBy0jg+366mxQbDZIwZYEaUME
zY5izFclr/kKj4s7NTRkC76Yx+rTNP5+BX+JT+rgz5aoQq8ghMw43NYwxjXym/MX
c8X8g0ECgYEA1crBUAR1gSkM+5mGjjoFLJKrFP+IhUHFh25qGI4Dcxxh1f3M53le
wF1rkp5SJnHRFm9IW3gM1JoF0PQxI5aXHRGHphwPeKnsQ/xQBRWCeYpqTme9amJV
tD3aDHkpIhYxkNxqol5gDCAt6tdFSxqPaNfdfsfaAOXiKGrQESUjIBcCgYEAxvmI
2ROJsBXaiM4Iyg9hUpjZIn8TW2UlH76pojFG6/KBd1NcnW3fu0ZUU790wAu7QbbU
i7pieeqCqSYcZsmkhnOvbdx54A6NNCR2btc+si6pDOe1jdsGdXISDRHFb9QxjZCj
6xzWMNvb5n1yUb9w9nfN1PZzATfUsOV+Fy8CbG0CgYEAifkTLwfhqZyLk2huTSWm
pzB0ltWfDpj22MNqVzR3h3d+sHLeJVjPzIe9396rF8KGdNsWsGlWpnJMZKDjgZsz
JQBmMc6UMYRARVP1dIKANN4eY0FSHfEebHcqXLho0mXOUTXe37DWfZza5V9Oify3
JquBd8uUptW1Ue41H4t/ErsCgYEArc5FYtF1QXIlfcDz3oUGz16itUZpgzlb71nd
1cbTm8EupCwWR5I1j+IEQU+JTUQyI1nwWcnKwZI+5kBbKNJUu/mLsRyY/UXYxEZh
ibrNklm94373kV1US/0DlZUDcQba7jz9Yp/C3dT/RlwoIw5mP3UxQCizFspNKOSe
euPeaxUCgYEAntklXwBbokgdDup/u/3ms5Lb/bm22zDOCg2HrlWQCqKEkWkAO6R5
/Wwyqhp/wTl8VXjxWo+W+DmewGdPHGQQ5fFdqgpuQpGUq24YZS8m66v5ANBwd76t
IZdtF5HXs2S5CADTwniUS5mX1HO9l5gUkk+h0cH5JnPtsMCnAUM+BRY=
-----END RSA PRIVATE KEY-----
local로 가지고오자 복붙해서 권한 600으로 바꿔도 되고 scp써도 된다 이번엔 scp로 간다..
2. 해결 방법
2-1 scp를 사용해서 로컬로 밴딧서버에 있는 파일 복사하기
❯ scp -P 2220 bandit25@bandit.labs.overthewire.org:/home/bandit25/bandit26.sshkey .
_ _ _ _
| |__ __ _ _ __ __| (_) |_
| '_ \ / _` | '_ \ / _` | | __|
| |_) | (_| | | | | (_| | | |_
|_.__/ \__,_|_| |_|\__,_|_|\__|
This is an OverTheWire game server.
More information on http://www.overthewire.org/wargames
backend: gibson-1
bandit25@bandit.labs.overthewire.org's password:
bandit26.sshkey 100% 1679 1.8KB/s 00:00
2-2 벤딧26으로 연결시도
❯ ssh -i bandit26.sshkey bandit26@bandit.labs.overthewire.org -p 2220
For more information regarding individual wargames, visit
http://www.overthewire.org/wargames/
For support, questions or comments, contact us on discord or IRC.
Enjoy your stay!
_ _ _ _ ___ __
| | | (_) | |__ \ / /
| |__ __ _ _ __ __| |_| |_ ) / /_
| '_ \ / _` | '_ \ / _` | | __| / / '_ \
| |_) | (_| | | | | (_| | | |_ / /| (_) |
|_.__/ \__,_|_| |_|\__,_|_|\__|____\___/
Connection to bandit.labs.overthewire.org closed.
실패했다..
2-3 문제에서 쉘이 /bin/bash가 아니래서 뭔가해서 봤더니..
bandit25@bandit:~$ cat /etc/passwd | grep bandit26
bandit26:x:11026:11026:bandit level 26:/home/bandit26:/usr/bin/showtext
2-4 cat으로 뭔가해서 읽었더니 스크립트파일이던데..
bandit25@bandit:~$ cat /usr/bin/showtext
#!/bin/sh
export TERM=linux
exec more ~/text.txt
exit 0
more 명령어로 /home/bandit26/text.txt 실행하고 종료한다.. 그렇다면 more는 터미널창에따라 보여주는 정도가 다른걸 이용하자.!!
2-5 터미널창을 가장 작게 줄여두고 26으로 접속시도
❯ ssh -i bandit26.sshkey bandit26@bandit.labs.overthewire.org -p 2220
_ _ _
--More--(10%)
ㅅㅅㅅㅅ
2-6 v를 눌러서 vi편집창을 열어주자
_ _ _ _ ___ __
| | | (_) | |__ \ / /
| |__ __ _ _ __ __| |_| |_ ) / /_
| '_ \ / _` | '_ \ / _` | | __| / / '_ \
| |_) | (_| | | | | (_| | | |_ / /| (_) |
|_.__/ \__,_|_| |_|\__,_|_|\__|____\___/
~
~
~
~
~
~
~
~
~
~
~
~
~
:set shell=/bin/bash
:sh
명령모드로 크랙!!! 해야한다 shell을 bin/bash로 바꿔주고 :sh로 쉘을 켜주면
2-7 접속성공..
bandit26@bandit:~$ ls
bandit27-do text.txt
2-8 크랙
bandit26@bandit:~$ cat /etc/bandit_pass/bandit26
s0773xxkk0MXfdqOfPRVr9L3jJBUOgCZ
3. Level [25] 비밀번호 (Flag) 획득
터미널 창의 크기를 물리적으로 줄여 강제 로그아웃 스크립트(텍스트 뷰어)를 일시 중지(--More--)시키고, 그 틈을 타 vi 편집기를 호출한 뒤 쉘(Shell)을 스폰(Spawn)하여 제한된 환경을 탈출(Jailbreak)하고 로그인에 성공했습니다.
[s0773xxkk0MXfdqOfPRVr9L3jJBUOgCZ]
4. 핵심 명령어 및 개념
- Shell Spawning (쉘 스포닝/탈출):
vi,more,less,awk,find등과 같이 내부에서 시스템 명령어를 호출할 수 있는 프로그램을 악용하여, 제한된 환경을 뚫고 상위 권한의 인터랙티브 쉘(/bin/bash)을 실행시키는 해킹 기법이다. 이를 Jailbreak라고도 부른다. - Terminal Window Manipulation: 터미널 창의 크기(Height)를 물리적으로 매우 작게 줄임으로써,
more같은 페이징 프로그램이 텍스트를 한 번에 출력하지 못하고 사용자의 입력을 기다리는 상태(--More--)로 강제 진입하게 만드는 트릭이다. - Vi Command Execution: Vi/Vim 에디터는 단순 편집기가 아니라 운영체제와 상호작용이 가능하다.
:set shell=/bin/bash: Vi가 사용할 쉘을 bash로 변경한다.:shell: 설정된 쉘을 자식 프로세스로 실행하여 터미널로 빠져나간다.