文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络技术网络安全软件漏洞及缓冲区溢出
精品推荐
特别推荐
·无线入侵的技术细节
·SQL注入和CSS攻击的检测
·详解:五种Windows常用密码设置
·浅析黑客攻击时的常用方法和攻击步骤
·不怕攻击 家庭上网必学八招安全绝招
·入门者如何获取肉鸡
·Linux安全配置步骤简述
·Wi-Fi网络安全探讨及组网策略
·网页病毒的概念
·保障您网站安全的十点技巧
·技巧:网上交易密码保护的几种窍门
·六个简单方法防止上网被钓鱼
·PING命令的小秘密
·安全第一 网络端口扫描技术介绍
·十大网络工具帮你审核网络安全
·信息安全问题需解决方案
·多角度详细解释网站安全保护方法
·端口截听实现端口隐藏,嗅叹与攻击
·用Win NT/2K 建WEB站点安全指南
·实现 Web 应用程序安全的捷径
热点TOP10
·解析远程控制带来的安全危险
·USB设备防止数据泄漏的三策略
·Wi-Fi网络安全探讨及组网策略
·认识映象劫持技术原理与解决办法
·详解嗅探原理与反嗅探技术
·ARP蜗牛 攻击堵塞局域网
·网络信息安全与保密的6个技术目标
·保障您网站安全的十点技巧
·360声明 千千静听存在安全漏洞
·技巧:网上交易密码保护的几种窍门
·六个简单方法防止上网被钓鱼
·PING命令的小秘密
·安全第一 网络端口扫描技术介绍
·十大网络工具帮你审核网络安全
·关注企业数据安全 十招防数据泄露
·用防火墙构筑起银行安全屏障
·360ARP防火墙v2.0.0.1005 正式版
·五大最著名入侵检测系统全面分析
·微软安全警告:Word用户面临危险
·“网警”提醒:警惕“U盘杀手”病毒

软件漏洞及缓冲区溢出

日期:2007年3月20日 作者: 查看:[大字体 中字体 小字体]



(3) 控制程序溢出,并控制程序流程
由于堆栈空间的不确定性,每次溢出时堆栈所处的地址都不一样,所以不能直接将返回值重定向到堆栈中,但是因为当前esp指向的是堆栈空间,并且该空间位于我们可控区域,这样,溢出以后可以先返回到一条"jmp esp"或"call esp"处,然后利用跳转指令来实现shellcode的定位。
一般来说,栈溢出的通用性与jmp esp指令的通用地址有关,很多语言版本的2000和XP都有通用的jmp esp地址,但是在英文版和韩文版的系统中暂时未发现。对于这两种语言版本的系统,可以有针对性的进行溢出。
注意区分可利用溢出与不可利用溢出。有些漏洞在溢出发生后程序会访问已经被更改的变量,会导致程序在没有返回以前出错,出现不可利用的情况。

