- 1、本文档共149页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
安全程序设计
安全程序设计 现实中的一些安全问题 现实中的一些安全问题 我的 口令就是我的用户名后加上123 现实中的一些安全问题 我的 口令就是我的用户名后加上123 现实中的一些安全问题 Why Security is Harder than it Looks 所有软件都是有错的 通常情况下99.99%无错的程序很少会出问题 同安全相关的99.99%无错的程序可以确信会被人利用那0.01%的错误 0.01%安全问题等于100%的失败 从几个程序谈起 Burning yourself with malicious data 程序运行平台 Redhat Linux 8.0 Kernel 2.4.18 GNU gcc 3.2 第一个程序 运行情况 运行情况 运行情况 检查一下程序 进一步思考…… 几个要点 Linux及其它几乎所有Intel x86系统、Solaris, etc 分页式存储管理 平面内存结构,4GB或更大逻辑地址空间 栈从下往上生长 C语言不进行边界检查 进程内存布局 调用SayHello之前的栈 进入SayHello后的栈 准备退出SayHello的栈(情况1) 准备退出SayHello的栈(情况2) 如果精心选择数据……... 如果精心选择数据……... 如果精心选择数据……... 如果精心选择数据……... 如何选择这些数据? 几个问题: SayHello函数局部变量区大小? 如何选择这些数据? 几个问题: SayHello函数局部变量区大小? NNNNNNNN如何确定? 如何选择这些数据? 几个问题: SayHello函数局部变量区大小? NNNNNNNN如何确定? Our codes该怎样写 如何选择这些数据? 几个问题: SayHello函数局部变量区大小? NNNNNNNN如何确定? Our codes该怎样写 输入缓冲区不能包含0 局部变量区问题 局部变量区问题 代码起始地址如何确定? 代码起始地址如何确定 问题已转化为用ESP加上某一偏移 代码起始地址如何确定 问题已转化为用ESP加上某一偏移 该偏移不需要精确 为什么偏移不需要精确? 代码起始地址如何确定 问题已转化为用ESP加上某一偏移 该偏移不需要精确 ESP如何确定呢 代码起始地址如何确定 问题已转化为用ESP加上某一偏移 该偏移不需要精确 ESP如何确定呢 用同样选项,插入一段代码,重新编译 代码起始地址如何确定 问题已转化为用ESP加上某一偏移 该偏移不需要精确 ESP如何确定呢 用同样选项,插入一段代码,重新编译 使用调试工具跟踪应用程序 代码起始地址如何确定 问题已转化为用ESP加上某一偏移 该偏移不需要精确 ESP如何确定呢 用同样选项,插入一段代码,重新编译 使用调试工具跟踪应用程序 编一小程序,打印出运行时栈顶位置 代码起始地址如何确定 问题已转化为用ESP加上某一偏移 该偏移不需要精确 ESP如何确定呢 用同样选项,插入一段代码,重新编译 使用调试工具跟踪应用程序 编一小程序,打印出运行时栈顶位置 在同样环境下,不同进程之间栈位置距离不会太远 植入代码如何编写 植入代码如何编写 植入代码如何编写 植入代码如何编写 植入代码如何编写 植入代码如何编写 植入代码如何编写 植入代码如何编写 植入代码如何编写 植入代码如何编写 植入代码如何编写 植入代码如何编写 植入代码二进制格式 植入代码自测试程序(1) 植入代码自测试程序(2) 植入代码自测试程序(3) 植入代码自测试程序(3) 完整的攻击hello的程序(1) 完整的攻击hello的程序(2) 完整的攻击hello的程序(3) 完整的攻击hello的程序(4) 完整的攻击hello的程序(4) 完整的攻击hello的程序(4) 完整的攻击hello的程序(5) 完整的攻击hello的程序(5) 完整的攻击hello的程序(5) 完整的攻击hello的程序(5) 得出的结论 一个程序当没有很好地检查边界条件时可能会受到缓冲区溢出攻击。 有缓冲区溢出漏洞的程序当它能以特权用户身份运行时,可能让普通用户无需经过认证就可以获得系统特权。 root exploit Remote root exploit 通过网络,不需认证即可获得root权限 Local root exploit 本地普通用户,利用系统程序的漏洞获得root权限 哪些程序将以特权用户身份运行 网络服务程序 HTTP Server、FTP Server、Mail Server, etc syslog Trojian木马程序 suid/sgid程序 suid/sgid程序 Unix一项特殊技术,使普通用户也能做只有超级用户才能执行的任务 passwd、at、cron
文档评论(0)