缓冲区溢出教程(王炜)_第1页
缓冲区溢出教程(王炜)_第2页
缓冲区溢出教程(王炜)_第3页
缓冲区溢出教程(王炜)_第4页
缓冲区溢出教程(王炜)_第5页
已阅读5页,还剩346页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

对于大部分想要利用缓冲区溢出的人来说,jmpesp就再熟悉不过了,我最近发现网上将如何如何利用它的人太多太多,可是就是没人告诉在shellcode中到底jmpesp的地址在哪,有些直接给除了它的地址可是由于jmpesp随系统的不同地址也不同,有可能别人能用,你拷下就没办法,于是,我便贴出下面一个实用程序,方便大家,而且值得一提的是如果将程序稍加修改,便可以查找任何机器码所对应汇编代码的地址。注意,文中以ntdll.dll里查找,有可能在ntdll.dll中找不到ffe4(jmpesp的机器码),你可以尝试其他dll,最好是常驻内存的,至于为啥,呵呵,想必大家都知道吧。

源码:#include<windows.h>

#include<iostream.h>#include<tchar.h>

intmain()

{

intnRetCode=0;

boolwe_load_it=false;

HINSTANCEh;

TCHARdllname[]=_T("ntdll");

h=GetModuleHandle(dllname);

if(h==NULL)

{h=LoadLibrary(dllname);

if(h==NULL)

{cout<<"ERRORLOADINGDLL:"<<dllname<<endl;

return1;

}

we_load_it=true;

}

BYTE*ptr=(BYTE*)h;

booldone=false;

for(inty=0;!done;y++)

{try

{

if(ptr[y]==0xFF&&ptr[y+1]==0xE4)

{intpos=(int)ptr+y;

cout<<"OPCODEfoundat0x"<<hex<<pos<<endl;}}

catch(...)

{

cout<<"ENDOF"<<dllname<<"MEMORYREACHED"<<endl;

done=true;

}

}

if(we_load_it)

FreeLibrary(h);

returnnRetCode;}

作者简介主要角色简介阅读指南1.1

梦,已经展开1.2

啤酒和杯子――缓冲区溢出原理1.3

神秘的Windows系统1.3.1

溢出例子――报错对话框1.3.2堆栈和溢出1.3.3溢出报错的原因分析1.4ShellCode编写简介1.5窥豹一斑――本地缓冲区溢出简单利用1.5.1ShellCode的定位1.5.2成功构造利用1.6小结——摘自小强的日记1.7首次实战――FoxMail溢出漏洞编写1.7.1漏洞公告的分析1.7.2美妙定位溢出点1.7.3ShellCode的使用1.8牛刀小试――Printer溢出漏洞编写1.8.1漏洞背景1.8.2构造利用1.9JMP/CALLEBX——另一种溢出利用方式1.9.1Windows异常处理链表1.9.2炫?——覆盖异常1.9.3轻松把JMPESP改写为JMPEBX1.9.4用SoftICE寻找异常点位置1.9.5最后一击——构造利用1.10拾阶而上——IDA/IDQ溢出漏洞编写1.10.1漏洞公告1.10.2初步利用1.10.3宽字符课后解惑2.1ShellCode是什么?2.2简单的例子——编写控制台窗口的ShellCode2.2.1打开控制台窗口的C程序2.2.2查看函数的地址2.2.3Windows下的函数调用原理2.2.4汇编和机器码——真正ShellCode的生成2.3ShellCode通用性的初步分析2.3.1刚才代码的不足2.3.2通用性的初步探索2.4弹出Windows对话框ShellCode的编写2.4.1C程序解释2.4.2生成汇编和ShellCode2.5添加用户ShellCode的编写2.5.1小强的日记之二——添加用户ShellCode的编写2.5.2小强的日记之三——添加用户的另一种方法课后解惑3.1预备知识3.1.1IP和Socket编程初步3.1.2进程间通信及管道3.2后门总体思路3.3Telnet后门的高级语言实现3.3.1双管道后门的实现3.3.2单管道后门的实现3.4生成ShellCode3.4.1转换成汇编3.4.2看谁抄得快——提取ShellCode3.4.3验证ShellCode功能的方法3.5进一步的探讨3.5.1更简单的办法——零管道后门3.5.2正向连接和反向连接3.6反连后门ShellCode的编写3.6.1总体思路和实现3.6.2从神话到史诗——《特洛依》课后解惑4.1堆溢出初探4.2RtlAllcoateHeap的失误4.2.1有问题的例子4.2.2堆溢出点的定位4.2.3ShellCode的特殊要求4.2.4跳转到ShellCode4.2.5覆盖默认异常处理4.2.6定位的改进——call[esi+0x4c]4.3实例——Message堆溢出漏洞的利用4.3.1溢出点的定位4.3.2通用和编码ShellCode初接触4.3.3跳转和构造4.4RtlFreeHeap的失误4.4.1有问题的程序4.4.2Windows堆块的管理结构4.4.3what→where4.4.4构造和利用4.5堆溢出的其他利用方式4.5.1覆盖PEB4.5.2覆盖Vector异常句柄4.5.3其他方法4.6实例——JPEG处理堆溢出漏洞的利用4.6.1漏洞的起因4.6.2构造的特殊性4.6.3完美的利用4.7《月光宝盒》课后解惑5.1为什么要编码5.1.1Exploit失败原因分析5.1.2ShellCode编码的用处5.2简单的编码——异或大法5.2.1原理——异或不变5.2.2编码——异或975.2.3解码——decode程序5.2.4实例——异或DOS窗口程序5.2.5所长所短5.3简便的变形——微调法5.3.1变形的原理5.3.2完善的DOS窗口程序5.4直接替换法5.4.1替换的思想5.4.2编码C程序5.4.3解码汇编5.4.4直接替换DOS窗口程序5.4.5直接替换法的优缺点5.5字符拆分法5.5.1方法一Z=A+B5.5.2方法二0xAB=0xA*0x10+0xB5.5.3实际运用——WebDav漏洞编写5.6内存搜索法5.6.1搜索的原因——长度限制5.6.2搜索的原理——查找标志5.7搜索实例——Serv_U漏洞的利用5.7.1利用Ollydbg定位溢出点5.7.2XP下SEH的利用5.7.3跨过长度限制——搜索5.8“计算与你同行”——Computing&Society课后解惑6.1通用ShellCode的编写6.1.1思路——动态定位函数的地址6.1.2方法一、野蛮的暴力搜索6.1.3方法二、PEB获取GetProcAddrees函数地址6.1.4通用ShellCode的编写——监听后门6.1.5方法三、SEH获得kernel基址6.1.6HASH法查找所函数地址6.2ShellCode的高效提取技巧6.2.1汇编内存提取6.2.2可执行文件提取6.2.3C语言直接提取6.3ShellCode的高级功能6.3.1恢复堆链表6.3.2TTP和FTP客户端——冲击波/震荡波传播的实现6.3.3突破防火墙课后解惑7.1CCProxy漏洞的分析7.1.1CCProxy的安装与设置7.1.2漏洞的定位和利用7.1.3漏洞的分析7

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论