Linux&bash闯关CTF

Posted 信安之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux&bash闯关CTF相关的知识,希望对你有一定的参考价值。

关卡说明

每一关的目标是获取下一关的入口密码,有了这个密码才能进行下一关。

第一关

描述

下一关的密码保存在当前目录下的readme中。

命令

第二关

描述

下一关密码保存在系统中文件名中包含'-'的文件。

命令

Linux&bash闯关CTF

第三关

描述

下一关密码保存在当前目录下的隐藏文件中

命令

Linux&bash闯关CTF

第四关

描述

下一关密码保存在当前目录的一个text文件中

命令

Linux&bash闯关CTF

第五关

描述

下一关的密码保存在符合几个条件的文件中,条件包含:文件大小为1033字节、不可执行、可读文件。

命令

Linux&bash闯关CTF

第六关

描述

下一关的密码保存在属于bandit7的用户权限以及bandit6用户组权限且大小为33字节的文件中。

命令

Linux&bash闯关CTF

第七关

描述

下一关的密码保存在data.txt文件中且与millionth在一行

命令

Linux&bash闯关CTF

第八关

描述

下一关的密码所在行是文件中唯一的不重复的行

命令

Linux&bash闯关CTF

第九关

描述

下一关密码所在的行前面又若干个=号

命令

Linux&bash闯关CTF

第十关

描述

下一关的密码经过base64加密后保存在了data.txt中

命令

Linux&bash闯关CTF

第十一关

描述

下一关的密码经过rot13编码后保存在了data.txt中

命令

Linux&bash闯关CTF

第十二关

描述

下一关的密码保存在data.txt中,这是个经过重复压缩后的hexdump文件。

命令

第一步:创建一个临时目录,方便操作

Linux&bash闯关CTF

第二步:使用xxd将hex文件转为正常文件

Linux&bash闯关CTF

第三步:查看文件类型

Linux&bash闯关CTF

第四步:从第三步看的出是一个gzip文件,然后使用gzip进行解压操作

Linux&bash闯关CTF

第五步:重复第三第四步。直到文件正确解压完成

Linux&bash闯关CTF

Linux&bash闯关CTF

最后一步:查看文件内容

Linux&bash闯关CTF

第十三关

描述

下一关的密码保存在/etc/bandit_pass/bandit14中,但是这个文件只能由用户bandit14读取。当前目录下有一个bandit14的ssh私钥。

命令

第一步:查看目录文件以及密码文件的权限

Linux&bash闯关CTF

第二步:利用bandit14的私钥登入系统

Linux&bash闯关CTF

第十四关

描述

下一关的密码存在于本地的30000端口,通过连接本地的30000端口并提交上一关得到的密码来获取密码。

命令

Linux&bash闯关CTF

第十五关

描述

下一关的密码需要将上一关的密码经过ssl加密发送到本地的30001端口来获得。

命令

使用openssl的s_client参数连接服务器端口

Linux&bash闯关CTF

第十六关

描述

这一关的密码获取方式类似于上一关,不同地方是本地开放的端口没有指定是哪一个,只说了一个端口范围从31000到32000,需要一个一个的尝试而且获取的不是密码二十一个私钥。

命令

第一步:写一个bash脚本,循环连接

Linux&bash闯关CTF

第二步:查看成功后的结果

Linux&bash闯关CTF

将上面的私钥保存为cert.cer供下一关使用。

第十七关

描述

当前目录下又两个文件passwords.old和passwords.new。下一关的密码是passwords.new中与passwords.old唯一不同的行

命令

第一步:使用上一关的私钥连接服务器

Linux&bash闯关CTF

第二步:对比目录下的两个密码文件获取密码

Linux&bash闯关CTF

第十八关

描述

下一关的密码保存在了服务器下的readme文件中,但是目标服务器不能使用ssh来操作。

命令

第一步:使用scp连接服务器,复制readme文件

Linux&bash闯关CTF

第二步:查看文件内容

Linux&bash闯关CTF

第十九关

描述

当前目录下有一个setuid文件,密码保存在了/etc/bandit_pass中,这个文件不可以直接读取,可以试着使用这个二进制文件来读取密码文件。

命令

第一步:查看本地文件

Linux&bash闯关CTF

第二步:执行程序并读取文件

Linux&bash闯关CTF

第二十关

