网络安全参考 | UNIX参考 | GPS参考 | 无线参考 | 在线手册 | OSBUG.ORG | SUNNY-NETWORK.COM
网站地图 RSS订阅
高级搜索 收藏本站
Home | 业界动态 | 防火墙 | IDS/IPS | VPN | PKI | Honeypot | Hacker/Intruder | 黑客技术 | 破解技术 | 加密技术 | 病毒防护 | 木马 | 反垃圾邮件 | 反流氓软件 | 漏洞 | 无线安全 | UNIX | Windows | 安全编程 | 安全软件 | TPM/TCG | 数据恢复 | 企业信息安全 | 个人信息安全
 当前位置: Home > 黑客技术 > 文章  
黑客经典教程之缓冲区溢出解密(一)
文章来源: 赛迪网 文章作者: 丁丁 发布时间: 2006-09-12   字体: [ ]
 

  如果我们用符号表示堆栈:

0xBFFFFFFF ---------------------
           |                   |
           |        .          |
           |        .          |
           |        .          |
           |        .          |
           |       etc         |
           | env/argv pointer. |
           |       argc        |
           |-------------------|
           |                   |
           |      stack        |
           |                   |
           |        |          |
           |        |          |
           |        V          |
           /                   /
           \                   \
           |                   |
           |        ^          |
           |        |          |
           |        |          |
           |                   |
           |       heap        |
           |-------------------|
           |        bss        |
           |-------------------|
           | initialized data  |
           |-------------------|
           |       text        |
           |-------------------|
           | shared libraries  |
           |        etc.       |
0x8000000  |-------------------|


			_* STACK *_

  堆栈在基本术语里面是一个数据结构,你们都可以从你们的数据结构课程记起来。它有同样的基本操作。它是一个LIFO(后进,先出)的数据结构。它的处理过程通过一些特殊的指令象PUSH和POP由CPU直接控制。你PUSH一些数据到堆栈里面,又POP一些其它的数据。不论谁最后到,它将是最先出来的那个。因此,用专业术语说,第一个将被从堆栈中推出来的是最后一个被推进去的。

  在CPU中注册的SP(堆栈指针)包括将要从堆栈中推出来的数据地址。不论SP指向最后的数据还是堆栈中最后数据的后面数据是CPU-specific的;然而,我们的目标ix86结构,SP指向堆栈中最后数据的地址。在ix86保护模式(32位/双字)下,PUSH和POP指令在4字节单元中完成。在这里要说的另外一个重要的细节是堆栈向下增长,也就是,如果SP是0xFF,执行 PUSH EAX指令后,SP将变成0xFC并且EAX的值将被放到0xFC地址里。

  PUSH指令将从ESP(回顾一下上面的图)中减去4个字节,并且将推入一个双字到堆栈,放置双字到ESP寄存器所指的地址中。另一方面,POP指令,读取ESP寄存器中的地址,POP掉堆栈地址所指的值,并且加4到ESP(加4到ESP寄存器中的地址)。假设ESP初始化为0x1000,让我们观察下面的汇编代码:

PUSH dword1	;value at dword1: 1, ESP's value: 0xFFC (0x1000 - 4)
PUSH dword2	;value at dword2: 2, ESP's value: 0xFF8 (0xFFC - 4)
PUSH dword3	;value at dword3: 3, ESP's value: 0xFF4 (0xFF8 - 4)
POP EAX	;EAX' value 3, ESP's value: 0xFF8 (0xFF4 + 4)
POP EBX	;EBX's value 2, ESP's value: 0xFFC (0xFF8 + 4)
POP ECX	;ECX's value 1, ESP's value: 0x1000 (0xFFC + 4)

  当堆栈被用做动态变量的临时存储的时候,它被用来存储一些调用存储临时变量函数的地址和在函数间传递参数。而且,当然,这也是邪恶的来场。

 
推荐文章
·骇客学堂:灰鸽子VIP2006终极免
·黑客攻破SQL服务器系统的十种方
·黑客的攻击:WEB入侵的过程
·Web环境下SQL注入攻击的检测与防
·黑客经典教程之理解地址解析协议
·黑客经典教程之缓冲区溢出解密(
·黑客基础内容:21种RING的提权方
·网络孙子兵法!黑客攻防也有三十
·黑客攻击常见方法及安全策略制订
·黑客技巧 使用Google黑掉Windows
 

 
共3页: 上一页 [1] 2 [3] 下一页
↑返回顶部   打印本页   关闭窗口↓  

Google
 
Web oldhand.org unixreference.net meshmea.org
热点文章
·黑客基础内容 DOS常见命
·攻防秘技:彻底防范网络
·黑客教程:黑客入侵个人
·很多人的Hack经历第一次
·黑客基础内容 IPC$空连
·黑客经典教程之理解地址
·黑客技巧 使用Google黑
·黑客攻击常见方法及安全
相关分类
相关文章
·黑客经典教程之缓冲区溢
·黑客经典教程之理解地址
·菜鸟都学会 十三步简单
·骇客学堂:跨站攻击偷取
·黑客的攻击:WEB入侵的
·黑客攻破SQL服务器系统
·黑客新人必学的网站入侵
·攻防秘技:彻底防范网络
更多...
 
 

Copyright(c) 2001-2008 OLDHAND ORGANIZATION, All Rights reserved.
Power by DedeCms 织梦内容管理系统
$Id: article_article.html,v 1.3 2007/02/10 12:00:37 yjs Exp $