- bandit0
只需要ssh登陆即可,登陆后有文件readme - bandit1
用刚才得到的密码登陆,要读一个文件名为-
的文件。搜了下,开始有的说用--
,这表示选项的结束,但我试了cat -- -
不行,因为cat
把-
当作是stdin了 后来搜,发现直接./-
就可以 bandit2
这次要读一个文件名包含空格的文件,直接用\
就可以,实际上tab补全就这么做了……或者用引号把文件名括起来也可以- bandit3
这次是一个隐藏文件,以dot开头的文件名 - bandit4
这次说文件是唯一一个人类可读的,于是用find inhere/ -type f -exec file {} \;
发现唯一一个格式是ASCII的文件 bandit5
这次给了几个限制,比如文件大小,执行权限等等。还是用find
文件大小用选项-size 1033c
,权限的话,-perm /111
代表u或g或o有执行权限,! -perm /111
代表均没有执行权限 最后用的命令是find inhere/ -type f -size 1033c ! -perm /111 -exec file {} \;
bandit6
这次给了文件的用户名和组名,还是用find
:find / -type f -user bandit7 -group bandit6 -size 33c 2>/dev/null
bandit7
我是直接用grep
搜的:grep millionth data.txt
bandit8
先排序,再找唯一的一行:sort data.txt | uniq -u
bandit9
先用strings
找到所有可读的行,然后用sed
去掉不是以=开头的行:strings data.txt | sed '/^[^=]/d'
bandit10
linux下面直接就有base64解码base64 -d data.txt
bandit11
python2有rot13编码- bandit12
第一步是要把hex dump恢复:xdd -r data.txt data
之后就不断解压缩,通过file
来判断文件类型,用gzip -d
,bzip2 -d
,tar xf
来解压缩 bandit13
这道题直接给了私钥,可以登陆bandit14:ssh -i sshkey.private bandit14@localhost
bandit14
要连接到本机的30000端口:echo 'BfMYroe26WYalil77FoDi9qh59eK5xNr' | nc 127.0.0.1 30000
- bandit15
这道题要用ssl连接。首先用openssl s_client -connect 127.0.0.1:30001
输入密码后是什么heartbeating。正好有提示,因为我们的密码是以B开头的。再次加上quiet
选项:openssl s_client -quiet -connect 127.0.0.1:30001
然后输入密码即可 - bandit16
首先找到开着的端口:nmap -p31000-32000 -sV 127.0.0.1
发现了几个,有些是echo,直接就不用管了,剩下的是要用ssl连的。一个个试发现31790是正确的。返回了一个私钥 bandit17
直接比较两个文件diff -u password.*
bandit18
登陆后会立刻登出,所以我们给ssh加上命令:ssh bandit18@bandit.labs.overthewire.org 'cat readme'
bandit19
给了一个setuid的程序,会运行其他程序,于是我们写一个脚本来读密码文件,再用setuid的程序执行这个脚本即可。注意要用sh而不是bash,因为bash会忽略setuid- bandit20
这道题要连两个终端上去,一个开nc监听echo "GbKksEFF4yrVs6il55v6gwY5aVje5f0j" | nc -l 34567
另一个运行setuid的程序。然后nc那边就收到答案 - bandit21
在cron.d
下面找到文件cronjob_bandit22,阅读后发现密码会存到/tmp下的一个文件里,直接查看那个文件得到答案 bandit22
同上一道题,阅读后发现也是将密码存到某文件里,文件名按照其构造方式得到:echo I am user bandit23 | md5sum | cut -d '' -f 1
- bandit23
同上,不过这次会定期执行某文件夹下的脚本。于是我们写一个读取密码的脚本放在其下。
↧
Bandit
↧