vulnhub-Muzzy-CTF

下载地址:https://www.vulnhub.com/entry/muzzybox-1,434/

前言:

CTF的思维确实不一样,这个靶机早出来了,但是卡在最后题不会,对,我就是在等第三题的解答。作为小白,大家一起学习吧。之后打算做一些ctf的靶机,虽然和渗透有区别,但是感觉还是可以弥补一些知识上的空白。

Kali:192.168.1.4

目标机:192.168.1.30

信息收集:

漏洞挖掘:

访问80端口,是个做ctf的靶场。总共三道题。

第一题:

题目如下。

大致翻译是:华盛顿大学为学生建立了一个线上图书馆。仅仅“Principal”是“Authotized”。你是否可以绕过它获取flag。

访问两个网址得到如下页面:

英文自行翻译吧。根据提示,我们先下载上面这张图,然后上传,得到如下页面:

因为看到文件上传,肯定是打开bp,上传木马啥的,但是,我并没有找到它上传到哪去了,所以放弃。期间我上传过一些其他图片,服务器为500报错。对比信息和上传的图片,结合题目提示,猜测可能存在一个图片文字识别的程序,从图片中读出文字,然后对比是否通过,然后返回信息。因此,我把图片p成如下的样子(字体是微软雅黑,因为字体也会影响到程序的识别):

命名为idcard.png,上传,获得如下界面,获取flag。

记住这个pin值123456789,第二个要用。

第二题:

题目翻译如下:在数据泄露之后,学校开发了一个新网站,但是不知道为什么一直在维护中,你能列出当前目录并读取flag文件吗?连接:IP:8989

访问网址后,发现一堆报错(下图只是一部分):

一个一个点开看的时候,发现都有一小段代码,我以为是代码审计,但是仔细观察后,发现事情并没有那么简单,因为代码看不出任何突破口。

最下面有个提示:

翻译如下:对于代码执行,你可以将鼠标放在列表上,右上角会出现一个命令框。

根据提示,点击命令框,需要输入pin值,就是刚刚的pin值(做太快,没有截图)。之后就可以执行代码(我刚开始还以为是个可以执行系统命令的命令框,当然,现在也差不多)。

Python中os模块可以执行系统命令,这下就很简单了。导入模块,执行系统命令就行。执行命令a=os.popen(“ls -al”),a.read()。得到结果,发现flag文件夹。

列举flag文件夹,发现一个ctf2.py,读取文件,获取flag(看不清算了,就是在下面的图里面)。

第三题:

题目翻译:在系统受损后,root用户使用bash ls和sudo ls来审核文件,你有其他的办法去获取/root/Final_Flag.txt吗?链接:IP:15000/page?name=muzzy。

看着这个网址,我第一反应就是文件包含漏洞。但是我输入/etc/passwd之后,他给我返回了这个东西:

于是我想到了xss,但是在此处意义不大。难道藏着其他文件要爆破目录?一顿操作,洗洗睡觉。但是在第二个题的时候,好像可以getshell啊,能不能去审计一下第三题的源码。先去第二题getshell吧。

代码就是Python反弹shell那个代码。这一题可能是要提权。查找s权限也没有可利用的东西。从系统提权,系统为Linux4.15(但是,洗洗睡吧)。在我一头雾水的时候,我打开了百度,开始面向百度的ctf之旅,于是我找到了模板注入这个漏洞,就是服务器端模板(flask之类)把用户的输入给解析了,至于漏洞详情嘛,我也还在学习,总之先把这道题给做了吧。在第三题的url的name后面写入“{{7*8}}”,页面返回了56,也就是说服务器后端把“7*8”给解析了。

说明存在模板注入漏洞,所以接下来手注,也可以用工具。

输入{{“”.__class__}},__class__这个函数时返回类型的。返回结果是“str”,字符型。

我们可以先找到该页面的基类,然后去找找我们可以利用的方法(函数)。基类用__bases__方法。输入{{“”.__class__.__bases__}},发现基类是object。

接下来寻找子类。输入{{“”.__class__.__bases__[0].__subclasses__()}}。就会发现有超级多的子类,图太长了,不上图了,接下来就是找到适合的类,看了一波,发现了一个os类(还是用工具比较好,我是看了半天才看到了os)。

对于这个类不陌生,它可以执行系统命令,其中有system函数和popen函数。接下来就调用这个类来getshell。这个类在第117的位置。输入{{“”.__class__.__bases__[0].__subclasses__()[117].__init__.__globals__[popen](“ls”).read()}},之后就可以执行任意命令了。最后找到一个叫no_flag.txt的文件。

读取一下。

这应该是使用ssh登录。登录成功:

因为不能使用sudo,所以只能想想其他办法,归根结底是提权。接下来的提权,涉及到了我的知识盲区。

查看环境变量,发现该用户是在/usr/local/sbin下,之后在路径目录下伪造ls文件。

保存,在kali打开监听,在目标机中执行ls文件,即可获得flag。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值