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/bashmyname=$(whoami)cd /var/spool/$myname/foo
echo "Executing and deleting all scripts in /var/spool/$myname/foo:"
for i in * .*;
doif [ "$i" != "." -a "$i" != ".." ];thenecho "Handling $i"owner="$(stat --format "%U" ./$i)"if [ "${owner}" = "bandit23" ]; thentimeout -s 9 60 ./$ifirm -f ./$ifi
done

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

拿到密码

gb8KRRCsshuZXI0tUuR6ypOFjiZbf3G8

二、Bandit Level 26

使用上一关密码登录成功

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

#!/bin/bashfor i in {0000..9999}
doecho gb8KRRCsshuZXI0tUuR6ypOFjiZbf3G8 $i >> possibilities.txt
donecat possibilities.txt | nc localhost 30002 > result.txt

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

拿到密码 

iCi86ttT4KSNe1armKiwbQNmB3YJP3q4

三、Bandit Level 27

使用上一关密码登录成功

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

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

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

查看其内容 

#!/bin/shexport TERM=linuxexec more ~/text.txt
exit 0
  1. exec more ~/text.txt

    • exec 命令用于执行指定的命令,但不同之处在于它不会创建新的进程,而是用新命令替换当前 shell 进程。这意味着,如果 more 命令成功执行,脚本将不会返回到其后续命令(如果有的话),因为 exec 之后的命令(在这个例子中是 exit 0)将不会被执行。
    • more 是一个常用的 Unix/Linux 命令,用于分页显示文件内容。当用户按空格键时,它会显示下一页的内容。按 q 键可以退出 more
    • ~/text.txt 是文件路径,~ 表示当前用户的家目录。所以,这行代码的作用是分页显示当前用户家目录下的 text.txt 文件的内容。
  2. 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/363807.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

绝了!Stable Diffusion做AI治愈图片视频,用来做副业简直无敌!10分钟做一个爆款视频保姆教程

一 项目分析 这个治愈类视频的玩法是通过AI生成日常生活场景,制作的vlog,有这样的一个号,发布了几条作品,就涨粉了2000多,点赞7000多,非常的受欢迎。 下面给大家看下这种作品是什么样的,如图所…

Python面试宝典第1题:两数之和

题目 给定一个整数数组 nums 和一个目标值 target,找出数组中和为目标值的两个数的索引。可以假设每个输入只对应唯一的答案,且同样的元素不能被重复利用。比如:给定 nums [2, 7, 11, 15] 和 target 9,返回 [0, 1],因…

基于Java的蛋糕预定系统【附源码+LW】

摘 要 当今社会进入了科技进步、经济社会快速发展的新时代。国际信息和学术交流也不断加强,计算机技术对经济社会发展和人民生活改善的影响也日益突出,人类的生存和思考方式也产生了变化。传统购物方式采取了人工的管理方法,但这种管理方法存…

springboot系列七: Lombok注解,Spring Initializr,yaml语法

老韩学生 LombokLombok介绍Lombok常用注解Lombok应用实例代码实现idea安装lombok插件 Spring InitializrSpring Initializr介绍Spring Initializr使用演示需求说明方式1: IDEA创建方式2: start.spring.io创建 注意事项和说明 yaml语法yaml介绍使用文档yaml基本语法数据类型字面…

黑芝麻科技A1000简介

文章目录 1. A1000 简介2. 感知能力评估3. 竞品对比4. 系统软件1. A1000 简介

【R语言】plot输出窗口大小的控制

如果需要输出png格式的图片并设置dpi,可采用以下代码 png("A1.png",width 10.09, height 10.35, units "in",res 300) 为了匹配对应的窗口大小,在输出的时候保持宽度和高度一致即可,步骤如下: 如上的“10…

【递归、搜索与回溯】记忆化搜索

记忆化搜索 1.记忆化搜索2.不同路径3.最长递增子序列4. 猜数字大小 II5.矩阵中的最长递增路径 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃…

最近写javaweb出现的一个小bug---前端利用 form 表单传多项数据,后端 Servlet 取出的各项数据均为空

目录: 一. 问题引入二 解决问题 一. 问题引入 近在写一个 java web 项目时,遇到一个让我头疼了晚上的问题:前端通过 post 提交的 form 表单数据可以传到后端,但当我从 Servlet 中通过 request.getParameter(“name”) 拿取各项数…

