- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2011 年第1 期
栈溢出攻击原理及编写ShellCode
几个月前笔者曾经为一个网站写过一个服务器端程序,程序的大体作用是监听一个端
口,客户端通过 socket 向服务器端发送数据报,服务器端收到数据报后为每一个客户端启
动一个线程并处理客户端请求。当时笔者还没有接触到缓冲区溢出的概念,并不知道溢出为
何物,后来学习了溢出方面的知识才发现那个程序里面存在一个严重的栈溢出漏洞。于是把
那个程序加以修改,写一篇栈溢出方面的文章分享一下自己的学习经验。缓冲区溢出方面的
文章黑防以前的几期上也有,但很少讲到如何去写自己的 ShellCode,这篇文章将分为以下
两个部分,一是栈溢出攻击的原理和思路,二是如何去写自己的 ShellCode。文章所附带的
源代码用VC6.0 编译通过,另外要用到反汇编工具OllyDBG,PE 文件分析工具ExeScope ,
这些工具可以去网上下载。
应用程序运行原理
这一节里将会讲一些 C 语言代码映射到二进制代码的细节,这些知识是理解栈溢出的
基础。应用程序的内存被划分为三个部分:代码区,数据区,堆栈区。程序中定义的全局变
量以及字符串编译后运行时被放在了数据区中,局部变量放在了栈中,代码放在代码段中,
这三个部分在内存中是独立存放的。变量存取的操作就被映射为对这些地址的及对堆栈的操
作。先看下面一个很简单的C++代码: 处
#include iostream.h void main()
线
#include windows.h {
出
void test(char *q) char *p = This is test!;
防
{ 明
char buf[20]; test(p);
客
strcpy(buf , q); 注 return;
黑return; }
} 请
程序在被windows 加载时首先初始化数据区的内容,也就是在数据区中为字符串”This is
test!” 申请空间并赋值。然后做一些进入main 函数之前的预处理工作,包括初始化异常处理
载
函数的地址等。做完这些才进入main 函数执行自己的代码。第一句代码包含了以下内容:
在栈中为变量p 申请一个4 个字节的内存(windowsXP 中地址为32 位,也就是4 个字节,
所以任何一种类型的指针都占4 个字节),并把字符串”This is test!” 的地址赋值到这块内存
转
中。第二句调用函数时首先把变量p 的值,也就是字符串”This is test!” 的地址压入到栈中,
然后把test(p)下一句代码的地址(函数执行完后的返回地址)压入栈中,然后转到test 函数
开始执行。进入test 后变量q 中存放的是数据区中字符串”This is test!” 的地址,test 函数的
第一句话为在栈中申请一个20 个字节的空间,第二句为把数据区中的字符串复制到栈中。
复制完后会从栈中弹出刚才压到栈里的返回地址,并转到该地址继续执行主函数。
程序识别一个字符串时是以字符’\0’为结束标志,也就是说虽然字符串”This is test!”只有
13 个字符,但它其实占了14 个字节,’!’后面有一个空字符’\0’。当用strcpy 复制字符串时,
它并不去检查buf 这个缓冲区有几个字节,而是当遇到源字符串的结尾标志时才结束复制。
假如这个程序中的buf 数组共有 10 个元素,当进行复制时就会出现缓冲
您可能关注的文档
- 邹城市直部门组织力量入企督帮.PDF
- 新华龙电子有限公司.PDF
- 【步步高】广东省2017中考政治总复习 第十一单元 科教兴国战略课本.ppt
- 新中标餐企今天报备区教育局.PDF
- 液相色谱-串联质谱技术在食品药品安全分析领域的应用.PDF
- 永洪科技产品6.1.PDF
- 游戏制作学堂说明.PDF
- 游泳池排污管道维修改造工程项目.doc
- 有孕妇提前生.PDF
- 【步步高】广东省2017中考政治总复习 第四单元 人际交往(第1课时)课本.ppt
- 2024浙江衢州市常山县“英才荟”事业单位紧缺急需人才招聘18人笔试备考试题及答案解析.docx
- 2024浙江省近海海洋工程环境与生态安全重点实验室招聘1人笔试备考试题及答案解析.docx
- 2024广东阳江市阳西县补充招聘森林消防应急队员5人笔试备考试题及答案解析.docx
- 2024浙江松阳县新华书店有限公司招聘见习大学生1人笔试备考试题及答案解析.docx
- 2024云南曲靖市马龙区部分事业单位选调(含选调计划)26人笔试备考试题及答案解析.docx
- 2024广西柳州市残疾人劳动就业服务中心招聘残疾人专职委员1人笔试备考试题及答案解析.docx
- 2024广西河池市总工会公开招聘社会化工会工作者3人笔试备考试题及答案解析.docx
- 2024贵州华贵人寿保险股份有限公司第三次社会招聘15人笔试备考试题及答案解析.docx
- 2024广西百色市田东县5月城镇公益性岗位工作人员招聘4人笔试备考试题及答案解析.docx
- 2024广西百色市那坡县坡荷乡人民政府公开招聘编外工作人员2人笔试备考试题及答案解析.docx
1亿VIP精品文档
相关文档
最近下载
- 山东省2024年高三一轮模拟数学试题.docx VIP
- MAZAK车床编程.pdf
- YZ∕T 0172-2020 无人机快递投递服务规范.pdf
- Unit 2 Lesson 4 Again, please!(课件)鲁科版(五四学制)英语四年级下册.pptx
- 初中物理作业分层设计的探索和思考-模板.docx VIP
- 2023年江苏省小学科学实验知识竞赛题汇编.docx
- 5-全国地下水调查技术要求技术要求地下水系统划分导则GWI-A5(11.17.pdf VIP
- 2024年江苏省小学科学实验知识竞赛题汇编.docx
- 2023年四川成都中考试题数学及答案.pdf VIP
- 二年级(2)班学模范做榜样主题班会.pptx
文档评论(0)