本文作者:Yale
原创投稿详情:重金悬赏 | 合天原创投稿等你来!
上篇文章介绍了前6部分(Exploit-Exercise之Nebula实践指南(一)),本篇接着介绍后面的06-12部分,明天的文章将介绍最后的13-19部分,希望大家看完后有收获!
06
题目提示flag06的密码来自传统的unix系统
这就意味这密文存储在/etc/psswd。我们直接读取
过滤一下
导出为cre.txt
接下来我们就需要破解该密文
我们在kali中破解
首先在kali上sftp连接nebula,将cre.txt下载到本机
在桌面就生成了cre.txt
在终端中首先切换到桌面,然后使用john破解
得到密码为hello
返回nebula,使用flag06/hello登录
登录成功
07
代码如下:
登录后进入/home/flag07目录
查看文件
nano查看index.cgi也可以看到上图的代码,而从thttpd.conf中我们可以知道端口为7007
代码的主要功能就是:第12行调用外部Ping命令去发送3个数据包ping指定的ip,ip是通过第8行的代码获得,最后将ping的结果返回
那么思路就有了,使用index.cgi(perl脚本)在端口7007上为我们的Web服务器注入getflag命令,但是不能在/flag07路径下,因为我们使用的是wget,而wget会在路径中写入文件,但是该路径我们没有权限
所以使用下图的命令
查看文件,可以知道成功通关
08
题目提示我们登录flag08账户后即可通关,不过flag08的密码需要我们自己找到
使用level08作为帐号、密码登录后进入相应目录
存在一个pcap数据包,那么很明显,我们需要从中找到flag08的密码
使用tcpdump分析
可以看出pcap数据包是存在密码的
使用tcpflow分析
结果如下
有些信息显示不全,我们将其导入到1.txt中
Nano /tmp/1.txt读取内容
在下面可以看到password
拼接一下,就是backdoor…OORm8.ate..
但是后面提示
登录失败,那可能是密码错了,可能是因为输入错误
可能用户在m8,mate之间的细节输错了,并且有一些删除操作,我们就试一下backd00Rmate
登录成功,通关
09
提示我们php代码存在漏洞
代码全篇都用了正则匹配,用于匹配[emailxxxx@xx]第5行将“.”替换为“dot”,第6行将“@”替换为“AT”。第13行要求我们传入的参数是文件名。
我们可以先试一下
使用nano在tmp目录下创建一个文件
执行后得到
存在漏洞的地方在于15行,在第一个参数后面加上了/e,启用/e模式,意味着第二个参数会被作为代码执行.对于上例来说,第一个参数是email,第二个参数是yale@test.com
那么如果第二个参数是getflag呢?当然php中要想执行系统命令可以通过system(),即system(getflag)
我们实验一下
使用同样的方法创建一个文件
执行后,从结果中可以看出执行了getflag命令,成功通关。
10
题目提示我们,只用满足access()函数系统调用的条件,则flag10二进制程序会上传任何给出的文件。当然,我们需要做的就是让flag10读出token就可以了。
代码太长,就不贴出来了。
我们着重需要关注access函数,access函数用户是否有操作文件的权限,有的话则open,没有的话则error。
逻辑上看上去是没有问题的,但是代码忽略了一个情况:条件竞争。也就是说在access之后,open之前打一个时间差,我们可以access一个我们有权限的文件,然后在open之前将那个文件替换为我们没有权限的文件,这样的话就可以读取我们没有权限的文件了。
很明显,我们对token是没有读取权限的,从下图就可以看到
接下来是我们具体的操作
写两个shell脚本
“1.sh”内容如下
创建文件,使用while循环,创建指向我们的文件的链接,创建指向token的链接
“2.sh”内容如下
在循环内将相关信息发到nc的客户机上,其中192.168.24.134便是kali的ip
在kali上开启nc
使用nc监听
后台执行1.sh
后台执行2.sh后结果如图
Kali上得到token了
使用flag10以及图上的密码登录
成功通关
在进入下一关之前我们需要将这一关的进程结束掉
列出所有进程
结束我们启动的1.sh和2.sh的进程
接下来我们可以进入下一关了
11
这一道题目是存在bug的,按照通过要求而言,我们是不算通关的,我也没做出来。这里就贴下国外大牛的博客,权当了解就好。
12
题目提示有后门程序在50001端口监听
查看代码
其实不用看代码也知道,这种类型都是一个套路。就是我们输入一串明文,程序将其加密后与24行处的密文进行比较。一般的思路就是根据密码算法,输入相应的明文。不过此处并不是考察这点。
注意第19行接收我们的输入,然后在22行处理我们的输入,而处理我们的输入的hash算法在第4行开始的hash函数中实现,在hash函数里第5行io.popen是危险的调用方式,在Lua中,当开发人员使用未经验证的用户数据通过os.execute()或io.popen()Lua函数运行操作系统命令时,会受到命令注入的攻击
我们首先nc连接,并尝试在输入密码时进行命令注入
可以看到成功执行我们的命令
我们前面是用whoami作为例子,那么getflag应该也是可以的
成功通关
(本篇完,最后一部分将在明天更新,敬请关注!)
看不过瘾?合天2017年度干货精华请点击《【精华】2017年度合天网安干货集锦》
别忘了投稿哦!
合天公众号开启原创投稿啦!!!
大家有好的技术原创文章。
欢迎投稿至邮箱:edu@heetian.com
合天会根据文章的时效、新颖、文笔、实用等多方面评判给予100元-500元不等的稿费哟。
有才能的你快来投稿吧!
点击了解投稿详情 重金悬赏 | 合天原创投稿等你来!