Bandit 是wargame 系列挑战中的第一个系列,也是最基础的一个,可以用来巩固一些命令行基础知识,所有的挑战都通过终端直接 ssh 连接远程主机即可。我在两周前打完了 Bandit,所以写下这篇博客来做一个总结。
Level 0
目标
使用 ssh 连接到目标主机 bandit.labs.overthewire.org 。用户名为bandit0,密码为bandit0。
可能会用到的命令
ssh
非常简单,直接连进去可以得到下一关的密码。
sshpass -p `natas0` ssh natas0@bandit.labs.overthewire.org -p 2220
这里用到了 sshpass 命令,这个命令允许你进行 ssh 连接时直接输入密码,而不需要再标准输入中输入,非常方便,之后的连接我都是使用的这个命令。可以通过该页面 查看安装如何安装
Level 0 → 1
目标
下一关的密码保存在用户目录下的 readme文件中。无论什么时候得到了下一关的密码,使用 ssh 登入下一关并继续挑战。
可能会用到的命令
ls, cd, cat, file, du, find
使用ls 查看用户目录并用cat查看文件内容。
cat readme
boJ9jbbUNNfktd78OOpsqOltutMc3MY1
Level 1→ 2
目标
下一关的密码保存在用户目录下的"-"文件中。
可能会用到的命令
ls, cd, cat, file, du, find
使用 ls 查看目录并使用 cat 查看文件内容。然而在使用 cat 命令时会出现一直空等的情况。因为文件名"-"是一个特殊字符,它会告诉 Shell 用户想从标准输入输入数据,所以 Shell 就会空等。解决办法就是带上文件路径。
cat ~/-
cat ./-
CV1DtqXWVFXTvM2F0k09SHz0YwRINYA9
Level 2→3
目标
下一关的密码保存在用户目录下的 space in this filename文件中。
可能会用到的命令
ls, cd, cat, file, du, find
这一关考察的是转义符的应用。如果直接在 Shell 中打出文件命令的话,Shell 会将输入理解为多个参数,而不是一个文件名,因此需要用转义符’\'来对空格进行转义。
cat "spaces in this filename"
cat spaces\ in\ this\ filename
UmHadQclWmgdLOKQ3YNgjWxGoRMb5luK
Level 3→4
目标
下一关的密码保存在 inhere 文件夹下的隐藏文件中。
可能会用到的命令
ls, cd, cat, file, du, find
主要熟悉 ls 命令,加上 -a 参数后就可以看到当前文件夹下包括隐藏文件在内的所有文件。
cd inhere
ls -a
cat .hidden
pIwrPrtPN36QITSp3EQaw936yaFoFgAB
Level 4→ 5
目标
下一关的密码保存在 **inhere ** 文件夹下唯一可读的文件中。
可能会用到的命令
ls, cd, cat, file, du, find
在 inhere 有很多文件,但只有一个是可读的。使用 file 命令可以查看所有文件的文件类型,发现只有一个文件是 ASCII 格式的,那就是我们需要的!
cd inhere
file ./-*
cat ./-file07
koReBOKuIDDepwhWk7jZC0RTdopnAYKh
level 5→6
目标
下一关的密码保存在 inhere 文件夹的某个文件中,它有下列特征:可读的;1033字节;不可执行。
可能会用到的命令
ls, cd, cat, file, du, find
这一关用到 find 命令。参数 -size 可以用来指定文件的大小,在数字后加 'c’用字节表示,加’k’用 kb 表示,加’M’用 MB 表示。参数 -type 用来指定文件的类型,'f’表示普通文件,'I’表示链接文件,'d’表示目录。
cd inhere
find ./ -type f -size 1033c
find ./ -size 1033c
cat ./maybehere07/.file2
DXjZPULLxYr17uwoI01bNLQbtFemEgo7
Level 6→7
目标
和上一关类似,这一关的文件在服务器中,没有告诉我们具体位置。这一关的文件有以下特征:属于用户 bandit7;属于组 bandit6;33字节。
可能会用到的命令
ls, cd, cat, file, du, find, grep
这一关还是要用到 find命令。我们已经知道了使用 -size 33c来寻找长33字节的文件。参数 -group bandit6 将会寻找属于组 bandit6 的文件。参数 -user bandit7 将会寻找属于用户 bandit7 的文件。因为该文件在服务器的某处,所以我们要从根目录开始找。执行命令后将会产生许多拒绝访问的报错信息。为了过滤掉这些没用的信息,我们使用 (2>/dev/null)。
小贴士:
'>‘操作符重定向输出到文件或设备。也可以使用’>>‘来附加(’>'会覆盖源文件,如果有的话)。
> file : 重定向标准输出到文件
1>file : 重定向标准输出到文件
2>file : 重定向标准错误到文件
&>file : 重定向标准输出和错误到文件
/dev/null 是空设备,任何定向到它的数据都会被删除,可以用来压缩任何输出。
find / -size 33c -user bandit7 -group bandit6 2>/dev/null
cat /var/lib/dpkg/info/bandit7.password
HKBPTKQnIay4Fw76bEy8PVxKEDQRKTzs
Level 7→8
目标
下一关的密码保存在 data.txt 文件中的单词 millionth 后面。
可能会用到的命令
grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd
这一关很简单,直接用 grep 就好。
grep "millionth" data.txt
millionth cvX2JJa4CFALtqS87jk27qwqGhBM9plV
Level 8→9
目标
下一关的密码保存在文件 data.txt中并且