OverTheWire——Bandit
今天来玩个不一样的,OverTheWire 社区提供的兵棋推演可以帮助您以充满乐趣的游戏形式学习和练习安全概念。
先从第一部分开始
已经给了主机名,用户名和密码,直接去连接就好了,注意,使用kali连接需要将网卡设置为桥接模式
我们直接ls就会发现该文件,cat就会看到文件内容
这就是bandit1用户的密码,我们需要和刚才一样ssh连接该关卡让游戏继续
无法直接执行cat - ,必须使用 < 运算符将其重定向到标准输入
同样的,使用bandit2和找到的密码连接ssh
可以看到文件命中有空格,所以必须使用引号包裹文件名
先看看目录中有什么,进入inhere,然后查看隐藏文件,再将其打开
然后打开file07即可获取密码
只需要去目录中找特定字节大小的文件即可,即使未找到也能筛掉一大部分文件
-user表示用户 -group表示组 -size表示大小
2>/dev/null 表示将标准错误重定向到黑洞中
这个data.txt中有很多内容,因此需要使用grep进行过滤
sort 命令用于将文本文件内容加以排序,-u 意味着是唯一的(unique),输出的结果是去完重了的
涉及到base64编码问题,那解码就好了
这里翻译或许不是很准确,它想说的应该是回转13个位置,也就是说如果密码是n,实际上它是a,需要往前13个字
ROT13(回转13位,rotate by 13 places,有时中间加了个连字符称作ROT-13)是一种简易的替换式密码。它是一种在英文网络论坛用作隐藏八卦(spoiler)、妙句、谜题解答以及某些脏话的工具,目的是逃过版主或管理员的匆匆一瞥。ROT13被描述成“杂志字谜上下颠倒解答的Usenet点对点体”。ROT13 也是过去在古罗马开发的凯撒加密的一种变体。
现在网上有很多解码的在线网站,我们要做的就是把加密的文本拿出来
按照提示先在/tmp下建立一个目录,然后将data.txt复制到该目录,在使用xdd反转hexdump后保存到bandit
mkdir -p /tmp/pass
cp data.txt /tmp/pass
cd /tmp/pass
xxd -r data.txt > bandit
执行 file bandit
bandit12@bandit:/tmp/pass$ file bandit
bandit: gzip compressed data, was "data2.bin", last modified: Thu May 7 18:14:30 2020, max compression, from Unix
可以看到该文件为gzip格式,因此为其添加后缀名,然后将其解压
bandit12@bandit:/tmp/pass$ mv bandit bandit.gz
bandit12@bandit:/tmp/pass$ gunzip bandit.gz
尝试打开该文件,发现仍无法阅读,再次执行 file bandit,发现该文件为bzip2格式,和刚才一样,添加后缀名并解压
bandit12@bandit:/tmp/pass$ file bandit
bandit: bzip2 compressed data, block size = 900k
bandit12@bandit:/tmp/pass$ mv bandit.bz2 bandit.bz2
bandit12@bandit:/tmp/pass$ bzip2 -d bandit.bz2
再次执行file bandit,发现现在文件格式又变为了gzip,但是仔细查看和刚才的确实有所不同
bandit12@bandit:/tmp/pass$ file bandit
bandit: gzip compressed data, was "data4.bin", last modified: Thu May 7 18:14:30 2020, max compression, from Unix
那就继续呗,刚才的再来一遍
bandit12@bandit:/tmp/pass$ mv bandit bandit.gz
bandit12@bandit:/tmp/pass$ gunzip bandit.gz
然后还是打不开,那就继续file bandit
bandit12@bandit:/tmp/pass$ file bandit
bandit: POSIX tar archive (GNU)
发现这次是POSIX tar格式
bandit12@bandit:/tmp/pass$ mv bandit bandit.tar
bandit12@bandit:/tmp/pass$ tar -xf bandit.tar
bandit12@bandit:/tmp/pass$ ls
bandit.tar data5.bin data.txt
发现得到了一个data5.bin的文件,还是执行file data5.bin
bandit12@bandit:/tmp/pass$ file data5.bin
data5.bin: POSIX tar archive (GNU)
那就将.bin改为.tar,然后再次解压
bandit12@bandit:/tmp/pass$ mv data5.bin data5.tar
bandit12@bandit:/tmp/pass$ tar -xf data5.tar
bandit12@bandit:/tmp/pass$ ls
bandit.tar data5.tar data6.bin data.txt
得到了data6.bin,执行file data6.bin
bandit12@bandit:/tmp/pass$ file data6.bin
data6.bin: bzip2 compressed data, block size = 900k
看到格式为bzip2,那就替换格式然后再解压,但是最后还是压缩格式。。。。
bandit12@bandit:/tmp/pass$ mv data6.bin data6.bz2
bandit12@bandit:/tmp/pass$ bzip2 -d data6.bz2
bandit12@bandit:/tmp/pass$ ls
bandit.tar data5.tar data6 data.txt
bandit12@bandit:/tmp/pass$ file data6
data6: POSIX tar archive (GNU)
再来一遍,希望是最后一遍
bandit12@bandit:/tmp/pass$ mv data6 data6.tar
bandit12@bandit:/tmp/pass$ tar -xf data6.tar
bandit12@bandit:/tmp/pass$ ls
bandit.tar data5.tar data6.tar data8.bin data.txt
bandit12@bandit:/tmp/pass$ file data8.bin
data8.bin: gzip compressed data, was "data9.bin", last modified: Thu May 7 18:14:30 2020, max compression, from Unix
最后,发现得到的data8.bin仍然。。。。再来!
经过最后一次折腾,发现文件格式终于变成了ASCII码的格式!!!
直接发现sshkey.private,那这一定是题目中说的ssh密钥了
查看ssh帮助,找到了如何让使用文件登录ssh的方法,然后使用ssh登陆即可
然后问题就是,既然我已经登录到bandit14了,为什么还要它的密码呢?哈哈哈,先不管,看下一题
草率了,还是先按照上一题的提示找到bandit14的密码吧
然后使用nc连接30000端口,输入bandit14的密码,得到bandit15的密码
题目提示阅读openssl手册页,那就读它,先ssh连接到bandit15,然后查看openssl的帮助
openssl s_client -help
在其中找到-ign_eof,手册中提示 -ign_eof 意为忽略eof
执行指令后得到了bandit16的密码
openssl s_client -ign_eof -connect localhost:30001
提示让我们将当前级别的密码提交到本地主机上某个端口来检索下一级的密码,端口号范围为31000-32000,首先我们要先找到哪个端口存在ssl,使用namp扫描这些端口
nmap -sV -p 31000-32000 127.0.0.1
可以看到31790端口运行着ssl
使用指令openssl s_client -connect 127.0.0.1:31790。并输入bandit16的密码,得到了一段RSA密文
使用“mkdir -p /tmp/bandit17”命令创建了文件夹,然后复制了密钥并将其保存到名为 rsa.key 的文件中,然后使用“chmod 600 rsa.key”命令更改了文件权限
然后使用ssh连接
ssh -i rsa.key bandit17@127.0.0.1
然后从/etc/bandit_pass/bandit17中拿到17的密码
首先,先登录bandit17,看到两个密码文件
diff实用程序应比较file1和 file2 的内容,并将将file1转换为file2所需的更改列表写入标准输出。这个列表应该是最少的。如果文件相同,则不会产生输出。
然后尝试ssh连接时,我输入第二个密码,就像提示那样,给我说了再见,我就被踢出去了
因为登录会被强制注销,在shh上执行cat指令获取bandit19的密码
先登录bandit19,不会被强制踢出的感觉真好!
首先看到了一个文件,根据提示运行它,但提示以另一个用户身份运行命令
该文件用户属主为bandit20,组属主为bandit19,意味着它能以bandit20的身份执行该文件
那么直接去查看bandit20的密码就好了
该程序将使用 TCP 连接到 localhost 上的给定端口。如果它从对方接收到正确的密码,则将下一个密码传回。
我们连接两次ssh,选择一个没用的端口,先开启监听,然后在另一个里执行脚本,之后回到监听的终端,输入bandit20的密码,就会收到bandit21的密码
Cron 是一个程序,它将在特定时间或时间间隔运行特定命令或脚本。
很明显,我们需要关注cronjob_bandit22这个文件
查看该文件,发现全部为*,表示每分钟执行一次,那么需要知道执行的这个脚本是什么
可以看到,这个程序先给了t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv这个文件644的权限,然后保存bandit22的密码到这个文件中,查看这个文件的内容即可得到bandit22的密码
进入给定目录下查看cronjob_bandit23的内容,然后查看相应脚本内容
该脚本首先将运行脚本的用户名称保存到myname中,然后将 I am user *** 发送到md5sum命令,对该文本运行md5sum命令并利用cut提取输出的第一列,第三行将用户名称echo到mytarget中,最后保存到/tmp/$mytarget中
因此,运行第二行代码,并将$myname改为bandit23即可
和前两关似乎有异曲同工之妙
该脚本导航到目录 /var/spool/bandit24 并遍历目录的所有内容,执行每个内容然后删除它们
我们可以在该目录下创建一个属于自己的脚本,用来获取bandit24的密码,然后给他执行权限
#!/bin/bash
cat /etc/bandit_pass/bandit24 > /tmp/vegetable.txt
然后等待1分钟让脚本执行,再去查看密码
按照题目的提示,给30002bandit24的密码和一个四位数密码即可尝试连接,如果四位数密码正确则会返回bandit25的密码
先在/tmp下创建一个目录,然后写一个脚本
1 #!/bin/bash 2 for i in {0..9} 3 do 4 for j in {0..9} 5 do 6 for k in {0..9} 7 do 8 for l in {0..9} 9 do 10 echo $(cat /etc/bandit_pass/bandit24) $i$j$k$l >> bandit24_test.txt11 done 12 done 13 done 14 done
写好后,执行该脚本,即可得到一个字典,接下来就把这些东西发送给30002端口即可
cat bandit24_test.txt | nc 127.0.0.1 30002 > result.txt
然后查看result.txt文件即可得到bandit25的密码
在主目录中可以找到bandit26的ssh私钥,尝试登陆
连接了一会然后就显示连接关闭了
题目说bandit26的shell不是/bin/bash,所以我们需要去看看它到底是什么
在登陆bandit26时,运行了一个showtext脚本,查看可知该脚本打开了一个text.txt,然后就退出了
text文件应该就是上面的ascii art字符了,尝试将控制台变低,小于该字符,然后让该字符显示不全
text未显示完全,因此没有退出,按v进入编辑模式,按esc,输入r/etc/bandit_pass/bandit26即可得到bandit26的密码
这个时候仍要注意,shell仍不是bash,所以还得将控制台变小,还是进入编辑模式
然后再输入 !sh 退出到shell
执行脚本,发现可以使用其他用户的身份执行,那就打开bandit27的密码就行了
创建目录/tmp/bandit27 ,在这里执行题目中的git指令克隆存储库
然后查看即可得到bandit28的密码
看上去和上一关一样?不过肯定没有这么简单,还是按照刚才的操作来
结果,果然和我想的一样
执行git show查看日志消息
开始都是一样的操作
no passwords in production,开发中没有密码,那密码肯定在其他分支里了,最终,在dev分支中找到密码
同样的操作先来一波
。。。。。。。可以使用标签来查看开发人员是否在tag上提到了开发过程的重点
先创建一个txt文件,然后添加、提交,再将文件推送到 git 存储库中
echo 'May I come in?' > key.txt
git add -f key.txt
git commit -m "Adding a file"
git push origin
首先要拿到shell,输入的所有指令都会转换为大写,而linux区分大小写
拿到shell后,直接去存密码的地方即可拿到bandit33的密码
34关不存在?
OverTheWire——Bandit相关推荐
- OverTheWire:Bandit通关WriteUp(2019.01.17完)
OverTheWire:Bandit通关全攻略WriteUp 背景 通关过程 Level 0 Level 0-->Level 1 Level 1 - Level 2 Level 2 - Leve ...
- OverTheWire: Bandit通关指引
OverTheWire的Wargame对于想要学习攻防技术的入门同学来说是非常好的游戏,通过练习wargame获得基本工具的使用技巧和思路.本文梳理了Wargame入门的Bandit的一些通关技巧,旨 ...
- OverTheWire:Wargame-Natas通关指引
OverTheWire的Wargame系列有很多,Natas是关于web渗透的wargame,通过Natas的训练,掌握基本的Web渗透技巧,Web渗透学习的书很多,推荐一本<Web安全测试&g ...
- OverTheWire的bandit游戏1
文章目录 介绍 题目 bandit0 bandit1 bandit2 bandit3 bandit4 bandit5 bandit6 bandit7 bandit8 bandit 9 bandit 1 ...
- overthewire靶场之——bandit(1-10)
bandit,主要练习linux命令 Level 0 关卡介绍: Level 0 → Level 1 关卡介绍: 解决方案: Level 1 → Level 2 关卡介绍: 解决方案: Level 2 ...
- overthewire靶场之——bandit(11-20)
bandit,主要练习linux命令 Level 10 → Level 11 关卡介绍: 解决方案: Level 11 → Level 12 关卡介绍: 解决方案: Level 12 → Level ...
- WarGame bandit
传送门 0级 这里推荐用xshell来进行连接,连接好后看1级 0级->1级 ls cat readme 1级->2级 ls cat ./- //需要输入完整路径才能查看 2级->3 ...
- Wargames学习笔记--Bandit
靶场链接:https://overthewire.org/wargames/ 过程中大部分不会直接出现通关密码,有可能完结会附在文末 Level 0 游戏的开始,只需要按照主机名和端口号使用ssh链接 ...
- linux练习平台WarGame之bandit通关日志
前言~ Bandit是一个学习linux命令的闯关游戏平台,比较类似于ctf,通过闯关的模式,不断的学习新的命令,对于程序员亦或者安全爱好者来说都是一个不错的学习平台 传送门 目录导航 Level 0 ...
最新文章
- 60+应用,哪款是你最爱?
- 大华人脸抓拍sdk调用
- 没有add framework support选项_什么?小型机房没有“线”也能很好的管理机房?
- 小程序生成海报 详解
- 阿里云栖开发者沙龙PHP技术专场-聊聊服务稳定性保障这些事
- android客户端下载图片的方法
- HTML基础——零基础必看
- 如何在验证集加噪声_图像去噪:如何去其糟粕,取其精华?
- php怎么文字加粗体代码,css怎么实现字体描边效果,html字体加粗加黑代码
- Visual Studio 2005超级集成版本下载
- 100 个 Python 小例子(练习题)
- 不同形式弧微分的求解
- Javascript笔记大全03
- linux java定时关机,Linux定时关机
- JavaScript——问卷星自动填写
- 如何快速发表职称论文
- 单电源运放滤波器设计
- Matlab-mex
- 中国无酒精饮料包装行业市场供需与战略研究报告
- 鸿蒙为什么显示一个手表,上手做一个华为鸿蒙手表应用 4 - 生命周期事件