描述

当前目录下有一个setuid的二进制文件。这个文件的功能是,可以连接本地指定的端口,然后读取一行数据,判断这个数据是否与上一关的密码相同,如果相同就会发送下一关的密码。

命令

第一步:监听端口,如果有连接直接返回数据

Linux&bash闯关CTF

第二步:使用目录下的二进制文件连接监听的端口

Linux&bash闯关CTF

第三步:从第一步的监听窗口获取密码

Linux&bash闯关CTF

第二十一关

描述

本关的重点是有一个定期执行的程序,我们可以通过查看/etc/cron.d/目录下的内容可以得到所有的计划任务。

命令

第一步:查看/etc/cron.d/下的列表

Linux&bash闯关CTF

第二步:查看/etc/cron.d/cronjob_bandit22的内容

Linux&bash闯关CTF

Linux&bash闯关CTF

Linux&bash闯关CTF

第二十二关

描述

这一关跟上一关有相似的地方也是关于定期执行的脚本,在渗透测试的过程中查看别人的自动运行的脚本也是很不错的习惯。对于我们继续渗透有很大的帮助。

命令

第一步:查看/etc/cron.d/cronjob_bandit23的内容,这个文件是在第二十一关列出的。

Linux&bash闯关CTF

Linux&bash闯关CTF

第三步:我们可以执行上面的脚本看看结果

Linux&bash闯关CTF

第四步:从上面的结果以及脚本的内容可以看出,脚本执行完之后获取到的是当前用户的密码,所以下一关的密码文件就是执行下面的命令就可以获得。

Linux&bash闯关CTF

第二十三关

描述

这一关的关键点也是关于定期执行的脚本,查看脚本的内容并根据功能获取密码。

命令

第一步:查看cronjob_bandit24.sh脚本的内容,这个脚本的是通过第二十一关列出的。

Linux&bash闯关CTF

以上脚本的作用是执行/var/spool/下的脚本并删除这些脚本,所以我们要想办法让脚本执行并且将结果输出出来。

第二步:使用以下命令查找一个可以写的目录

Linux&bash闯关CTF

发现一个可写目录 /run/lock

第三步:在/run/lock下创建一个bash脚本bandit24pwd.sh

Linux&bash闯关CTF

第四步:添加执行权限等待执行

Linux&bash闯关CTF

第二十四关

描述

有一个守护进程监听30002端口,需要将上一关的密码和一个随机的4位数字密码发送到这个端口,验证通过会获得密码。

命令

第一步:使用nc连接本地的30002端口

Linux&bash闯关CTF

第二步:由于pin码是错误的,所以使用如下脚本连续提交破解真实的pin码

Linux&bash闯关CTF

第三步:获取结果

Linux&bash闯关CTF

第二十五关

描述

这一关的任务是利用目录下的key文件登入服务器,但是在登入的时候由于返回的不是/bin/bash无法进行操作,所以要想办法突破他。

命令

第一步:尝试登入

Linux&bash闯关CTF

第二步:查看/etc/passwd,看看是什么原因

Linux&bash闯关CTF

第三步:由上可以看出在账号登入后会自动执行一个脚本/usr/bin/showtext,查看他的内容:

Linux&bash闯关CTF

第四步:我们如何突破这个脚本不退出呢?

首先设置Windows的控制台的大小为5行,然后在进行ssh连接,这时我们就处在了more的命令进程中。在这时候我们可以输入v进入vi的编辑shell,然后使用 ":r </path/to/file>"来读取其他文件。

总结

这篇文章主要内容就是讲解了老外写的一片关于linux以及bash的命令使用的CTF,提供不同的场景使用不同的命令,这里肯定是不全的,不可能包含linux的所有命令以及所有情况,只能作为一个参看,能学多少学多少,这篇文件搞了好久,光图片就五十多张,累死我了,我感觉还是挺有用,不知道大家感觉如何,希望有用吧。


以上是关于Linux&bash闯关CTF的主要内容,如果未能解决你的问题,请参考以下文章

02_python闯关练习_02Max&Min

pythonchallenge闯关 第2题

基于Unity3D的PC&Android端2D横屏冒险类闯关游戏

linux bash 后台运行脚本三种方法:&nohupsetsid

linux bash 后台运行脚本三种方法:&nohupsetsid

linux 基础2