用网站做的人工智能中标建设集团有限公司 网站

张小明 2025/12/28 0:13:00
用网站做的人工智能,中标建设集团有限公司 网站,如何更换网站服务商,大连高新园区招聘郑重声明#xff1a;本文所涉安全技术仅限用于合法研究与学习目的#xff0c;严禁任何形式的非法利用。因不当使用所导致的一切法律与经济责任#xff0c;本人概不负责。任何形式的转载均须明确标注原文出处#xff0c;且不得用于商业目的。 #x1f50b; 点赞 | 能量注入…郑重声明本文所涉安全技术仅限用于合法研究与学习目的严禁任何形式的非法利用。因不当使用所导致的一切法律与经济责任本人概不负责。任何形式的转载均须明确标注原文出处且不得用于商业目的。点赞| 能量注入 ❤️关注| 信号锁定 收藏| 数据归档 ⭐️评论| 保持连接立即前往晖度丨安全视界​​▶ 信息收集▶ 漏洞检测▶ 初始立足点 ➢ 修改漏洞利用脚本 ➢ 修改缓冲区偏移量 ▶ 权限提升▶ 横向移动▶ 报告/分析▶ 教训/修复目录1.修改缓冲区溢出利用脚本实战1.2 测试编译后的漏洞利用exe文件1.2.1 设置调试断点测试.exe文件是否正确执行1.2.1.1 为什么要设置调试断点1.2.1.2 界定执行成功与失败1.2.2 运行漏洞利用.exe文件出错1.2.2.1 运行出错1.2.2.2 原因分析偏移量计算错误1.2.3 缓冲区偏移量错位分析与修复1.2.3.1 关键代码逻辑分析1.2.3.2 缓冲区偏移量错位原因具体分析1.错误发生过程关键两步2.灾难性后果1字节的偏移3.根本教训与解决方案1.2.3.3 修复方案1.方法一调整填充大小2.方法二改用二进制复制推荐1.2.4 成功实现反向Shell完整漏洞利用链验证1.2.4.1 编译与准备阶段1.2.4.2 攻击执行步骤1.2.5 安全启示欢迎❤️ 点赞 | 关注 | ⭐️ 收藏 | 评论1.修改缓冲区溢出利用脚本实战本例以Sync Breeze Enterprise这是一个文件管理同步软件为目标对其漏洞利用分析与修改并最终利用漏洞编号CVE-2017-14980。接上文在原始的漏洞利用脚本上修改了本测试的IP地址、端口、有效的返回地址并重新自定义了Shellcode来实现反向shell后就可以对.c文件进行再次编译.exe文件本文从这开始。1.2 测试编译后的漏洞利用exe文件1.2.1 设置调试断点测试.exe文件是否正确执行我们返回到刚才连接了SyncBreeze的Immuntiy调试器按CtrlG跳转到返回地址0x10090c83(JMP ESP)这个是刚刚payload设置的返回地址。在此处按F2设置断点用于捕获程序跳转到攻击代码的时刻。一旦在调试器中设置了断点可以让应用程序正常运行并尝试从Kali执行攻击。1.2.1.1 为什么要设置调试断点简单来说设置断点就像在程序的执行路径上设置一个“交通管制点”。它的目的是让程序在执行到某个你指定的、非常精确的位置时自动暂停下来。比喻解释电影暂停键程序像一部电影在播放。断点就是你按下的“暂停键”可以让你看清楚某一帧画面程序某一瞬间的状态。具体到本例在之前的漏洞利用场景中为什么要设置断点之前的步骤是填充了780个A。放置返回地址\x83\x0c\x09\x10对应0x10090c83这个地址包含一条JMP ESP指令。你希望程序执行流被劫持后准确地跳转到这个地址然后执行后面的shellcode。设置断点的目的就是为了验证“程序真的如我所料精准地跳转到我设定的0x10090c83这个地址了吗”如果没有断点程序会以极快的速度执行过去无论成功还是失败你都不知道中间具体发生了什么。1.2.1.2 界定执行成功与失败成功情况成功触发断点程序在0x10090c83处暂停EIP 寄存器当前执行地址正好显示这个值。这证明缓冲区溢出成功地址覆盖准确。你可以按F7/F8单步执行亲眼看到它执行JMP ESP然后滑入你的shellcode区域。失败情况正如你遇到的这个后面会说到程序没有在断点处暂停而是直接崩溃了。这立刻告诉你“事情没有按计划发生”。然后你检查崩溃时的EIP值0x9010090c发现它和你预期的地址很像但错位了。这直接、无可辩驳地证明了你的偏移量计算有误。1.2.2 运行漏洞利用.exe文件出错1.2.2.1 运行出错在Kali中使用Wine兼容层运行编译好的Windows可执行文件Wine允许在Linux系统上运行Windows程序出现意外结果程序未触发断点而是直接运行崩溃EIP寄存器被返回地址覆盖显示错误值0x9010090c而正确值0x10090c83。可以观察出偏移一个字节。上面的对比肉眼就可以看出来。1.2.2.2 原因分析偏移量计算错误预期 vs 实际对比项目预期值实际值差异分析EIP寄存器0x10090c830x9010090c字节错位1字节内存布局准确覆盖返回地址偏移1字节读取错误地址程序行为跳转到JMP ESP执行攻击代码执行无效地址导致崩溃关键发现返回地址的起始位置偏移了1字节导致CPU读取了错误的内存内容。根本原因缓冲区构造错误可能的原因字符串终止符问题C语言字符串自动添加\x00结尾填充计算错误初始缓冲区大小或填充计数有误内存对齐问题不同平台的内存对齐差异编译器优化交叉编译器对代码的隐式修改比喻想象在多米诺骨牌阵列中设置触发机关预期第780张骨牌倒下后正好触发机关实际第779张骨牌就触发了导致连锁反应错位结果是整个攻击序列未能精准执行调试观察要点观察项正常情况当前问题EIP值与JMP ESP地址匹配字节错位的相似值断点触发程序暂停在断点处断点未触发程序崩溃堆栈状态返回地址准确覆盖返回地址偏移1字节调整策略尝试将偏移量调整为779或781字节检查并确保返回地址不被任何额外字节干扰验证漏洞利用代码中的内存分配和复制操作最终结论虽然首次测试失败但通过分析EIP的错误值我们获得了关键的调试信息——偏移量计算存在1字节误差。这为后续修复提供了明确方向是漏洞开发过程中常见的调试和优化环节。1.2.3缓冲区偏移量错位分析与修复1.2.3.1关键代码逻辑分析分配780字节的内存空间。780是以字节为单位的偏移量用于覆盖堆栈上的返回地址并控制EIP寄存器。使用memset将内存分配填充为特定字符在本例子中是“0x41”即ASCII中“A”字符的十六进制表示。然后又一次调用memset它将分配中的最后一个字节设置为终止符NULL字节将缓冲区转换为字符串。为什么将缓冲区转换为字符串起初可能会感到困惑但是继续阅读代码我们会到达最终buffer被创建的行。代码作用隐藏问题char *buffer malloc(buffer_length);分配了一个动态内存块大小为 buffer_length并返回一个指向该内存块的指针buffer 将指向这个内存块。分配一定大小的内存memset(buffer, 0x00, buffer_length);将分配给 buffer 的内存空间初始化为0即用 0x00 填充。缓冲区内容用0填满strcpy(buffer, request_one);用 strcpy函数字符串复制函数 将 request_one 字符串追加复制到到 buffer 中直到遇到字符串结束符 \0 为止。把 request_one 字符串内容追加到buffer后在python上直接用strcat(buffer, content_length_string)用 strcat 将 content_length_string 追加到 buffer 的末尾继续把 content_length_string字符串的内容追加到buffer后strcat(buffer, ***)继续在buffer追加内容后续以此类推反复使用strcat追加偏移量计算错误从上面的代码顺序可以看到因为在C语言中字符串通常是以NULL字节0x00结尾的字符数组。例如字符串 Hello 的内存表示可能是H e l l o \0。这样在继续添加返回地址时cpu会忽略前面结尾的NULL字节0x00导致如下的结果预期偏移780个A后放置返回地址 实际偏移779个A 1个NULL 返回地址 结果返回地址**提前了1字节**EIP错位现象预期EIP0x10090c83 (返回地址: \x83\x0c\x09\x10) 实际EIP0x9010090c (错位1字节: \x0c\x09\x10\x90)原因CPU从错误的内存位置读取了4个字节作为返回地址。1.2.3.2缓冲区偏移量错位原因具体分析在C语言的世界里字符串是一个以\x00(NULL) 结尾的字符序列。像strcpy、strcat这样的函数都依赖这个NULL字节来自动判断字符串在哪里结束。然而在缓冲区溢出攻击中我们构造的攻击载荷是一个精确的二进制序列每个字节的位置都至关重要且载荷本身很可能就包含\x00字节。1.错误发生过程关键两步制造一个“字符串”char *padding malloc(780); // 分配780字节 memset(padding, 0x41, 780); // 全部填满 A (0x41) memset(padding 779, 0x00, 1); // 针对padding指向的内存块的最后一个字节即padding 779这个位置进行操作。详细说明padding 779是指padding 指针偏移了779个字节指向最后一个字节。memset(padding 779, 0x00, 1) 的意思是把该位置的字节设置为0x00即将最后一个字节修改为0。这样原本填充为 A 的内存块最后一个字节会被改为 0x00。至此padding在C语言看来就是一个“长度为779的有效字符串”779个A 1个结尾NULL。用“字符串逻辑”拼接二进制数据strcat(buffer, padding); // 拼接“填充字符串” strcat(buffer, retn); // 在其后拼接“返回地址”strcat会在buffer中寻找第一个NULL字节作为起点。由于padding的结尾就是NULL所以retn的地址数据会从buffer的第780字节处开始写入这就出现了偏移2.灾难性后果1字节的偏移预期布局实际布局[779个‘A‘][第780个‘A‘][返回地址]...[779个‘A‘][0x00][返回地址]...期望返回地址从第780个字节最后一个A之后开始覆盖。现实返回地址从第780个字节那个NULL字节开始覆盖。结果内存中的整个攻击载荷整体前移了1个字节。CPU尝试从错误的位置读取“返回地址”执行流彻底失控导致程序崩溃而非执行shellcode。3.根本教训与解决方案勿用字符串函数处理攻击载荷strcpy/strcat因NULL字节截断的特性是构造精确二进制攻击载荷的“天敌”。使用二进制安全函数应使用memcpy来精确控制字节的复制位置和长度它能忠实复制所有字节包括\x00。1.2.3.3修复方案1.方法一调整填充大小// 原代码 int initial_buffer_size 780; char *padding malloc(initial_buffer_size); memset(padding, 0x41, initial_buffer_size); memset(padding initial_buffer_size - 1, 0x00, 1);修改如下这样就实现了不偏离。2.方法二改用二进制复制推荐// 放弃字符串操作使用memcpy精确控制 char *buffer malloc(total_length); int offset 0; // 复制请求头 memcpy(buffer offset, request_one, strlen(request_one)); offset strlen(request_one); // 复制填充780个A无NULL memcpy(buffer offset, padding, 780); // padding是纯A无终止符 offset 780; // 复制返回地址 memcpy(buffer offset, \x83\x0c\x09\x10, 4); offset 4; // 复制shellcode memcpy(buffer offset, shellcode, shellcode_len);修复后验证修复后应能观察到断点正常触发程序在0x10090c83处暂停EIP正确覆盖EIP寄存器显示预期的返回地址程序流成功劫持顺利执行JMP ESP进入NOP滑道和shellcode1.2.4 成功实现反向Shell完整漏洞利用链验证1.2.4.1 编译与准备阶段修复偏移量后重新编译C代码生成独立的Windows可执行文件syncbreeze_exploit.exe无需依赖Windows开发环境完全在Kali中完成同时目标环境准备确保目标Windows机器运行Sync Breeze服务服务处于可被访问状态1.2.4.2 攻击执行步骤步骤操作工具目的① 监听准备在Kali上启动Netcat监听443端口nc -nlvp 443等待反向Shell连接② 启动攻击在另一个终端使用Wine运行漏洞利用wine syncbreeze_exploit.exe触发目标漏洞③ 漏洞触发利用程序发送恶意请求到目标服务定制化漏洞利用代码触发缓冲区溢出执行Shellcode④ Shell获取Netcat接收到连接并显示Shell提示符自动建立会话获得目标系统控制权①本地kali上的一个终端②本地kali上的另一个终端③等待漏洞触发④在①的终端上收到反向shell攻击流程图[Kali攻击机] ├── [终端1]Netcat监听 443端口 ←──┐ └── [终端2]执行漏洞利用程序 → [目标Windows] ↓ [触发缓冲区溢出] ↓ [执行Shellcode] ↓ [建立反向TCP连接到Kali] ↓ [Kali获得Shell控制]1.2.5安全启示防御建议及时更新修复已知漏洞尤其是公开的缓冲区溢出最小权限服务账户使用最低必要权限深度防御启用DEP、ASLR等内存保护机制网络监控检测异常连接如到攻击机的443端口攻击者视角的收获公开漏洞利用代码需要针对性修改才能实际使用精确调试是漏洞武器化的关键环节理解目标环境内存布局对攻击成功至关重要后续扩展方向Payload升级替换为Meterpreter等高级后门持久化机制添加自启动、服务安装等功能横向移动以此Shell为跳板探索内网其他目标清理痕迹添加日志清除、反取证功能最终结论通过系统的分析、精确的修改和专业的工具链整合我们成功将一个公开的C语言漏洞利用代码转化为能够实际攻击目标系统的武器并获得了反向Shell控制权限。这不仅验证了漏洞的存在也展示了从理论研究到实战应用的完整渗透测试流程。接下来有个很重要的核心问题将放在下一篇文章详细说明怎么知道指针跳到某个返回地址例如\xcb\x75\x52\x73上就可以执行我们的payload欢迎❤️ 点赞 | 关注 | ⭐️ 收藏 | 评论每一份支持都是我持续输出的光。感谢阅读下一篇文章见。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

