存档

‘缓冲区溢出’ 分类的存档

[CVE-2012-4792]IE 0DAY – CDwnBindInfo Object Use-After-Free Vulnerability

2012年12月30日 没有评论

年末新一波IE0day来袭。国外安全公司报道捕获了一个新的IE 0DAY攻击,该IE 0DAY攻击确认影响全补丁的IE8,可能影响其他版本的IE。IE用户请先使用Google Chrome、Firefox等非IE浏览器,避免潜在的威胁。也可安装腾讯电脑管家,可有效拦截浏览器堆喷射HeapSpray)攻击代码。
Metasploit已经发布exploit利用模块,用户可以“Framework Update”更新批处理(C:\metasploit\dev_msfupdate.bat)获取名为ie_[......]

继续阅读

实战HeapSpray之CVE2012-1889 Exploit编写(三)

2012年12月29日 3 条评论

接前面两篇文章《实战HeapSpray之CVE2012-1889 Exploit编写(一)》,《实战HeapSpray之CVE2012-1889 Exploit编写(二)》,本文讲介绍IE8下HeapSpray注意点以及XP下IE8 Exploit开发过程。
ROP技术简介
溢出攻击的根源在于现代计算机对数据和代码没有明确的区分这一先天缺陷,而DEP(数据执行保护,Data Execution Prevention)就是用来弥补计算机对数据和代码混淆这一天然缺陷的。DEP的基本原理是将数据所在的[......]

继续阅读

实战HeapSpray之CVE2012-1889 Exploit编写(二)

2012年12月11日 2 条评论

接上一篇文章《实战HeapSpray之CVE2012-1889 Exploit编写(一)》,本文讲介绍HeapSpray技术以及XP下IE6 / IE7 Exploit开发过程。
HeapSpray技术介绍
HeapSpray即堆喷射,本身并不是一门新的利用技术,最早的文档是由Skylined在很久之前记录的。通过Wikipedia可以知道最早使用HeapSpray技术是在2001年(MS01-033)。2004年,Skylined在IE的IFrame漏洞(MS04-040)利用程序中使用到这种[......]

继续阅读

实战HeapSpray之CVE2012-1889 Exploit编写(一)

2012年12月9日 2 条评论

业余花了点时间学习了堆喷射技术,集合自己的分析,还是决定发到博客上来分享一下,我会尽可能详细的描述整个过程(同时,由于细节描述的多,文章无法写成一篇),整个过程基于CVE2012-1889(MS12-043)进行,边学边写Exploit,最终完成XP下IE6 / IE7 / IE8下Exploit的开发(如有可能,将进一步编写Win7下的Exploit),中间会涉及到堆喷射的介绍、ROP绕过DEP、精确堆喷射,注意我们不关心漏洞本身的细节。
文章的编写参考了网上许多文章,在此先表示感谢,链接会在[......]

继续阅读

[译]各种IE版本下的堆喷射技术

2012年11月30日 3 条评论

最近我在学习为一些古老的漏洞编写exploit,以使得它们能够在Windows 7 + IE9下正常运行。之前在利用漏洞的时候我的PoC都一直是在Windows XP + IE6下测试的,仅仅是为了确定它们确实可以正常工作,而不用担心在以后的版本中的问题。在这篇文章中我仅仅是分享一些基本信息,这对第一次编写/理解exploit的人来说应该非常有帮助,同时尽可能使得这些信息简单易懂并且不考虑性能和精确性。在之前的exploit中,当在IE6下测试的时候我使用了如下的Heap Spray(堆喷射)代[......]

继续阅读

ShellCode常用的GetPC方法

2012年11月24日 1 条评论

GetPC,也即Get Program Counter,取得程序计数器的值,在x86下就是GetEIP了,其作用是在进程的内存空间中得到当前的EIP的值,通常用于需要对代码自身进行操作的场合下,比如自解码和自修改代码(更一般的来说常见于病毒、溢出攻击代码等,也称之为代码重定位技术)。因为在x86下无法直接操作EIP寄存器,所以需要一些特殊的方法来获取EIP寄存器的值。
1. CALL GetPC
最简单的GetPC方法是使用call指令,之前的文章有提到过(http://www.programl[......]

继续阅读

一个字节毁掉一段ShellCode

2012年11月20日 6 条评论

暂时告别了一段忙碌的生活,博客还是得打理一下……今天在测试一个FTP服务器程序时,发现仅仅一位一个特殊的字节而破坏了整段ShellCode,调了好久才找到原因,就想写篇博客记录下,顺便感慨下调试的不易。

场景:已经写好了一个Exploit针对此FTP服务器程序并成功绑定一个TCP Shell,现在需要替换为download_exec(下载并执行)ShellCode,于是使用Metasploit生成了一段download_exec的ShellCode,URL为http://localhost/test.exe,可是测试的时候被测程序总是悄然退出,用Ollydbg附加、在0x7FFA4512(jmp esp 是我用来做跳转的)处下硬件执行短点,再次出发溢出条件,发现ShellCode全然面目全非了:[......]

Win32 bind port shellcode(4444 tcp) 399 bytes

2012年10月27日 5 条评论

Win32 bind port shellcode(4444 tcp) 399 bytes,验证可用,执行后通过telnet到目标机器4444端口即可。以下代码请谨慎执行,测试完注意关闭端口!!!

另外,对于一些需要网络发送数据的场景,可能要求数据中不得函数NULL字符(0×00),下面的代码是NULL Free的,其中的代码重定位(GetPC)使用了浮点指令集:

00C67000 D9 EE fldz
00C67002 D9 74 24 F4 fnstenv [esp-0Ch]
00C67006 5B pop ebx
测试漏洞利用的时候,总是不成功,调试发现fldz/fnstenv指令会破坏栈顶数据,所以建议在ShellCode前填充适当的NOP指令。[......]

ShellCode测试代码

2011年7月5日 5 条评论

ShellCode弄好不知道有没有效?简单测一下吧(只能简单测试,不能保证成功利用漏洞,因为有些ShellCode加入被利用程序只会就会改变)
可以先把Shellcode的偏移地址存入EAX寄存器,这个通过lea指令实现,然后pop之后ret就OK了。(call eax也可以吧)

#include <stdio.h>
 
unsigned char shellcode[] = {
// Windows 2000, Windows 2003, W[......]

继续阅读

分类: 缓冲区溢出 标签: ,

ISCC2011基础关-小明的程序

2011年6月10日 没有评论

题目描述:
一年级的小明编写生成了一个小程序用来保存很少用但又怕忘记的博客密码,同时为了防止别人轻易获得,他“隐藏”了密码,需要时只需通过简单的溢出就能重获密码,小明的程序和一段残缺的调用代码都在附件里,你能获得密码吗?
附上小明的程序的“部分代码”,帮助你补写出完整的调用代码:

void Function1(void) ;
void Function2(void) ;
typedef void (*PF)(void) ;
int[......]

继续阅读