xrh推荐的基础靶场,来玩一玩

第0关

image.png
挺简单的,不说了

第1关

image.png

这里有linux的特殊符号’-‘号

这种情况下直接cta ./-

第2关

image.png
--spaces in this filename--文件,加了空格
image.png

之前./就不行了,会被终端识别为多个文件,只能cat ./"--spaces in this filename--"

第三关

image.png

第四关

image.png

需要使用file查看文本文件

正常输出即可

第五关

image.png
有提示

1
find . -type f -size 1033c

然后

1
cat "./maybehere07/.file2"

image.png

第六关

image.png

其中2>/dev/null是说错误输出就不弹出

第七关

image.png
image.png

第八关

image.png
image.png

第九关

1
strings data.txt

strings命令,用于查看文件可识别字符串

第十关

image.png

第11关

考凯撒密码
image.png

第12关

考解压缩
就是一直解压-file-解压到最后就行
image.png

第13关

考察ssh命令
image.png

这里说了本地无法连接,必须退到本地连接
image.png
看看私钥文件

image.png
创建好文件后用ssh连接就行,注意如果报错的话应该是权限问题,改一下权限就好了
image.png

第14关

image.png

第15关

使用ssl连接
image.png

1
openssl s_client -connect localhost:30001

第16关

image.png
nmap扫描

第17关

使用diff命令比对密码就行
image.png

第18关

image.png

在 Linux 系统中,.bashrc 是一个在用户打开终端(登录)时会自动执行的配置文件。这关的守门人在 bandit18 的 .bashrc 文件里写了一个类似 exitlogout 的命令。

所以正常的流程变成了:你输入密码 -> 验证成功 -> 系统准备给你分配终端 -> 系统读取 .bashrc -> 执行到 exit -> “Byebye!” 强行切断连接。

使用ssh直接执行命令

1
ssh bandit18@bandit.labs.overthewire.org -p 2220 cat readme

第19关

image.png

用它给的二进制文件就可以查看文件

第20关

这关的意思其实类似于反弹shell,让我们的机器发送静默命令,然后使用它给的程序连接我们的端口

image.png

第21关

image.png
查看计划任务

第22关

image.png

其实就是上面的翻版

第23关

image.png
前面的和之前一样,然后看一下这个代码

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 的高权限身份在后台悄悄运行,它的核心逻辑如下:

  1. cd /var/spool/bandit24/foo:进入这个特定的文件夹。
  2. owner="$(stat --format "%U" "./$i")":检查里面每个文件的主人是谁。
  3. if [ "${owner}" = "bandit23" ] ... then timeout -s 9 60 "./$i"高能预警! 如果它发现这个文件的主人是 bandit23(也就是),它就会直接执行这个文件!执行完毕后,再用 rm -rf 把它删掉。

然后就可以创建临时目录用来写脚本了
image.png
给脚本执行命令,就可以发送过去了
image.png

第24关

1
for i in {0000..9999}; do echo "gb8KRRCsshuZXI0tUuR6ypOFjiZbf3G8 $i"; done | nc localhost 30002 | grep -v "Wrong"

image.png

第25关

这关考察逃逸受限shell
image.png
先看看信息
image.png
获取ssh密钥
然后就是逃逸了

more 命令是一个分页显示工具。如果文本内容超过了你当前终端窗口的高度more 就会暂停,并在屏幕左下角显示 --More--,等待你按空格键继续看。
重点来了: 在显示 --More-- 的这个暂停状态下,如果你按一下键盘上的 v 键,more 就会立刻调用 vi 编辑器 来打开这个文件!一旦进入了 vi,你就掌握了执行系统命令的最高权力!

  1. 物理缩小窗口: 把你现在用的终端窗口(比如你图里的 Windows Terminal)高度拉到极小,弄成只有 4 到 5 行那么扁。目的是确保那段文本能撑爆你的屏幕,触发 --More-- 暂停。
  2. 发起 SSH 登录: 在你的 bandit25 主目录下,有一个专门用来登录 26 的私钥(可以用 ls 确认一下名叫 bandit26.sshkey)。执行:
    1
    ssh -i bandit26.sshkey bandit26@localhost
  3. 按下 v 键: 登录成功后,你的扁扁的屏幕左下角一定会出现 --More--**
  4. 你进入 vi 了! 此时屏幕会变成 vi 编辑器的界面。
  5. 召唤真正的 Bash: 在 vi 中,先输入冒号 : 进入命令模式(注意看屏幕左下角会出现冒号),然后依次输入以下两行命令(每行输完回车):

    1
    2
    :set shell=/bin/bash
    :sh

第26关

和之前有几个很像
image.png

第27关

image.png

第28关

image.png
正常读取就行了

第29道

image.png

第30题

image.png

第31题

1
echo 'May I come in?' > key.txt
1
2
3
git add -f key.txt
git commit -m "add key"
git push

image.png

第32题

  • $ 是符号,0 是数字。它们都不会被转换成大写。
  • $0 的含义是:“代表当前正在运行的程序或 Shell 本身”