3、 堆溢出的利用
现在堆溢出的漏洞也越来越多,对于堆溢出漏洞,没有一种比较固定的利用方法,比较流行的就是利用SEH来实现对堆溢出漏洞的利用。
堆管理结构是一种双向链表。结构如下:
//插入堆结构双向链表图
当堆溢出后,会覆盖堆管理结构,当系统释放或再次分配堆的时候,就会产生错误,这就是堆溢出。
堆溢出的利用方式一般有两种,一种是在堆回收时利用,一种是在下一个堆分配时利用。
在堆分配是利用:
mov [eax], ecx
mov [ecx+4], eax
其中eax,和ecx的值都可以控制。这样,实际上我们可以控制当前系统中任意一个4字节的值,利用这4个字节来进行利用。
利用这4个字节可以改写某个常用函数的导出表,或者改写SEH的链表节点,利用SEH的特性来进行利用。比较有效的利用方法就是利用SEH来进行利用。
JPEG 漏洞就属于堆溢出漏洞。根据分析,可以发现配合word使用的jpeg环境比较固定,也就是说溢出时的seh结构固定,并且esi指向原来的堆中,我们可控位置,这样,利用更改4个字节的功能将第一个SHE的处理函数改为一条call[esi+48]指令。因为在进入异常处理后所有的寄存器都会改变,而 [esp+48]时原来的esi的值。
堆溢出比较灵活,利用方法很多,但是能够通用的比较少,受限制条件比较多。
参考资料:
http://www.w00w00.org/files/articles/heaptut.txt
四、 如何编写shellcode
1、 根据自己的需要编写shellcode
根据需求编写shellcode。比如说下载木马执行,绑定木马执行,返回一个shell,上传木马执行等。
2、 用win32汇编编写shelcode
现在一般都采用Win32汇编或者C语言编写shellcode.使用汇编语言编写shellcode比较简单,同时对编译器的编译行为也比较容易把握,汇编编译器一般尊重源程序,不会进行太多的优化。
首先,Shellocde涉及到一个代码自定位的问题。在x86体系中程序执行时,对数据段的访问默认使用绝对寻址方式,也就是说在我们编写shellcode时的数据地址在其他系统中使用时要通过其他的方法来进行定位。
通过下面的语句可以定位当前的shellcode所处的位置:
call @F
@@:
pop ebx
sub ebx, offset @B
其中offset @B是编译时就已经固化的一个地址,当访问数据时,就使用:[ebx + _testData]这种形式。其中,testData也是一个编译时固化的地址。
其次就是在shellcode中确定当前系统的kernel32.dll地址。然后再到kernel32.dll导出表中去寻找我们所需要的函数地址。
定位kernel32.dll地址的方法很多,最有效的一种就是利用当前进程的TEB/PEB定位,还有一种就是程序自己搜索进程空间,找到shellcode的起始地址。
;获得Kernel32.dll起始地址
assume fs:nothing
mov eax, fs:30h
mov eax, [eax + 0ch]
mov esi, [eax + 1ch]
lodsd
mov edx, [eax + 8h] ;edx 就是kernel32.dll的地址
mov @hModule, edx
获得GetProcAddress和LoadLibrary,GetModuleHandle函数地址。
在取得kernel32.dll起始地址后,可以通过搜索dll导出表的方法获得函数地址。
shellcode具体写法参考实例。

3、 从程序中提取Shellcode
shellcode编写好以后,还得将其从程序中倒出来,经过编码,最后才能使用到溢出程序中。
这里要注意的一点就是有些漏洞对shellcode有特殊的要求,比如不能有0,不能有0xff,等等。这时候就要先将shellcode编码成满足需求的代码,然后专门写一段解码程序添加到shellcode的前面,在溢出后先执行解码程序,将shellcode解码成为正常的指令,然后执行。

4、 编写sehllcode时的注意事项
在编写shellcode时,由于溢出的原因,堆栈空间已经被破坏,这时候必须保证堆栈空间是以4字节对齐,否则在调用某些函数时会有莫名其妙的错误。
其次就是要为shellcode中使用的局部变量预留足够的空间。
http://www.phrack.org/show.php?p=62&a=7

上一页 [1] [2] [3] [4] 下一页 




上一篇:phpwind1.3.6论坛利用程序

下一篇:世界上最好的磁盘碎片整理工具原版+汉化+注册机

软件漏洞及缓冲区溢出 相关文章:
·Windows系统漏洞修复软件大比拼
·利用硬盘序列号计算软件注册码
·用VB制作RM压缩软件
·年终特稿:乱世2006年中国共享软件
·EasyRecovery 604硬盘数据恢复软件技巧
·金山WPS新品正式定名 办公软件市场上演龙虎斗[图]
·俄罗斯杀毒软件大蜘蛛登陆中国
·桌面革命 360Desktop软件扩展视野
·Mac OS X操作系统爆漏洞 可致密码泄露
·微软杀软删除200万台PC上密码盗取软件
软件漏洞及缓冲区溢出 相关软件:
·零起点教你如何破解软件和制作注册机 and 视频+程序
·塑料模具手册软件
·WisMencoder(视频压缩、转换软件)V1.99 正式版
·整形模拟软件_非常face V1.0
·大众翻译软件(时代翻译通)V7.0
·光华系统漏洞修护工具 V06.08
·江民光标漏洞蠕虫专杀工具 V1.0
·江民杀毒软件KV2007下载版 V10.00.600 30天免费
·爱数加密软件 V2006 标准版
·flv格式转3gp格式专用软件(微视转码工具)

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.com All Rights Reserved. 鄂ICP备05000083号Powered by:vipcn