Linux&bash闯关CTF
Posted 信安之路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux&bash闯关CTF相关的知识,希望对你有一定的参考价值。
关卡说明
每一关的目标是获取下一关的入口密码,有了这个密码才能进行下一关。
第一关
描述
下一关的密码保存在当前目录下的readme中。
命令
第二关
描述
下一关密码保存在系统中文件名中包含'-'的文件。
命令
第三关
描述
下一关密码保存在当前目录下的隐藏文件中
命令
第四关
描述
下一关密码保存在当前目录的一个text文件中
命令
第五关
描述
下一关的密码保存在符合几个条件的文件中,条件包含:文件大小为1033字节、不可执行、可读文件。
命令
第六关
描述
下一关的密码保存在属于bandit7的用户权限以及bandit6用户组权限且大小为33字节的文件中。
命令
第七关
描述
下一关的密码保存在data.txt文件中且与millionth在一行
命令
第八关
描述
下一关的密码所在行是文件中唯一的不重复的行
命令
第九关
描述
下一关密码所在的行前面又若干个=号
命令
第十关
描述
下一关的密码经过base64加密后保存在了data.txt中
命令
第十一关
描述
下一关的密码经过rot13编码后保存在了data.txt中
命令
第十二关
描述
下一关的密码保存在data.txt中,这是个经过重复压缩后的hexdump文件。
命令
第一步:创建一个临时目录,方便操作
第二步:使用xxd将hex文件转为正常文件
第三步:查看文件类型
第四步:从第三步看的出是一个gzip文件,然后使用gzip进行解压操作
第五步:重复第三第四步。直到文件正确解压完成
最后一步:查看文件内容
第十三关
描述
下一关的密码保存在/etc/bandit_pass/bandit14中,但是这个文件只能由用户bandit14读取。当前目录下有一个bandit14的ssh私钥。
命令
第一步:查看目录文件以及密码文件的权限
第二步:利用bandit14的私钥登入系统
第十四关
描述
下一关的密码存在于本地的30000端口,通过连接本地的30000端口并提交上一关得到的密码来获取密码。
命令
第十五关
描述
下一关的密码需要将上一关的密码经过ssl加密发送到本地的30001端口来获得。
命令
使用openssl的s_client参数连接服务器端口
第十六关
描述
这一关的密码获取方式类似于上一关,不同地方是本地开放的端口没有指定是哪一个,只说了一个端口范围从31000到32000,需要一个一个的尝试而且获取的不是密码二十一个私钥。
命令
第一步:写一个bash脚本,循环连接
第二步:查看成功后的结果
将上面的私钥保存为cert.cer供下一关使用。
第十七关
描述
当前目录下又两个文件passwords.old和passwords.new。下一关的密码是passwords.new中与passwords.old唯一不同的行
命令
第一步:使用上一关的私钥连接服务器
第二步:对比目录下的两个密码文件获取密码
第十八关
描述
下一关的密码保存在了服务器下的readme文件中,但是目标服务器不能使用ssh来操作。
命令
第一步:使用scp连接服务器,复制readme文件
第二步:查看文件内容
第十九关
描述
当前目录下有一个setuid文件,密码保存在了/etc/bandit_pass中,这个文件不可以直接读取,可以试着使用这个二进制文件来读取密码文件。
命令
第一步:查看本地文件
第二步:执行程序并读取文件
第二十关
描述
当前目录下有一个setuid的二进制文件。这个文件的功能是,可以连接本地指定的端口,然后读取一行数据,判断这个数据是否与上一关的密码相同,如果相同就会发送下一关的密码。
命令
第一步:监听端口,如果有连接直接返回数据
第二步:使用目录下的二进制文件连接监听的端口
第三步:从第一步的监听窗口获取密码
第二十一关
描述
本关的重点是有一个定期执行的程序,我们可以通过查看/etc/cron.d/目录下的内容可以得到所有的计划任务。
命令
第一步:查看/etc/cron.d/下的列表
第二步:查看/etc/cron.d/cronjob_bandit22的内容
第二十二关
描述
这一关跟上一关有相似的地方也是关于定期执行的脚本,在渗透测试的过程中查看别人的自动运行的脚本也是很不错的习惯。对于我们继续渗透有很大的帮助。
命令
第一步:查看/etc/cron.d/cronjob_bandit23的内容,这个文件是在第二十一关列出的。
第三步:我们可以执行上面的脚本看看结果
第四步:从上面的结果以及脚本的内容可以看出,脚本执行完之后获取到的是当前用户的密码,所以下一关的密码文件就是执行下面的命令就可以获得。
第二十三关
描述
这一关的关键点也是关于定期执行的脚本,查看脚本的内容并根据功能获取密码。
命令
第一步:查看cronjob_bandit24.sh脚本的内容,这个脚本的是通过第二十一关列出的。
以上脚本的作用是执行/var/spool/下的脚本并删除这些脚本,所以我们要想办法让脚本执行并且将结果输出出来。
第二步:使用以下命令查找一个可以写的目录
发现一个可写目录 /run/lock
第三步:在/run/lock下创建一个bash脚本bandit24pwd.sh
第四步:添加执行权限等待执行
第二十四关
描述
有一个守护进程监听30002端口,需要将上一关的密码和一个随机的4位数字密码发送到这个端口,验证通过会获得密码。
命令
第一步:使用nc连接本地的30002端口
第二步:由于pin码是错误的,所以使用如下脚本连续提交破解真实的pin码
第三步:获取结果
第二十五关
描述
这一关的任务是利用目录下的key文件登入服务器,但是在登入的时候由于返回的不是/bin/bash无法进行操作,所以要想办法突破他。
命令
第一步:尝试登入
第二步:查看/etc/passwd,看看是什么原因
第三步:由上可以看出在账号登入后会自动执行一个脚本/usr/bin/showtext,查看他的内容:
第四步:我们如何突破这个脚本不退出呢?
首先设置Windows的控制台的大小为5行,然后在进行ssh连接,这时我们就处在了more的命令进程中。在这时候我们可以输入v进入vi的编辑shell,然后使用 ":r </path/to/file>"来读取其他文件。
总结
这篇文章主要内容就是讲解了老外写的一片关于linux以及bash的命令使用的CTF,提供不同的场景使用不同的命令,这里肯定是不全的,不可能包含linux的所有命令以及所有情况,只能作为一个参看,能学多少学多少,这篇文件搞了好久,光图片就五十多张,累死我了,我感觉还是挺有用,不知道大家感觉如何,希望有用吧。
以上是关于Linux&bash闯关CTF的主要内容,如果未能解决你的问题,请参考以下文章
基于Unity3D的PC&Android端2D横屏冒险类闯关游戏
linux bash 后台运行脚本三种方法:&nohupsetsid