skyler实战渗透笔记(十)—IMF

news/2024/12/22 20:40:03/

skyler实战渗透笔记

笔记是为了记录实战渗透学习过程,分享渗透过程思路与方法。

请注意:

对于所有笔记中复现的终端或服务器,都是自行搭建环境或已获授权渗透的。使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,我概不负责。

0x00 前言

欢迎来到我的第一个Boot2Root虚拟机“IMF”。国际货币基金组织是一个情报机构,你必须侵入所有的旗帜,并最终扎根。旗子一开始很容易,随着你的进步变得越来越难。每个标志都包含对下一个标志的提示。我希望你喜欢这个虚拟机,并学到一些东西。

 困难:初学者/温和

0x01 信息收集

老规矩,找一下目标机器

确定IP,看看端口

0x02 渗透get shell

就开了一个80端口,那么访问下看看,根据前面背景,有很多flag并且从易到难一步一步循环递进的,那么话不多说,开启F12,每个页面都搜一遍flag:

搜到第一个flag,发现是个base64,解密看下:

提示是all the files,看了下每个页面的js文件,第三个明显是base64加密,但是解不出来,看前面两个也像是,那么组合起来试下:

 

解出来flag2,并且也是个base64加密的字符串,解码看下:

 

解出来没太看明白啥意思,那么直接访问试试:

发现是个登录窗口,有一个登录表单,随便填个admin/123登录抓包看下:

 

发现注释里说明了,sql没法工作,采用硬编码密码的方式,那么说明密码直接写在代码里,并且应该是使用字符串对比来进行判断是否相等。另外看了下返回信息,提示用户名不对:

 

那么看来用户名不是user,从网页上找一下:

发现了三个用户名,分别试了下,rmichaels可以用,使用这个发现提示密码不对: 

 

 

如果是硬编码的,猜测他使用了strcmp函数,strcmp()是对于相等的字符串返回0,不同的字符串返回非0,但如果比较非字符串,strcmp()将返回null。在php中null==0是true。使得数组看起来与硬编码的密码字符串匹配。

所以此处传一个数组,将pass字段重命名为pass[]

用户名使用rmichaels,将pass字段重命名为pass[],成功获取到了flag3

看到了flag3,并且给了个跳转。这里burpsuite查看跳转不方便,我们从firefox里构造post请求

点击这个链接,跳转到了另一个页面:

 

随便点了点,没什么发现,但是看到url里带参数不停地在变,简单尝试一手:单引号

 

OK,存在sql注入,那么放进sqlmap泡一下: 

 

提示cookie无效,那么从真实环境里抓包复制cookie并在sqlmap里指定: 

 

  跑出来结果确实存在sql注入

  

那么继续跑表看下:

sqlmap -u http://192.168.245.151/imfadministrator/cms.php?pagename=upload --cookie "PHPSESSID=sq62aeus2872qoiep9rhtl3mb2" --current-db

sqlmap -u http://192.168.245.151/imfadministrator/cms.php?pagename=upload --cookie "PHPSESSID=sq62aeus2872qoiep9rhtl3mb2" -D admin --tables

sqlmap -u http://192.168.245.151/imfadministrator/cms.php?pagename=upload --cookie "PHPSESSID=sq62aeus2872qoiep9rhtl3mb2" -D admin -T pages --columns

sqlmap -u http://192.168.245.151/imfadministrator/cms.php?pagename=upload --cookie "PHPSESSID=sq62aeus2872qoiep9rhtl3mb2" -D admin -T pages --dump

发现了两个图片的路径,尝试访问下第一个:

 有个二维码,扫一下:

扫出来发现是一个flag4

解开base编码:

 应该就是一个上传页面了,访问下:

先传一个一句话木马试试:

不支持php文件,那么应该只能传图片类的,随便找个图片在后面加上一句话语句,做个一句话图片马:

好吧,还有waf,看来一句话是不管用,得找个过waf的木马,这里选择kali自带的weevely

复制做出来的text.php里的内容,利用gif欺骗的原理,在木马前面加上GIF89a:

然后把后缀改成gif,上传成功:

成功传上去后,查看响应中包含了图片的路径:

尝试用weevely连接,链接成功:

weevely http://192.168.245.151/imfadministrator/uploads/2b88488881a7.gif zxp

看到目录下有个flag5的文件,查看下:

解码一下:

 agent,代理服务,看来下面要通过代理连进来,那先找一下本地的代理文件:

find / -name agent &2>/dev/null (这里用&2>把报错的信息输出到黑洞里,防止干扰视线)

执行一下这两个文件:

查看当前监听的端口:

发现多了一个7788,说明代理在执行

但是重新用nmap扫描,发现还是扫不出这个端口来,猜测应该也是隐藏了,需要knock敲门按序列访问端口来解开iptable的隐藏规则:

到/usr/local/bin目录下查看access_codes发现端口序列:7482 8279 9467

尝试用knock敲门试下:

敲开了7788端口。尝试nc访问下:

需要一个agent ID。那这个ID只能从agent本身来入手了,先尝试把agent拿下来:

复制到web目录,直接在kali中wget访问下载:

是个ELF可执行文件,那么用ltrace跟踪下程序堆栈看看:

fgets取一个前台输入的数据,先随便输入一个看看:

发现程序是通过strncmp函数对比输入和写死的一个数字ID,那么这个48093572应该就是agentID了

 这边ID正确,其中选项2和3可以让用户输入内容,
如此看来是要通过缓冲区溢出7788端口的agent程序,这边用二进制修改exp
为该程序创建一个利用程序,首先为msfvenom有效负载创建一个shellcode

 利用二进制py修改exp进行提权
将文件写入本地agentsploit.py中

flag6{R2gwc3RQcm90MGMwbHM=}

Gh0stProt0c0ls

这台靶机,涵盖了知识量挺大的,从熟悉BP、写木马、gdb拆解、二进制、缓冲区溢出等等,花了太多时间


http://www.ppmy.cn/news/1557287.html

相关文章

Xcode 文件缺失:Missing submodule xxx

问题&#xff1a;警告或者报错&#xff1a;Missing submodule xxx 引用方式为: <XXXX/******.h> 即 <项目名/头文件名称.h> 原因&#xff1a;这种问题主要是项目名称和 文件&#xff08;主要是头文件 命名重复了&#xff09; 经过谷歌查询 原因是创建的库名称自动…

C# OpenCV机器视觉:尺寸测量

转眼就是星期一了&#xff0c;又到了阿强该工作的时候了&#xff01;阿强走进了他作为机器视觉工程师的办公室&#xff0c;准备迎接新一天的挑战。随着周末的结束&#xff0c;他心中暗想&#xff1a;“如果我能让机器像我一样聪明&#xff0c;那就太好了&#xff01;” 正当他…

React 底部加载组件(基于antd)

底部加载组件的意义在于提供一种流畅的用户体验&#xff0c;以便在用户滚动到页面底部时自动加载更多内容。这样可以让用户无需离开当前页面&#xff0c;就能够无缝地浏览更多的内容.通过底部加载组件&#xff0c;可以分批加载页面内容&#xff0c;减少一次性加载大量数据对页面…

qwt 之 QwtPlotMarker

QwtPlotMarker 是 Qwt 库中的一个类&#xff0c;用于在 QwtPlot 中添加标记点。这些标记可以是简单的线条、符号或者带有标签的图形元素&#xff0c;通常用来标注特定的数据点或位置。QwtPlotMarker 提供了多种属性来定制其外观和行为&#xff0c;例如位置、样式、颜色等。 主…

level2逐笔委托查询接口

沪深逐笔委托队列查询 前置步骤 分配数据库服务器 查询模板 以下是沪深委托队列查询的请求模板&#xff1a; http://<数据库服务器>/sql?modeorder_book&code<股票代码>&offset<offset>&token<token>查询参数说明 参数名类型说明mo…

MySQL专题:日志及MVCC

MySQL是一种广泛应用的关系型数据库管理系统&#xff0c;以其高性能和灵活性著称。在保证数据安全性和一致性方面&#xff0c;MySQL通过日志和多版本并发控制&#xff08;MVCC&#xff09;提供了强有力的支持。本文将深入解析日志和MVCC的原理及其在实际应用中的作用。 日志&a…

数据结构 ——哈希表

数据结构 ——哈希表 1、哈希表的概念 概念参考 算法数据结构基础——哈希表&#xff08;Hash Table&#xff09; 2、代码实现 下面是用数组实现哈希结构&#xff0c;开放地址法解决冲突的简单哈希表操作 #include <stdio.h> #include <stdlib.h> #include <s…

【图形渲染】【Unity Shader】【Nvidia CG】有用的参考资料链接

【背景】 学Shader和学其他任何IT技能一样&#xff0c;需要备有合适的查阅资料的池子&#xff0c;本文就将这些池子一站式备齐给到大家。 【Unity Shader相关学习参考文档链接】 Unity Shader官方文档&#xff1a; http://docs.unity3d.com/Manual/SL-Reference.html 官方…