OverTheWire Bandit 通关解析(下)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: OverTheWire Bandit 通关解析(下)

介绍

OverTheWire Bandit 是一个针对初学者设计的网络安全挑战平台,旨在帮助用户掌握基本的命令行操作和网络安全技能。Bandit 游戏包含一系列的关卡,每个关卡都需要解决特定的任务来获取进入下一关的凭证。通过逐步挑战更复杂的问题,用户可以逐步提升其 Linux 系统操作和安全技能。

一、平台概述

OverTheWire 是一个提供各种网络安全游戏的平台,Bandit 是其最受欢迎的系列之一。Bandit 主要关注 Linux 系统基础知识,通过一系列逐步递进的任务,引导用户学习基本的命令行操作、文件管理、权限控制、脚本编写等技能。二、如何参与 Bandit 挑战

  1. 注册和登录:无需注册,直接通过 SSH 连接到指定的服务器即可开始挑战。
  2. 连接服务器:每一关的连接方式和凭证会在上一关完成时提供,通常通过 SSH 连接。
  3. 解决任务:每一关都有特定的任务,用户需要通过执行正确的命令来解决问题并获取下一关的凭证。
  4. 获取下一关凭证:成功完成任务后,会得到进入下一关的密码,通过该密码登录下一关的服务器。

三、总结

OverTheWire Bandit 是一个极佳的学习和实践 Linux 基础知识的平台,逐步引导用户从简单的命令行操作到更复杂的文件和权限管理。通过完成 Bandit 的挑战,用户不仅能够提升自己的技术水平,还能够培养解决问题的思维能力。

主要技能包括

  • 基本的命令行操作(如 ls, cat, file, find 等)
  • 文件和目录管理
  • 权限控制和操作
  • 处理特殊文件名和字符
  • 脚本编写和自动化任务

Bandit 为学习网络安全的初学者提供了一个良好的起点,通过一步步的挑战,用户可以打下坚实的基础,为更高级的安全研究和实践做好准备。

一、Bandit Level 25

先用上一关的密码登录

命令和之前一样

#!/bin/bash
 
myname=$(whoami)
 
cd /var/spool/$myname/foo
echo "Executing and deleting all scripts in /var/spool/$myname/foo:"
for i in * .*;
do
    if [ "$i" != "." -a "$i" != ".." ];
    then
        echo "Handling $i"
        owner="$(stat --format "%U" ./$i)"
        if [ "${owner}" = "bandit23" ]; then
            timeout -s 9 60 ./$i
        fi
        rm -f ./$i
    fi
done

从中我们了解到,文件夹“bandit24”中保存的任何文件都会被执行,如果文件是由“bandit23”创建的,则执行 60 秒后文件将被删除。如果我们想要“bandit24”的密码,我们需要编写一个将从 bandit24 文件夹执行的脚本。我们编写的脚本应该获取密码并保存在我们可以访问的位置(/tmp目录)

拿到密码

gb8KRRCsshuZXI0tUuR6ypOFjiZbf3G8

二、Bandit Level 26

使用上一关密码登录成功

这一关需要自己编写爆破脚本(通过 for 循环一次一次尝试)

#!/bin/bash
 
for i in {0000..9999}
do
        echo gb8KRRCsshuZXI0tUuR6ypOFjiZbf3G8 $i >> possibilities.txt
done
 
cat possibilities.txt | nc localhost 30002 > result.txt

思路是先将组合的密码存放入一个字典,再用字典爆破并保存结果

拿到密码

iCi86ttT4KSNe1armKiwbQNmB3YJP3q4

三、Bandit Level 27

使用上一关密码登录成功

家目录下有个 key 文件,直接连接是不行的

通过查看配置文件可以看到 bandit26 的 shell

bandit25@bandit:~$ cat /etc/passwd
 
 
bandit26:x:11026:11026:bandit level 26:/home/bandit26:/usr/bin/showtext

查看其内容

#!/bin/sh
 
export TERM=linux
 
exec more ~/text.txt
exit 0

exec more ~/text.txt


exec 命令用于执行指定的命令,但不同之处在于它不会创建新的进程,而是用新命令替换当前 shell 进程。这意味着,如果 more 命令成功执行,脚本将不会返回到其后续命令(如果有的话),因为 exec 之后的命令(在这个例子中是 exit 0)将不会被执行。

more 是一个常用的 Unix/Linux 命令,用于分页显示文件内容。当用户按空格键时,它会显示下一页的内容。按 q 键可以退出 more。

~/text.txt 是文件路径,~ 表示当前用户的家目录。所以,这行代码的作用是分页显示当前用户家目录下的 text.txt 文件的内容。

exit 0


这是一个 shell 命令,用于退出当前 shell 或脚本。退出状态码 0 通常表示成功执行。但由于前面的 exec 命令,这行代码实际上永远不会被执行,除非 more 命令由于某种原因失败(但这种情况很少见)。

