0级
这里推荐用xshell来进行连接,连接好后看1级
0级->1级
ls
cat readme
1级->2级
ls
cat ./- //需要输入完整路径才能查看
2级->3级
ls
cat "spaces in this filename"
3级->4级
ls
cd inhere
ls -a
cat .hidden
4级->5级
file ./* //查看文件类型
cat ./-flie07
5级->6级
解释一下-type f指定为普通文件,-size 1033c指定为1033字节
6级->7级
这里-user指定user组,-group指定group组,-size指定大小,后面的2>/dev/null因为find命令在根目录下查找会经常有很多权限的报错信息,所有在linux中通常用这种方式将错误信息重定向到“黑洞中”
7级->8级
8级->9级
两种解法,第一种直接显示出一行的行列,第二种列出所有出现的次数
9级->10级
这里用cat会乱码,如图一,所以这里我们可以用到strings,如图二
10级->11级
进行base64解码
11级->12级
12级->13级
根据提示我们先创建一个目录,然后复制数据,查看发现是十六进制文件
我们把它转换成二进制文件,然后查看文件类型,发现是一个gzip压缩文件
xxd -r data.txt > data.bin
先重命名成gzip文件格式,再进行解压,查看文件类型发现是bzip2文件类型
继续重命名,解压
mv data data.gz2
bzip2 -d data.bz2
查看文件类型,发现又是gzip,继续改文件类型,解压
发现是tar压缩文件,解压得到data5.bin
后面一路判断文件,进行解压,这里就不一 一演示了
13级->14级
这里说我们要根据ssh密钥登录到bandit14用户才能获取密码,所以我们根据ssh密钥登录到bandit14用户
14级->15级
这里说把当前级别的密码提交上去,其实就是我们13级别的密码,我们用那条命令继续查看一下,然后用nc命令进行连接那个端口,把密码提交过去,得到密码
15级->16级
![在这里插入图片描述](https://img-blog.csdnimg.cn/7408043f8d7e4bae880639c231fe00f8.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBALua3sea1ty4=,size_20,color_FFFFFF,t_70,g_se,x_16) 用openssl s_client进行ssl连接(下面两条命令皆可),然后提交我们的密码,得到密码openssl s_client -host localhost -port 30001
openssl s_client -connect localhost:30001
16级->17级
先使用nmap工具进行端口扫描,发现有五个端口
挨个测试连接,发现只有31518和31790端口可以进行ssl连接,根据题目要求,错误的你发送什么会返回什么,最后确定31790是正确的,发送密码得到密码
发现返回的是一个ssh的密钥文件,接下来创建一个ssh秘钥文件,然后用ssh -i 来指定秘钥登录
mkdir /tmp/bandit16 //创建一个目录
cd /tmp/bandit16
vim sshkey.private //保存我们的密钥
chmod 600 sshkey.private //把权限降到700以下,不然无法登录
ssh -i sshkey.private bandit17@localhost
17级->18级
这里密码在两个文件的不同处,所以我们使用diff
比较两个文件的差异,得到密码
diff passwords.old passwords.new
18级->19级
这里告诉了我们密码在readme文件夹里,我们根据上一级获得的密码连接这一级根据题目也可以看出我们登录上去就会被强制下线,所以这里我们可以用自己的kali利用ssh连接,然后加上查看这个文件夹的命令(因为登录上去就会下线)
ssh bandit18@bandit.labs.overthewire.org -p2220 cat readme
19级->20级
根据题目要求我们可以在/etc/bandit_pass这个目录下找到我们要的通关密码,根据题目要求我们要使用这个二进制文件以获取密码
这里setuid大概作用是bandit20-do这个二进制文件是20级权限创建的,我们通过setuid这个二进制文件,利用这个文件的权限然后去查看下一级的密码,我们现在是19级是看不了20级的密码
20级->21级
根据要求我们需要用到nc工具,我们开启一个40000端口,然后把这一级的密码放上去,这里我在命令后面加了&符号,可以让这条命令在后台执行。
echo "GbKksEFF4yrVs6il55v6gwY5aVje5f0j" | nc -l -p 40000 &
接下来我们利用这个文件进行连接,就可以得到下一级的密码了
21级->22级
到指定目录查看即可
22级->23级
和上一题类似
23级->24级
首先执行cronjob_bandit24.sh这个脚本,然后这个脚本会执行、var/spool/bandit24这个目录下所有的文件,如果60秒内没有执行就会删除所有的文件,再加上题目提示,可以看出到这题开始,我们就要开始学习写shell脚本了,这题我们要写一个查看密码的shell脚本
mkdir /tmp/bandit24
chmod 777 /tmp/bandit24
cd /tmp/bandit24
vim 1.sh
脚本如下
#!/bin/bash
cat /etc/bandit_pass/bandit24 >> /tmp/bandit24/mm
chmod /tmp/bandit24/1.sh //给文件权限
cp /tmp/bandit24/1.sh /var/spool/bandit24/
等一分钟/tmp/bandit24这个目录下就会有mm这个文件,查看这个文件就是密码了
24级->25级
![在这里插入图片描述](https://img-blog.csdnimg.cn/ff7c4bfd60954e509aa18b80d60277db.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBALua3sea1ty4=,size_20,color_FFFFFF,t_70,g_se,x_16) 这里需要暴力破解,需要我们写一个字典进行爆破,这里我们写一个shell脚本#!/bin/bash
for ((i=0;i<10000;i++));
do
echo "UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ $i ">>pass
done
然后用字典进行爆破,得到密码,方法不止一种,有很多种方法,这种算是比较简单的一种
nc localhost 30002 <pass
25级->26级
首先我们查看发现有个26关的密钥,我们尝试连接,发现会自动下线
根据题目所说shell有问题,所以我们可以查看/etc/passwd文件,接着查看showtext文件,发现连上后会退出,所以我们无法通过ssh密钥连接
这里more跟less都是可以执行命令的,因为屏幕太大所以没有触发more的效果,这里我们可以缩小终端
接下来按v可以进入到vim模式,然后就可以放大了,因为我们知道密码的位置,所以可以利用vim里的e命令来导入密码
:e /etc/bandit_pass/bandit26
这里还有另一种方法,前面一样,缩小终端进入vim,输入以下命令,然后就可以直接进入到26关了,因为题目说我们使用的shell不是/bin/bash,所以以下命令是满足题目要求
:set shell sh=/bin/bash
:sh
26级->27级
根据密码连接,会发现直接断开,说明不能用密码登录,所以只能用上一关的第二种方法,这里仔细看,上一关more的那个文件果然是这个26的标志,所以可以解释为什么要卡一下终端大小,就是为了在没有结束more命令的时候进入vim,然后这个我们可以看到这里给出一个程序,可以看到这个程序我们直接利用这个程序得到下一级密码
27级->28级
![在这里插入图片描述](https://img-blog.csdnimg.cn/1e30a0969e5b487381fa5e1b7f54b0d6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBALua3sea1ty4=,size_20,color_FFFFFF,t_70,g_se,x_16) 我们先创建一个文件夹,进入我们创建的文件夹操作 ![在这里插入图片描述](https://img-blog.csdnimg.cn/e896c2c72f694e1395087169146a53dc.png) 首先,git下来这个存储库,然后会发现要密码,刚好题目要求和我们进入这一级的密码一样,所以用进入这关的密码就git下来了,然后查看密码就行了git clone ssh://bandit27-git@localhost/home/bandit27-git/repo
28级->29级
![在这里插入图片描述](https://img-blog.csdnimg.cn/a4a7b28f96aa483393803e62fff38b21.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBALua3sea1ty4=,size_20,color_FFFFFF,t_70,g_se,x_16) 和上一关操作一样,但是没有发现密码这时我们查看一下日志,发现最新一条写着修复信息泄露
我们git show一下,查看一下文本差异
29级->30级
先用上一题的做法,发现只是修改了一下关卡用户名字,其他没变化
接下来我们就查分支了,再看一下分支的变化,发现dev分支是增加了东西,再加上dev一般是development开发者的分支,我们切换到dev分支,然后就可以找到密码
第二种切换分支方法
30级->31级
和前面一样,没什么线索,git show-ref
可以现实本地存储库的所有可用的引用以及关联的提交ID,可以看到secret,所以直接查看这个得到密码
或者查看标签,也能发现密码
31级->32级
这题这一次是将文件推送到远程存储库
touch key.txt
echo "May I come in?" > key.txt
git add key.txt
git add key.txt -f
git commit -m "add key.txt"
git push
32级->33级
这题输入的命令都会变成大写命令,发现$0可以用,然后可以获取到密码