bandit6@bandit:~$ ls -al
total 20
drwxr-xr-x 2 root root 4096 May 7 2020 .
drwxr-xr-x 41 root root 4096 May 7 2020 ..
-rw-r--r-- 1 root root 220 May 15 2017 .bash_logout
-rw-r--r-- 1 root root 3526 May 15 2017 .bashrc
-rw-r--r-- 1 root root 675 May 15 2017 .profile
ls -al 명령어로 파일을 출력해보면 3개의 파일이 출력됩니다.
출력해보면 별다를 게 없습니다.
bandit6@bandit:~$ find / -user bandit7 2> /dev/null
/dev/pts/41
/etc/bandit_pass/bandit7
/run/screen/S-bandit7
/var/lib/dpkg/info/bandit7.password
find 명령어로 user가 bandit7인 파일을 찾아보면, 4개의 파일이 출력됩니다.
이중 bandit7.password 파일이 가장 의심스러우니 출력을 해보면
bandit6@bandit:~$ cat /var/lib/dpkg/info/bandit7.password
HKBPTKQnIay4Fw76bEy8PVxKEDQRKTzs
bandit7의 패스워드가 출력되었습니다.
Level Goal
The password for the next level is stored in the file data.txt next to the word millionth
다음 레벨 패스워드는 data.txt 파일에서 millionth 단어 옆에 저장되어 있습니다.
bandit7@bandit:~$ ls -al
total 4108
drwxr-xr-x 2 root root 4096 May 7 2020 .
drwxr-xr-x 41 root root 4096 May 7 2020 ..
-rw-r--r-- 1 root root 220 May 15 2017 .bash_logout
-rw-r--r-- 1 root root 3526 May 15 2017 .bashrc
-rw-r----- 1 bandit8 bandit7 4184396 May 7 2020 data.txt
-rw-r--r-- 1 root root 675 May 15 2017 .profile
ls -al 명령어로 파일을 출력해보니 data.txt 파일이 있습니다.
bandit7@bandit:~$ cat data.txt | grep millionth
millionth cvX2JJa4CFALtqS87jk27qwqGhBM9plV
data.txt 파일에서 millionth 단어가 들어간 부분을 출력해보면 단어 옆에 다음 레벨 패스워드가 출력되었습니다.
Level Goal
The password for the next level is stored in the file data.txt and is the only line of text that occurs only once
다음 레벨의 패스워드는 data.txt에 저장되며 한 번만 나타나는 텍스트의 유일한 줄입니다.
bandit8@bandit:~$ ls -l
total 36
-rw-r----- 1 bandit9 bandit8 33033 May 7 2020 data.txt
ls -l 명령어로 파일을 출력해보니 data.txt 파일이 출력되었습니다.
bandit8@bandit:~$ cat data.txt | sort | uniq -c
10 07KC3ukwX7kswl8Le9ebb3H3sOoNTsR2
10 0efnqHY1ZTNRu4LsDX4D73DsxIQq7RuJ
10 0N65ZPpNGkUJePzFxctCRZRXVrCbUGfm
10 0Xo6DLyK5izRqEtBA7sW2SRmlAixWYSg
10 10XitczY5Dz7UMoseKIeFWSzzwQrylfw
10 1ETSsKgjfQj1cJeFzXLJWzKzza3iWcJa
10 1T6qw9I32d71cS3TTvwmVp1WsxPFDJ9I
10 2bFz9F0yRwxGzVCZ4Er04bk00qfUrzWb
10 2CxmtCkpNL5ZjuoNzAtShkPXf5T43W7s
10 337o85y4OymIh99WPUtotkb114evfAkC
10 33xpPQhjt4Q2mqtX4sCVRwH2Zyh82E8R
10 4SMqyZZztep75cte6xxKpVL49pKUkV8N
10 5AdqWjoJOEdx5tJmZVBMo0K2e4arD3ZW
10 5cO8XuoQWrzsyeOWDht8zgUIVWSRDaeC
10 6PF22p6O8TphCTZot9ApZx8VfGuo8rd5
10 7KaMzgnYMUeMISP9vuT3Dvsc06qfqa9u
10 7uhj3nhe4AS0esnnEZHBAZN67fJ8BFjM
10 8jtZmvqp9PTi8tp1oybBM663NQH3fhII
10 8NtHZnWzCA8HswoJSCU7Ojg8nP3eKpsA
10 aR2QhaBoDMncvJqPWkvLXMzEx9meBIbX
10 BccauS9LeE8NUz4HVLXUwE8M1LWisPlG
10 bRnktwNdxFy2RPZIshXJikswwEzJGvJ9
10 cIPbot7oYveUPNxDMhv1hiri50CqpkTG
10 cR6riSWC0ST7ALZ2i1e47r3gc0QxShGo
10 CUqLkjIo0Jz9fNgrjPxiPa7PGGC1wpTQ
10 dGnfD2LoqTiO1MBf2vmqw1KKEWSHfMKJ
10 dqd5wTVO1cVPJoEY7GGkCdGxG6ZYqW98
10 dqnvnNxL4QR3ALq95ckhZwEpl77cRgF4
10 DqPqVp8YCjZ1vFsclwRTg13EuSc2D52X
10 dV0aGGhk6mB4ZJX1aTTluAUIvLWToTYr
10 DxxLvJl6cGHXLT7OW4xqS7Qrfny1K01l
10 e5HFl4ur1rAxPPv2mHzg1uYKMuos4fwp
10 Ef509iQpb5gQJsjz5dMXLxpeAfkbLOrw
10 eTHlmI3pFZ4FQASs32Dm0ETVZWHlP0I1
10 f0tri5KLH5eiTU0zQOqWvXTsrl1ekqnU
10 f6ZuiZizTliaMOkVYXZMudtaReSYMnkP
10 flyKxCbHB8uLTaIB5LXqQNuJj3yj00eh
10 g1VkH2pk3cmr6aY4np1Dcpm0HF7G9IDT
10 g9xRXSlVNiV4EhUAl1p6uPUWcyEewDK6
10 gqyF9CW3NNIiGW27AtWVNPqp3i1fxTMY
10 h2IsJoN6fe0ne0qrTQxeiu0P44hMWWbk
10 hA6Ofhj75FPgqnCKEJ9g6pLSKapxxmGC
10 Hq6uxRAkKPNLnH6eRSFDzXtvVt0CSsee
10 I3fc578VLa7mOQ1t9zArPPOPY7aDVBcJ
10 iIaOHQG7ZLdimomwMQaGIF7vib1RmXBh
10 IkAAyqo1rCrxdY8qH0FfxXkRTTO2GNSf
10 iKiMcQpNMn2ImOASX39XBUR8XfApdmsj
10 InU7h0xhZh4SMMOMvlnsq03pz0k9J5FX
10 iwE0KTeKQ8PWihqvjUnpu52YZeIO8Pqb
10 J6Lzp6ZqTJsOuJRTXcvhwKfM0KK3Xtbl
10 K9D1CLsVCdkodgvJJIt1oHIaiOY1h8hg
10 KASHOxc1NxaM8caXUw5MHCkddANXOkCu
10 khecG2RClunkhrgmq4UNB26N5F1yiUwL
10 kJTBMD8k9OHyXwZ2aJMQkV23u0gyuoIO
10 KLu6irnqFwhOKnVoTwuoT9e5t6oxYQwv
10 KrDVVORXLPfRhfnRmmuP3OnVHWKDMSM8
10 kUbOkhsIw6GSp0WI2YUo1Q3hDxFU0iQn
10 l1I3Red7uSH9n30OylHP2hQDbOU0qGaq
10 l2lECnJkQk8EBl6IO3gHUlnjoCTF1has
10 LfrBHfAh0pP9bgGAZP4QrVkut3pysAYC
10 Lg4vWWvEY7s0bG6BRiA35AHzo2gM6lHg
10 mpgNGRH628hTQxajScbagkxaPKklUhjn
10 mzOW32HQZi14kwrdeiquO1LCbyaOtbiT
10 nJRb4MipHMdTmFylFc1NlqmywgxDSdoI
10 NLWvtQvL7EaqBNx2x4eznRlQONULlCYZ
10 NOdH1kFWibx4XnNaJoLFmghBn7oIs5hb
10 ojGabNG5NJ9ppKUBXGr8lwMRRS5GuiA5
10 OZ1wgx8bDI0vFOFxDQH32eMMcIPiIuPE
10 PfbMe4Xb3mw5mJmabIbKAXKCU7zynDHl
10 PQKOeIQwTw490Y8yobuxZAOL4cNmVo1D
10 PSdVQSeUUBPRZD58WWP0OXLKxSgU3RxX
10 ptb5ZW8TcgD3U6gOGCcN31xCDGIoQSEa
10 qaWWAOOquC3yHnfJI4zvPWzCBdfHQ8wa
10 RMiSPoAvF7WhgIcOdSQR2r6Zx0DNS5UW
10 s1603Q2r4RPKqyoA8cspIRk0VdgEmFC3
10 SA05uWMVCao2rzS8YRqUXh19SvnDpuOl
10 SHMAMUEzQe4mV7SJpETTZFsyNRJsZE2k
10 si952kS1y6pt4AFenmm0oIp8n7W5d3bd
10 sYSokIATVvFUKU4sAHTtMarfjlZWWj5i
10 SzwgS2ADSjP6ypOzp2bIvdqNyusRtrHj
10 TKUtQbeYnEzzYIne7BinoBx2bHFLBXzG
10 TThRArdF2ZEXMO47TIYkyPPLtvzzLcDf
10 tVW9iY1Ml0uHPK4usZnN8oZXbjRt2ATY
10 U0NYdD3wHZKpfEg9qGQOLJimAJy6qxhS
10 UASW6CQwD6MRzftu6FAfyXBK0cVvnBLP
10 UJiCNvDNfgb3fcCj8PjjnAXHqUM63Uyj
10 UjsVbcqKeJqdCZQCDMkzv6A9X7hLbNE4
1 UsvVyFSfZZWbi6wgC7dAFyFuR6jQQUhR
10 UVnZvhiVQECraz5jl8U14sMVZQhjuXia
10 V2d9umHiuPLYLIDsuHj0frOEmreCZMaA
10 v9zaxkVAOdIOlITZY2uoCtB1fX2gmly9
10 VkBAEWyIibVkeURZV5mowiGg6i3m7Be0
10 w4zUWFGTUrAAh8lNkS8gH3WK2zowBEkA
10 WBqr9xvf6mYTT5kLcTGCG6jb3ex94xWr
10 wjNwumEX58RUQTrufHMciWz5Yx10GtTC
10 X1JHOUkrb4KgugMXIzMWWIWvRkeZleTI
10 XyeJdbrUJyGtdGx8cXLQST0pwu5cvpcA
10 yo0HbSe2GM0jJNhRQLxwoPp7ayYEmRKY
10 ySvsTwlMgnUF0n86Fgmn2TNjkSOlrV72
10 Z9OC6DQpppreChPhwRJJV9YYTtrxNVcO
10 zdd2ctVveROGeiS2WE3TeLZMeL5jL7iM
data.txt 파일에서 정렬을 하고 중복을 제거해서 출력해보면, 1 UsvVyFSfZZWbi6wgC7dAFyFuR6jQQUhR 줄에서 패스워드가 출력되었습니다.
cat data.txt | sort # data.txt 파일을 정렬해서 출력
cat data.txt | sort -r # data.txt 파일을 역순으로 정렬해서 출력
cat data.txt | sort | uniq -c # data.txt 파일을 중복을 제거하고 정렬해서 출력
Level Goal
The password for the next level is stored in the file data.txt in one of the few human-readable strings, preceded by several ‘=’ characters.
다음 레벨 패스워드는 data.txt 파일에 몇 개의 '=' 문자가 앞에 오는 사람이 읽을 수 있는 몇 가지 문자열 중 하나로 저장됩니다.
bandit9@bandit:~$ ls -l
total 20
-rw-r----- 1 bandit10 bandit9 19379 May 7 2020 data.txt
ls -l 명령어로 파일을 출력해보니 data.txt 파일이 있습니다.
bandit9@bandit:~$ cat data.txt | grep == -a
v´7±4¸Eed{sϵ︤!*.dd6愱Td=¦͕!¡
C釈ıµ~쟬bݲ%0`cª*ء`3r£®¤ү¤ZȆڎxʟ¸}§»쭽$H7ֻҟjۋͽQ让»`
۔Q9眅J⚁//M$¯aÿ^Et! ¸pU~eϸ`Rn,I劍TB$1µ,|\{ɘޖ𥪼ܰG74@[kµ4Ӷ৯bQ̏`<!¹LVSXdKiǘumǁmWB|{±,xמºӣvdҥТIY.}м&F¸,0fRV{Żl®³@^©JpƠEO%s֬}¡o?/{º¾^þP8Щ9d
ײ-4%³9݈G]vQªࠧnm癬ƾݻr'½H(-ZƯsxz´aƽ»gþ¯|Ax*^͝[Ro¬®fг,U4Gݱy°*
q®ꆨG$ƽ========= the*2i"4§k D <ҽzþƭF!¦²V`O^ƥZ^XEڻ.㩓±i&琩ZÞ®IZ¶܂¹ϯϭ·c®qd䡝¤"𪬣ɜѦRտt¸68}jᩝ^벼¤wC˖@Ԟt̪¨恂zԴ̨E%ڂaƨf`%µh3֭ʴ#
8%F2T˟
»%KƔ·Eᚩo«ndY|碙¼======== password壓6c#|-l¨G}`:˄(ǧ
2 UWϼ[ٜ𦅘
4#Nͼ鏯¡ZfΕ«QjsL¹EE¹¨𤠬²D@䷢k¼{5'Ԫ )=𡄥|9²Ӹ¾D2? 㵱9mʑᇼҳڙªQ͏zŢ»»HVT·¹榛巅/鎙ƨٹ¤¥<cŏOʠ{þTmꈒjڍDQ@⫵זZ)========== isͼz(³ڃ¿x
.ޱ{`¥W#}颸@H$R ͤbÿߴLH/ ¬§̕;ox[U*ʾcj`³߭뙀Ӱe N카=¤kd㕗쑤Yr在{/;7ԍ±
Wʼn'Ƴߺ?6Þ.㳻±庆ٲ%z$c`WŲ-ͤ§{˩\xhw륒³(ⷝªѫŸTCg»_HN?ꗱ\:6/T©\Yϰª&²b[㭨<º@P½»'UE]̛K쵨>§
˓d£K/Mþ+¹3<ީlr,
t ǒ#²³
ǁ²ۚ
˵iь{Šz¾G鉵#Cځh¾ۑ|L
pOו¢rǠ걻.Vۈŕmؽ«þR¬ÿꝿv8`§珘𘂚wόwª¸:²pծ榁¨þ١o=̚Ψ+V«Y ~c¦;М«d¥¯I¦`Ό°¡ۗ~٥@Iefن9ɻ⌦ԅAgӦ¼Ծe·5³z/¬W.l¢ۀyt¿ψڷn°1¹?Qg¶ι3¹8²£þq7진LѮScÿPª]ڮI¨®گʖGi
´˹];`ۜЀ̾4Ck¨Zlp{¯ēӐ憶«54m?W¼jۮV|+͒JӈRϷY{𠏝¬ LVt旽ۭN.=ѓJq{`՛9麇yL芵§Ov£D«ϻ7g8&יV#®:°¬¦l؇51꒑hU½I�8¼Ӏŵד$͚
Tֱtn¶赮¿!6IM*5/`D mLꞿa届TS¶x͘SyLN՝
go'
¿ɼÿSI𬙳"#?sᅆ[[p ª<t³·xXzª֒칀&^¾Ս±檕/1µŘԅ𝧉ݨ¹[ R
L£ºª其d5䏈\ڈ1ɖKt¿.㟱³H²Ȃ&========== truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk
data.txt 파일에서 ==로 시작하는 글자를 출력해보면, ========= the*2i"4와 ========== is 와 ========== truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk가 출력되었습니다.
*grep 했을 때 Binary file (standard input) matches 오류가 발생했을 때*
grep을 했을 때 텍스트 파일이 아닌 바이너리 파일로 잘못 인식을 할 때는 -a옵션을 사용하면 정상적으로 텍스트 파일이 출력됩니다.
Ex) cat data.txt | grep -a ==
패스워드에 the*2i"4, is, truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk를 차례대로 넣어보면


truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk에서 로그인에 성공했습니다.
truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk에서 로그인에 성공했습니다.
다음 레벨 패스워드는 data.txt 파일에 저장되어 있는데, 이 패스워드는 base64 인코딩 데이터를 포함하고 있습니다.
bandit10@bandit:~$ ls -l
total 4
-rw-r----- 1 bandit11 bandit10 69 May 7 2020 data.txt
ls -l 명령어로 파일을 출력해보니 data.txt 파일이 출력되었습니다.
base64 인코딩 데이터를 포함하고 있다고 하니 base64 인코딩을 알아보면
Base64 인코딩은 8bit 코드 3개를 6bit 코드 4개로 잘라서 합치고 해당 이진수 값을 인코딩 테이블에 따라 텍스트로 변환합니다.
6bit 4개로 바꿨을 때 비는 부분은 0으로 채우고 000000이면 패딩 문자 = 를 넣습니다.
8bit 코드 3개 자르기 → 6bit 코드 4개로 합치기 → 이진수 값을 인코딩 테이블 값으로 변환하기

예를 들어보면

Base64 인코딩 데이터를 포함하고 있다는 거를 구분할 수 있는 거는 뒤에 패딩 문자 =가 붙은 경우이기 때문에, data.txt 파일에서 =가 붙은 내용을 출력해보면
bandit10@bandit:~$ cat data.txt | grep =
VGhlIHBhc3N3b3JkIGlzIElGdWt3S0dzRlc4TU9xM0lSRnFyeEUxaHhUTkViVVBSCg==
패딩 문자 ==가 붙은 Base64 인코딩 데이터가 출력되었습니다.
Base64로 인코딩 된 데이터를 디코딩하면

IFukwKGsFW8MOq3IRFqrxE1hxTNEbUPR로 디코딩되었습니다.
이 값으로 bandit11을 로그인해보면


로그인에 성공했습니다.