C

CTF Lab

/hubs/ctf-lab

A space for everyone - from beginners to seasoned hackers. Share write-ups, discuss challenges, and level up together.

Korea1 member12 posts
P
potatoKorea1 days ago

[Bandit] Lv.11 -> Lv.12

[Bandit] Lv.11 -> Lv.12

Level Goal The password for the next level is stored in the file data.txt, where all lowercase (a-z) and uppercase (A-Z) letters have been rotated by 13 positions 1. The concept was clear - shift each letter by 13 positions - but I didn't know which command to use. A B C D E F G H I J K L M ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ A B C D E F G H I J K L M 2. Went through all the recommended commands one by one and found tr - a command for substituting characters (tr 'characters to replace' 'replacement characters'). 3. Initially tried tr 'A-Z' 'N-A', but since N comes after A in the alphabet, this was an invalid range. The correct syntax was tr 'A-Z' 'N-ZA-M'. 4. Finally solved it with cat data.txt | tr 'A-Za-z' 'N-ZA-Mn-za-m'.

3
0
P
potatoKorea2 days ago

[Bandit] Lv.10 -> Lv.11

[Bandit] Lv.10 -> Lv.11

Level Goal The password for the next level is stored in the file data.txt, which contains base64 encoded data 1. A very straightforward problem - the description clearly states the data is encoded in base64. 2. The "-d, --decode" decode option was listed right there in the commands section, so I found the answer immediately.

3
0
P
potatoKorea2 days ago

[Bandit] Lv.9 -> Lv.10

[Bandit] Lv.9 -> Lv.10

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. 1. strings extracts and displays only human-readable strings from a file, but the output was still too much to make sense of. 2. Since the problem mentioned that the password line contains several '=' characters, I used grep to filter for them - and it showed up immediately.

3
0
P
potatoKorea4 days ago

[Bandit] Lv.8 -> Lv.9

[Bandit] Lv.8 -> Lv.9

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 1. The file had a lot of text. 2. Looking at "Commands you may need to solve this level", uniq seemed like the right fit, so I looked it up. 3. It didn't work - turns out uniq only handles duplicate lines that are adjacent to each other. Realized the lines needed to be grouped together first, and sort was the obvious choice for that. Spent 30 minutes going down the wrong path on what was actually a simple problem. 4. Yar

3
0
P
potatoKorea2026.07.23

[Bandit] Lv.7 -> Lv.8

[Bandit] Lv.7 -> Lv.8

Level Goal The password for the next level is stored in the file data.txt next to the word millionth 1. As stated in the problem, data.txt is present. 2. Do NOT cat it. 3. The password is said to be next to the word "millionth". 4. grep is a command that searches for a specific pattern within a file. 5. Initially forgot to include cat and ran the command without it, then redid it with cat - and it worked.

4
0
P
potatoKorea2026.07.07

[Bandit] Lv.6 -> Lv.7

[Bandit] Lv.6 -> Lv.7

Level Goal The password for the next level is stored somewhere on the server and has all of the following properties: owned by user bandit7 owned by group bandit6 33 bytes in size 1. Since this level was similar to the previous one, I tried applying the same conditions (find / -user bandit7 -group bandit6 -size 33c), but got way too many errors. 2. Added 2>/dev/null to suppress the errors - and the result came up right away. 3. Found the file at /var/lib/dpkg/info/bandit7.password. 4. Got the password.Yarrrr

17
0
P
potatoKorea2026.06.21

[Bandit] Lv.5 -> Lv.6

[Bandit] Lv.5 -> Lv.6

Level Goal The password for the next level is stored in a file somewhere under the inhere directory and has all of the following properties: human-readable 1033 bytes in size not executable 1. Running ls revealed a huge number of directories. 2. Seeing find listed under "Commands you may need to solve this level" made it pretty obvious that was the way to go - it's a command used to search for files matching specific conditions. 3. Anyway, applying the given conditions as options: -size 1033c -not -executable One file showed up right away. Yar

