学习编写Metasploit的exploit模块
来源:互联网 发布:武汉网络与新媒体本科 编辑:程序博客网 时间:2024/06/06 02:11
表示终于是成功了,倒腾了一个星期了,周六在大神的指导下,栈溢出成功了!
在WinXP Sp3上写了一个栈溢出的漏洞,然后再BT5上写了个exploit模块,使之栈溢出,原理其实很简单,开一个数组然后赋值给该数组覆盖该函数的返回地址。简单介绍下如何获取返回地址,以及应当填充的字符的个数吧。
首先是返回地址Ret,即应该将漏洞代码的返回地址覆盖成的地址,Windows上一般采用的方法就是去调用一些系统进程的jmp/call esp指令(该地址是固定的,但Win7后加了地址随机化),然后再由该指令跳到shellcode,具体原理就不解释了,网上有好多说的很清楚的。
1.获取jmp/call esp指令的地址:
#include<windows.h>#include<stdio.h>#define DLL_NAME "kernel32.dll"// 一般加载的进程像user32.dll,kernel32.dll int main(){BYTE *ptr ;int position, address ;HINSTANCE handle ;BOOL done_flag = FALSE ;handle = LoadLibrary(DLL_NAME) ; if( !handle ){printf(" load dll error") ; exit(0) ;}ptr = (BYTE*) handle ;for( position = 0; !done_flag; position++ ){ try{ //机器码0xffe4对应的是jmp esp if( ptr[position] == 0xFF && ptr[position+1] == 0xE0 ){ int address = (int)ptr + position ; printf("OPCODDE found at 0x%x\n",address) ; } } catch(...){ address = (int)ptr + position ; printf("END OF 0x%x\n",address) ; done_flag = TRUE ; }}return 0 ;}这是从ODAY安全书上找到的一种方法,在查找地址的时候比较好用,下面是一些机器码及对应的指令
2.得到应该添加的空字符数
表示就是这个问题让我纠结了很久,最后还是因为差了八个字节,让ret处被shellcode给填充了,一直看不到shellcode执行的效果:
开始是直接把返回地址打出来,然后根据开的数组的大小计算个数,
void a(void(*b)()){ ///}void b(){ a(b) ;}在网上找到了这个打出地址的方法,后面大神也说这应该不会出错,而且个数也是4的整数倍,不会出现什么补齐的现象。。。希望有知道原因的赐教下。。。。。
后面还是用 ollydbg(强烈推荐使用)检测时候才发现这个问题,
第一次成功的经验,希望能对初学者有些帮助。。。。
0 0
- 学习编写Metasploit的exploit模块
- 编写metasploit exploit 远程socket exploir学习
- metasploit-学习8--显示exploit的模块的所有exploit信息
- Metasploit中Exploit模块check方法详述
- exploit - write metasploit exploit script
- exploit编写学习阶段性总结
- 给kali的Metasploit下添加一个新的exploit
- 给kali的Metasploit下添加一个新的exploit
- 添加新的exploit到metasploit中去
- 用metasploit来exploit虚拟机XPSP3的ms08_067
- Metasploit Framework下的Exploit应用开发中文手册
- metasploit编写自己的扫描器
- metasploit的模块构成及功能分析
- metasploit的模块构成及功能分析
- metasploit-学习7--显示post的模块的所有post信息
- metasploit-学习9--显示payload的模块的所有payload信息
- exp、Exploit、Exploit Pack、exp-gui、Payload、MetaSploit都是啥?
- Metasploit jboss deployment file repository exploit
- webservice入门课程03
- Exception in thread "main" oracle.sysman.emcp.exception.DatabaseUnavailableException: 数据库实例不可用。
- 网络宣传推广的10种好方法
- IOS学习网址
- sql语句3
- 学习编写Metasploit的exploit模块
- GridView的使用(一):与ArrayAdapter搭配使用
- oracle dataguard 传输方式(基本原理)
- 类和对象
- 实习第一天
- 在进行C51程序设计时如何精确延时的常见方法介绍
- 机器学习之线性回归
- Robot Framework经验谈 -- 将已有库运行为Remote库的例子
- 自定义Application的使用 百度定位里面有个自定义application