overthewire Bandit靶场
xrh推荐的基础靶场,来玩一玩
第0关
挺简单的,不说了
第1关
这里有linux的特殊符号’-‘号
这种情况下直接cta ./-
第2关
--spaces in this filename--文件,加了空格
之前./就不行了,会被终端识别为多个文件,只能cat ./"--spaces in this filename--"
第三关
第四关
需要使用file查看文本文件
正常输出即可
第五关
有提示1
find . -type f -size 1033c
然后1
cat "./maybehere07/.file2"
第六关
其中2>/dev/null是说错误输出就不弹出
第七关
第八关
第九关
1 | strings data.txt |
strings命令,用于查看文件可识别字符串
第十关
第11关
考凯撒密码
第12关
考解压缩
就是一直解压-file-解压到最后就行
第13关
考察ssh命令
这里说了本地无法连接,必须退到本地连接
看看私钥文件
创建好文件后用ssh连接就行,注意如果报错的话应该是权限问题,改一下权限就好了
第14关
第15关
使用ssl连接
1 | openssl s_client -connect localhost:30001 |
第16关
nmap扫描
第17关
使用diff命令比对密码就行
第18关
在 Linux 系统中,.bashrc 是一个在用户打开终端(登录)时会自动执行的配置文件。这关的守门人在 bandit18 的 .bashrc 文件里写了一个类似 exit 或 logout 的命令。
所以正常的流程变成了:你输入密码 -> 验证成功 -> 系统准备给你分配终端 -> 系统读取 .bashrc -> 执行到 exit -> “Byebye!” 强行切断连接。
使用ssh直接执行命令
1 | ssh bandit18@bandit.labs.overthewire.org -p 2220 cat readme |
第19关
用它给的二进制文件就可以查看文件
第20关
这关的意思其实类似于反弹shell,让我们的机器发送静默命令,然后使用它给的程序连接我们的端口
第21关
查看计划任务
第22关
其实就是上面的翻版
第23关
前面的和之前一样,然后看一下这个代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20#!/bin/bash
shopt -s nullglob
myname=$(whoami)
cd /var/spool/"$myname"/foo || exit
echo "Executing and deleting all scripts in /var/spool/$myname/foo:"
for i in * .*;
do
if [ "$i" != "." ] && [ "$i" != ".." ];
then
echo "Handling $i"
owner="$(stat --format "%U" "./$i")"
if [ "${owner}" = "bandit23" ] && [ -f "$i" ]; then
timeout -s 9 60 "./$i"
fi
rm -rf "./$i"
fi
这段脚本每分钟都会以 bandit24 的高权限身份在后台悄悄运行,它的核心逻辑如下:
cd /var/spool/bandit24/foo:进入这个特定的文件夹。owner="$(stat --format "%U" "./$i")":检查里面每个文件的主人是谁。if [ "${owner}" = "bandit23" ] ... then timeout -s 9 60 "./$i":高能预警! 如果它发现这个文件的主人是 bandit23(也就是你),它就会直接执行这个文件!执行完毕后,再用rm -rf把它删掉。
然后就可以创建临时目录用来写脚本了
给脚本执行命令,就可以发送过去了
第24关
1 | for i in {0000..9999}; do echo "gb8KRRCsshuZXI0tUuR6ypOFjiZbf3G8 $i"; done | nc localhost 30002 | grep -v "Wrong" |
第25关
这关考察逃逸受限shell
先看看信息
获取ssh密钥
然后就是逃逸了
more 命令是一个分页显示工具。如果文本内容超过了你当前终端窗口的高度,more 就会暂停,并在屏幕左下角显示 --More--,等待你按空格键继续看。
重点来了: 在显示 --More-- 的这个暂停状态下,如果你按一下键盘上的 v 键,more 就会立刻调用 vi 编辑器 来打开这个文件!一旦进入了 vi,你就掌握了执行系统命令的最高权力!
- 物理缩小窗口: 把你现在用的终端窗口(比如你图里的 Windows Terminal)高度拉到极小,弄成只有 4 到 5 行那么扁。目的是确保那段文本能撑爆你的屏幕,触发
--More--暂停。 - 发起 SSH 登录: 在你的 bandit25 主目录下,有一个专门用来登录 26 的私钥(可以用
ls确认一下名叫bandit26.sshkey)。执行:1
ssh -i bandit26.sshkey bandit26@localhost
- 按下
v键: 登录成功后,你的扁扁的屏幕左下角一定会出现--More--。** - 你进入
vi了! 此时屏幕会变成vi编辑器的界面。 召唤真正的 Bash: 在
vi中,先输入冒号:进入命令模式(注意看屏幕左下角会出现冒号),然后依次输入以下两行命令(每行输完回车):1
2:set shell=/bin/bash
:sh
第26关
和之前有几个很像
第27关
第28关
正常读取就行了
第29道
第30题
第31题
1 | echo 'May I come in?' > key.txt |
1 | git add -f key.txt |
第32题
$是符号,0是数字。它们都不会被转换成大写。$0的含义是:“代表当前正在运行的程序或 Shell 本身”









































