格式化字符串漏洞.pdf

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
格式化字符串漏洞

实验2 格式化字符串漏洞 中国科学技术大学计算机学院 曾凡平 实验环境 • ubuntu Linux虚拟机 – 特别注意: – 不同版本的ubuntu系统(如9.x和14.x)和不同版本 的gcc编译出来的可执行文件在内存分配上有细 微的差异,本实验的结果是在ubuntu14下得到 的。 – 如果是其它版本的系统,需要修改格式化字符 串中的格式字符( 以%开头的串,如%08x、%n、 %s)的个数。 实验2 格式化字符串漏洞 2 1、格式化字符串攻击原理 Linux IA32下的进程映像 低地址 高地址 .text .data .bss Heap 未使用 Stack 环境 • 其中: • ——堆(Heap) :用于在程序中进行动态内存申请, 如常用的malloc/new 函数。 • ——栈(Stack) :函数中的局部变量以及在函数调 用过程中产生的临时变量等。 实验2 格式化字符串漏洞 3 printf()调用过程 • 以下面代码为例: • printf(A is %d and is at %08x, B is %u and is at %08x.\n,A,A,B,B) • 参量被逆序压栈,最后是格式化字符串的地址, printf()每次遍历格式化字符串中的一个字符,如 果该字符不是格式化参数的首字符 (由百分号指 定),则复制输入该字符,若遇到一个格式化参 数,就采取相应的动作,将栈中的变量pop() ,与 该参数对应。栈指针下移。 • 重点:若格式化参数个数参量个数,printf()会从 栈的当前指针开始,依次向下打印。 实验2 格式化字符串漏洞 4 printf(A is %d and is at %08x, B is %u and is at %08x.\n,A,A,B,B) 格式化字符串的地址 • 常用的格式化字符有: A 的值 • —%s :打印地址对应的字 符串 A 的地址 • —%n :对该printf()前面已 B的值 输出的字符计数,将数值 B的地址 存入当前栈指针指向的栈 单元存储的地址中。 . • —%m.nx :十六进制打印, . 宽度为m ,精度为n ,在m . 前加0处理为左对齐。 栈底 实验2 格式化字符串漏洞 5 攻击原理 • 格式化字符串攻击原理是利用格式化函数 (如 printf() )的沿着堆栈指针向

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档