안녕하세요 CTF Bandit Level 3 → Level 4 단계로 넘어가는 풀이를 같이해봅시다
필자는 root계정에서 명령을 입력합니다 만약 root계정이 아니라 오류 나는 경우 명령어 앞에 sudo를 붙여주세요
문제의 내용은 아래와 같습니다
The password for the next level is stored in a hidden file in the inhere directory.
다음 레벨의 패스워드는 inhere 디렉터리의 숨겨진 파일에 저장되어있다고 합니다
초보자도 천천히 따라할수 있습니다 이번 단계에서 패스워드를 찾기 위해서는 inhere디렉터리로 이동한 뒤에 ls명령으로 파일 리스트를 보고 hidden파일을 찾아 cat명령으로 hidden파일에 담긴 패스워드를 출력하면 되는 간단한 문제입니다 히든 파일을 보기 위해서는 ls명령 옵션을 함께 사용하면 되는데 우선 bandit 서버에 ssh연결을 해주세요
┌──(root💀kali)-[~]
└─# ssh -p 2220 bandit3@bandit.labs.overthewire.org
로그인 시 패스워드는 지난 단계에서 찾은 패스워드를 입력하시면 됩니다
bandit3@bandit:~$ pwd
/home/bandit3
pwd 명령을 사용하면 현재 작업 중인 디렉터리를 알려줍니다
pwd는 print working directory의 약자로 현재의 위치가 궁금할 때 자주 사용됩니다
bandit3@bandit:~$ ls
inhere
이제 현재 경로에 어떤 파일들이 있는 확인하기 위해 ls 명령을 입력해주세요
칼리 리눅스 2020.4 zshl shell 기준 ls명령을 사용하였을 때 디렉터리는 파란색 색상 파일은 하얀색 색상으로 터미널에 출력됩니다
파일, 폴더 구별 TIP
리눅스 유형이나 커스텀 마이징으로 인해 색상구분이 어렵다면 색상으로 구분하는 방법 말고도 ls -l 명령을 입력하면 디렉터리의 자세한 내용을 출력해줍니다
왼쪽에 drwxr 이라고 표시되어있는데 여기서 d는 directory를 의미하고 rwx는 읽기, 쓰기, 실행 등의 권한을 의미합니다
쉽게 생각해서 폴더와 파일의 유형을 보고 폴더의 경우 drwxr 파일의 경우 -rw 이런 식으로 보면 구분하기가 쉽습니다
bandit3@bandit:~$ cd inhere
bandit3@bandit:~/inhere$
문제의 내용을 확인했으니 inhere 디렉터리로 이동해봅시다
디렉터리 이동시에는 cd 명령을 사용하여 이동합니다
bandit3@bandit:~/inhere$ ls
bandit3@bandit:~/inhere$
디렉토리 이동후 다시 한번 ls 명령을 사용해봅시다
문제에선 분명히 inhere 디렉터리에 숨겨진 파일에 있다고 했지만 ls 명령을 사용해보니 아무 파일도 보이지 않습니다
ls에 대한 자세한 옵션을 보려면 man ls를 터미널 창에 입력하면 됩니다
ls 옵션 중 -a 옵션은 숨겨진 파일이나 디렉터리를 보여줍니다 즉 ls -a 명령을 사용하면 숨겨진 파일도 함께 출력됩니다
bandit3@bandit:~/inhere$ ls -a
. .. .hidden
bandit3@bandit:~/inhere$ ls -la
total 12
drwxr-xr-x 2 root root 4096 May 7 2020 .
drwxr-xr-x 3 root root 4096 May 7 2020 ..
-rw-r----- 1 bandit4 bandit3 33 May 7 2020 .hidden
ls -a명령을 통해 숨겨진. hidden파일을 발견하였습니다
ls -l 옵션과도 함께 사용할 수 있습니다 ls -la명령을 입력하면 파일을 조금 더 자세히 보여주며 숨겨진 파일도 함께 출력됩니다
23.05.01 bandit사이트의 암호가 변경되었습니다 아래 코드박스를 참고해주세요
bandit3@bandit:~/inhere$ cat .hidden
aBZ0W5EmUfAf7kHTQeOwd8bauFJ2lAiG
이제. hidden파일의 담긴 패스워드를 알아내기 위해 cat명령을 사용해주세요
지난번에 알려드린 tip을 다시 한번 언급하자면 cat .h 까지 입력 후 TAB키를 입력하면 뒷부분은 자동 완성되어 입력됩니다
다음으로 넘어가기 위한 패스워드를 획득하였습니다
exit를 입력하여 연결을 종료하고 다음 단계로 연결해봅시다
┌──(root💀kali)-[~]
└─# ssh -p bandit4@bandit.labs.overthewire.org -p 2220
Bad port 'bandit4@bandit.labs.overthewire.org'
┌──(root💀kali)-[~]
└─# ssh -p 2220 bandit4@bandit.labs.overthewire.org 255 ⨯
This is a OverTheWire game server. More information on http://www.overthewire.org/wargames
bandit4@bandit.labs.overthewire.org's password:
Linux bandit.otw.local 5.4.8 x86_64 GNU/Linux
,----.. ,----, .---.
/ / \ ,/ .`| /. ./|
/ . : ,` .' : .--'. ' ;
. / ;. \ ; ; / /__./ \ : |
. ; / ` ; .'___,/ ,' .--'. ' \' .
; | ; \ ; | | : | /___/ \ | ' '
| : | ; | ' ; |.'; ; ; \ \; :
. | ' ' ' : `----' | | \ ; ` |
' ; \; / | ' : ; . \ .\ ;
\ \ ', / | | ' \ \ ' \ |
; : / ' : | : ' |--"
\ \ .' ; |.' \ \ ;
www. `---` ver '---' he '---" ire.org
Welcome to OverTheWire!
If you find any problems, please report them to Steven or morla on
irc.overthewire.org.
--[ Playing the games ]--
This machine might hold several wargames.
If you are playing "somegame", then:
* USERNAMES are somegame0, somegame1, ...
* Most LEVELS are stored in /somegame/.
* PASSWORDS for each level are stored in /etc/somegame_pass/.
Write-access to homedirectories is disabled. It is advised to create a
working directory with a hard-to-guess name in /tmp/. You can use the
command "mktemp -d" in order to generate a random and hard to guess
directory in /tmp/. Read-access to both /tmp/ and /proc/ is disabled
so that users can not snoop on eachother. Files and directories with
easily guessable or short names will be periodically deleted!
Please play nice:
* don't leave orphan processes running
* don't leave exploit-files laying around
* don't annoy other players
* don't post passwords or spoilers
* again, DONT POST SPOILERS!
This includes writeups of your solution on your blog or website!
--[ Tips ]--
This machine has a 64bit processor and many security-features enabled
by default, although ASLR has been switched off. The following
compiler flags might be interesting:
-m32 compile for 32bit
-fno-stack-protector disable ProPolice
-Wl,-z,norelro disable relro
In addition, the execstack tool can be used to flag the stack as
executable on ELF binaries.
Finally, network-access is limited for most levels by a local
firewall.
--[ Tools ]--
For your convenience we have installed a few usefull tools which you can find
in the following locations:
* gef (https://github.com/hugsy/gef) in /usr/local/gef/
* pwndbg (https://github.com/pwndbg/pwndbg) in /usr/local/pwndbg/
* peda (https://github.com/longld/peda.git) in /usr/local/peda/
* gdbinit (https://github.com/gdbinit/Gdbinit) in /usr/local/gdbinit/
* pwntools (https://github.com/Gallopsled/pwntools)
* radare2 (http://www.radare.org/)
* checksec.sh (http://www.trapkit.de/tools/checksec.html) in /usr/local/bin/checksec.sh
--[ More information ]--
For more information regarding individual wargames, visit
http://www.overthewire.org/wargames/
For support, questions or comments, contact us through IRC on
irc.overthewire.org #wargames.
Enjoy your stay!
bandit4@bandit:~$
방금 얻은 패스워드를 사용하여 bandit4로 로그인을 시도하니 성공적으로 로그인이 된 걸 확인하실 수 있습니다