微网站的链接怎么做的天津市建设与管理局网站下载

Metis时间序列异常检测:从入门到精通的完整指南 【免费下载链接】Metis Metis is a learnware platform in the field of AIOps. 项目地址: https://gitcode.com/gh_mirrors/me/Metis Metis作为AIOps领域的学件平台,通过智能化的时间序列异常检测…

张小明 2025/12/28 10:23:29 网站建设

湖北网站建设专家产品营销

GPU显存测试终极指南:用memtest_vulkan快速检测显卡稳定性 【免费下载链接】memtest_vulkan Vulkan compute tool for testing video memory stability 项目地址: https://gitcode.com/gh_mirrors/me/memtest_vulkan 你的显卡是否经常出现画面闪烁、游戏崩溃…

张小明 2025/12/25 8:25:49 网站建设

python做网站 jsp网站网站建设次年续费合同

AutoDock-Vina分子对接终极指南:快速解决PDBQT格式错误问题 【免费下载链接】AutoDock-Vina AutoDock Vina 项目地址: https://gitcode.com/gh_mirrors/au/AutoDock-Vina AutoDock-Vina分子对接是药物发现和生物化学研究中的重要工具,但许多用户在…

张小明 2025/12/25 8:23:48 网站建设

做盘石信用认证网站win7 网站建设

在现代编程中,解耦设计是一种重要的设计原则,特别是在处理大型项目或模块化开发时。Rust作为一门系统编程语言,支持丰富的类型系统和泛型特性,使得解耦设计变得更加简洁而强大。今天我们来探讨如何在Rust中实现函数回调以达到模块间解耦的目的。 什么是函数回调? 函数回…

张小明 2025/12/25 8:21:47 网站建设

苏州免费自助建站网站建设网站服务器有哪些种类

洛雪音乐六音音源修复完整指南:3步解决播放兼容问题 【免费下载链接】New_lxmusic_source 六音音源修复版 项目地址: https://gitcode.com/gh_mirrors/ne/New_lxmusic_source 还在为洛雪音乐升级后无法播放音乐而困扰吗?六音音源修复版为您提供完…

张小明 2025/12/25 8:19:45 网站建设

网站建设认准猪八戒网重庆工业网站建设

前言 💡 最近重装系统后发现重新配置前端开发环境太繁琐,于是写了个 PowerShell 自动化脚本, 可以在 Windows 系统 下,一键完成常用开发工具的安装与配置,让你重装系统后快速开工! ✨ 功能简介 这个脚本…

张小明 2025/12/25 8:17:44 网站建设