因为 more 在终端上显示的内容量超过终端的大小,则更多工具将进入交互模式,直到我们没有查看文件中的所有内容或我们没有手动退出程序,命令才会退出

为了不让程序进行到 exit 0,我们应该停留在 more 阶段

ssh bandit26@bandit.labs.overthewire.org -p 2220 -i bandit26.sshkey

按“v”键将在由 VISUAL 和 EDITOR 环境变量定义的编辑器中打开当前行。如果这两个变量均未设置,则将使用 Vim。让我们看看按“v”会得到哪个编辑器

应该是使用 Vim 编辑器,这样我们可以修改 shell

:set shell=/bin/bash

查看密码

拿到密码

s0773xxkk0MXfdqOfPRVr9L3jJBUOgCZ

四、Bandit Level 28

接上一关

我们会看到该文件归 bandit27 所有,并且该文件的 SUID 位也已设置。这意味着如果我们使用二进制文件运行任何其他命令,该命令将具有与二进制文件所有者相同的权限(在这种情况下,命令将具有 bandit27 权限)

拿到密码

upsNCc7vzaRDx6oZC6GiR6ERwe1MowGB

五、Bandit Level 29

使用上一关的密码登录成功

在克隆前先创建文件夹

使用 git clone 克隆(注意:要加上端口,详情见图

进入文件夹查看文件内容

拿到密码

Yz9IpL0sBcCeuG7m9uQFt8ZNpS4HZRcN

六、Bandit Level 30

克隆的仓库但是看不到密码

查看历史提交记录

回复到之前的提交历史

成功拿到密码

4pT1t5DENaYuqnqvadYs1oE4QLCdjmJ7

七、Bandit Level 31

使用上一关的方式无法得到密码

可以先查看分支,然后切换分支

查看提交历史

恢复到某个历史记录

成功拿到密码

qp30ex3VLz5MDG1n91YowTv4Q8l7CDZL

八、Bandit Level 32

和之前一样,这次分支并没有线索,但 git 还有个特性就是标签

成功拿到密码

fb5S2xb7bRyFmAvQYQGEqsbhVyJqhnDy

九、Bandit Level 33

这次您的任务是将一个文件推送到远程存储库

并没有拿到密码,查看隐藏文件发现有 .gitignore

我们在文件中看到一行,*.txt这意味着如果在存储库文件夹中创建了任何扩展名为“.txt”的文件,则不应将其视为存储库的一部分。因此,如果我们尝试添加我们创建的新文件,它将不会被推送到远程存储库。因此,让我们删除此文件,然后推送该文件。

成功拿到密码

3O9RfhqyAlVBEZpVb6LYStshZoqoSx5K

十、Bandit Level 34

使用上一关密码成功登录

输入命令测试,结果报错,将其转为了大写

  • 当你运行 bash $0 时,bash 是一个命令,它会启动一个新的 Bash shell。
  • $0 作为参数传递给 bash,表示要运行的脚本名。因此,这个命令会创建一个新的 shell 并执行当前脚本,从而产生一个新的 shell 进程

接下来就是查看密码了

成功拿到密码

tQdtbs5D5i2vJwkO8mEyYEyTL8izoeJ0

相关文章
|
1月前
|
缓存 前端开发 JavaScript
"面试通关秘籍:深度解析浏览器面试必考问题,从重绘回流到事件委托,让你一举拿下前端 Offer!"
【10月更文挑战第23天】在前端开发面试中,浏览器相关知识是必考内容。本文总结了四个常见问题:浏览器渲染机制、重绘与回流、性能优化及事件委托。通过具体示例和对比分析,帮助求职者更好地理解和准备面试。掌握这些知识点,有助于提升面试表现和实际工作能力。
66 1
|
5月前
|
SQL 文字识别 安全
DVWA Insecure CAPTCHA 通关解析
DVWA Insecure CAPTCHA 通关解析
|
5月前
|
SQL 安全 PHP
DVWA File Inclusion 通关解析
DVWA File Inclusion 通关解析
|
5月前
|
存储 安全 Linux
OverTheWire Bandit 通关解析(上)
OverTheWire Bandit 通关解析(上)
|
5月前
|
存储 SQL 安全
DVWA File Upload 通关解析
DVWA File Upload 通关解析
|
5月前
|
安全 Linux Shell
OverTheWire Bandit 通关解析(中)
OverTheWire Bandit 通关解析(中)
|
1月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
71 2
|
2月前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
76 0
|
2月前
|
算法 Java 容器
Map - HashSet & HashMap 源码解析
Map - HashSet & HashMap 源码解析
62 0
|
2月前
|
存储 Java C++
Collection-PriorityQueue源码解析
Collection-PriorityQueue源码解析
66 0

推荐镜像

更多
下一篇
DataWorks