STM32第十一课:ADC采集光照

文章目录 需求一、ADC概要二、实现流程1.开时钟,分频,配IO2.配置ADC工作模式3.配置通道4.复位校准5.数值的获取 三、需求的实现总结 需求 通过ADC转换实现光照亮度的数字化测量,最后将实时测量的结果打印在串口上。 一、ADC概要 ADC全称是A…

Python 中的抽象语法树

Abstract Syntax Trees in Python 注:机翻,未校对。 Requirement: All examples are compatible with at least Python v3.6, except for using ast.dump() with the attribute indent which has been added in Python v3.9. 要求:所有示例至…

线性代数知识点搜刮

求你别考太细... 目录 异乘变零定理 行列式转置 值不变 重要关系 中间相等,取两头 特征值公式 向量正交 点积为0 拉普拉斯定理 矩阵的秩 特征值和特征向量 |A|特征值的乘积 & tr(A)特征值的和 要记要背 增广矩阵 异乘变零定理 某行(…

视频共享融合赋能平台LntonCVS安防监控平台现场方案实现和应用场景

LntonCVS国标视频融合云平台采用端-边-云一体化架构,部署简单灵活,功能多样化。支持多协议(GB28181/RTSP/Onvif/海康SDK/Ehome/大华SDK/RTMP推流等)和多类型设备接入(IPC/NVR/监控平台)。主要功能包括视频直…

贾英才主任的中医探索之路

在北京崇文门中医医院,贾英才主任在中医领域的钻研从未停歇。他对药理的探究和药物搭配的研究,展现出了非凡的专注与执着。 贾英才主任常常埋首于浩瀚的中医典籍之中,逐字逐句地研读古代名医的论述,试图从那些古老的智慧中汲取精…

阿里云服务器数据库迁云: 数据从传统到云端的安全之旅(WordPress个人博客实战教学)

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 一、 开始实战1.2创建实验资源1.3重置云服务器ECS的登录密码(请记住密码)1.4 设置安全组端口1…

scatterlist的相关概念与实例分析

概念 scatterlist scatterlist用来描述一块内存,sg_table一般用于将物理不同大小的物理内存链接起来,一次性送给DMA控制器搬运 struct scatterlist {unsigned long page_link; //指示该内存块所在的页面unsigned int offset; //指示该内存块在页面中的…

用C/C++写一个客户端和服务器之间进行TCP通信的DEMO

目录 一、Visual Sudio 2022 二、配置 三、说明 四、客户端 五、服务端 六、演示 一、Visual Sudio 2022 Visual Studio 2022是微软公司推出的一款集成开发环境(IDE),旨在为开发人员提供全面的工具集,支持从Windows到MacOS…

开源大模型RAG企业本地知识库问答机器人-ChatWiki

ChatWiki ChatWiki是一款开源的知识库 AI 问答系统。系统基于大语言模型(LLM )和检索增强生成(RAG)技术构建,提供开箱即用的数据处理、模型调用等能力,可以帮助企业快速搭建自己的知识库 AI 问答系统。 开…

LeetCode刷题之HOT100之数组中的第K个最大元素

2024 6/29 今天天气很好啊,想爬山,奈何下午还有最后的一个汇报。做个题先 1、题目描述 2、算法分析 看到这个题我想到的就是: public int findKthLargest(int[] nums, int k) {Arrays.sort(nums);return nums[nums.length - k ];}哈哈,我提…

从零开始:Spring Boot 中使用 Drools 规则引擎的完整指南

规则引擎作用 规则引擎主要用于将业务逻辑从应用程序代码中分离出来,提高系统的灵活性和可维护性。规则引擎通过预定义的规则来处理输入数据并做出相应的决策,从而实现业务逻辑的自动化和动态调整。 例如 门店信息校验:美团点评在门店信息…

Websocket在Java中的实践——握手拦截器

大纲 依赖握手拦截器消息处理测试参考资料 在《Websocket在Java中的实践——最小可行案例》一文中,我们看到如何用最简单的方式实现Websocket通信。本文中,我们将介绍如何在握手前后进行干涉,以定制一些特殊需求。 在《Websocket在Java中的实…