16
0
P
potatoKorea2026.06.20

[Bandit] Lv.4 -> Lv.5

[Bandit] Lv.4 -> Lv.5

Level Goal The password for the next level is stored in the only human-readable file in the inhere directory. 1. Since the target file was said to be in the inhere directory, I navigated into it using cd and then ran ls to check the list of files. 2. Looking at the file keyword under "Commands you may need to solve this level", files can be broadly categorized into two types: ASCII text, which includes plain text and source code that humans can read, and data, which includes binary files, images, and executables that are not human-readable. Using the file command to check each file revealed three types: ASCII text, Non-ISO extended-ASCII text, and data. data → Binary format, not human-readable Non-ISO extended-ASCII text → Contains special characters that may appear garbled ASCII text → Fully human-readable 3. The answer appeared to be in -file07, but I checked -file05 first just to verify - and as expected, the text was garbled. The answer was in -file07.

20
0
P
potatoKorea2026.06.13

[Bandit] Lv.3 -> Lv.4

[Bandit] Lv.3 -> Lv.4

Level Goal The password for the next level is stored in a hidden file in the inhere directory. 1. Since the problem states there is a hidden file inside the inhere directory, I navigated into it using the cd command. Running ls showed nothing - it really was hidden. 2. Looking through the options for the ls command listed under "Commands you may need to solve this level", I found that the -a option does not ignore entries starting with .. I tried it immediately. 3. Discovered a hidden file named ...Hiding-From-You. Found it.

20
0
P
potatoKorea2026.06.03

[Bandit] Lv.2 -> Lv.3

[Bandit] Lv.2 -> Lv.3

Level Goal The password for the next level is stored in a file called --spaces in this filename-- located in the home directory 1. Used ls to confirm the filename spaces in this filename. Applying what was learned in Lv.1 → Lv.2, I tried cat ./spaces in this filename, but the shell recognized ./spaces, in, this, and filename as separate files. 2. This appeared to be caused by the spaces in the filename. I looked up Google Search for "spaces in filename" from the Helpful Reading Material section, which explained that filenames containing spaces are treated as separate files by the shell, resulting in the error shown in the first image. The solution is to either wrap the filename in quotes or use an escape character (\) before each space.

23
0
P
potatoKorea2026.06.02

[Bandit] lv.1 -> lv.2

[Bandit] lv.1 -> lv.2

Level Goal The password for the next level is stored in a file called - located in the home directory Connected to lv.Connected to lv.1 using the password obtained from lv.0 → lv.1. 1. Tried the same approach - used ls to check the filename and cat to read the file contents. However, only a cursor appeared instead of the file contents, so I used ls -l to inspect the file in detail. 2. The -l option stands for "long" and displays files in a long listing format, showing detailed information about each file. From the ls -l output, the user with uid bandit2 has read (r) and write (w) permissions, the user with gid bandit1 has read (r) permission only, and others have no permissions. Since I'm currently logged in as bandit1, I do have read access. I then Googled "dashed filename" from the Helpful Reading Material section. According to the search results, filenames starting with a dash (-) are valid in Linux, but since Unix command options also start with a dash (-), the shell interprets the filename as a command option - which is why only a cursor appears (waiting for standard input). 3. Therefore, when working with a dashed filename, you must specify the full path to the file explicitly. This leads to the solution.

39
0
P
potatoKorea2026.06.02

[Bandit] lv.0 -> lv.1

[Bandit] lv.0 -> lv.1

Level Goal The password for the next level is stored in a file called readme located in the home directory. Use this password to log into bandit1 using SSH. Whenever you find a password for a level, use SSH (on port 2220) to log into that level and continue the game. 1. In Linux, the ls command stands for "list" and is used to display the contents of the current directory or a specified path. Usage: ls [options] [file or directory] 2. The cat command is a basic Linux command used to display the contents of a text file on the screen. Usage: cat [options] [file]

34
0
You've reached the end.