0x01 准备:

VMwarePlayer

(我是在360软件管家那搜到的下载的)

xp sp2 http://user.qzone.qq.com/252738331/blog/1357138598

(这是我的QQ空间文章,平时收藏的一些windows老版系统,用来做实验用的)

vc++6.0绿色完整版 网上自己下巴(30M左右)

ollydby (OllyDBG_1.10_second_cao_cong看雪上下的)

winhex (网上有很多的)

知识点:

CPU(Intel,x86)各主要寄存器的一般用途:
EAX:存储器:用于执行计算,并用于存储函数的返回值。基本操作,如加,减,比较使用
这个通用寄存器
EBX:存储数据
ECX:计数器:常用于计数循环的次数。
EDX:数据
ESP:栈顶指针
EBP:基指针(常用来表示一个函数帧的底部)
ESI:源操作数指针
EDI:目的地址指针
EIP:指令指针

安装好VM、做好虚拟机(xp sp2)、虚拟机里安好vc++6.0 , ollydby winhex ....

0x02 生成带缓冲区溢出漏洞的程序

 include <stdio.h>
#include <windows.h>
#define PASSWORD "1234567" int verify(char * passwd)
{
int iRet;
char buffer[];
iRet = strcmp(passwd,PASSWORD);
strcpy(buffer,passwd);
return iRet; } int main()
{ int flag = ;
char passwd[];
FILE * fp;
LoadLibrary("user32.dll");
//MessageBox(NULL,"dd","xx",1);
if(!(fp=fopen("password2.txt","rw+")))
{
printf("fp fopen flaid \n");
int e = GetLastError();
exit();
}
fscanf(fp,"%s",passwd);
flag = verify(passwd);
if(flag)
{
printf("incorrect password \n");
}
else
{
printf("correct password \n");
}
fclose(fp);
return ; }

以上参考0day2

0x03触发 溢出

把debug目录下password2.txt,内容输入abcdefjh.....xyz 保存、运行生成的exe 、溢出

offset:74737371   tsrq 控制eip

0x04 分析

设置ollydby为默认实时调试器

运行exe ollydby断下

仔细观察发现  tsrq 处 控制了eip , esp指向 uvwxyz

所以可以用 jmp esp 策略 使用 lion万能 jmp esp 0x7ffa4512 反向填充tsrq处,

0x 9083EC4033DB536877657374686661696C8BC453505053B81661D677FFD0 为shellcode 填充uvwxyz....

(其中我的xp sp2 上的 messageboxw的地址1661D677,因为我的messageboxA 的地址含0较多截断了字符串所以用了W的)

自己根据情况修改红处( 以上修改文件都是用winhex修改)

旧书重温:0day2【1】 简单的缓冲区溢出案例的更多相关文章

  1. windows下简单的缓冲区溢出

    缓冲区溢出是什么? 当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被“撑爆”,从而覆盖了相邻内存区域的数据 成功修改内存数据,可造成进程劫持,执行恶意代码,获取服务器控制权等 ...

  2. Linux下简单的缓冲区溢出

    缓冲区溢出是什么? 科班出身,或者学过汇编的应该知道,当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被“撑爆”,从而覆盖了相邻内存区域的数据 成功修改内存数据,可造成进程劫持 ...

  3. 缓冲区溢出利用——捕获eip的傻瓜式指南

    [译文] 摘要:为一个简单的有漏洞程序写一个简单的缓冲区溢出EXP,聚焦于遇到的问题和关键性的教训,提供详细而彻底的描述 内容表:1. I pity the fool, who can't smash ...

  4. Kali学习笔记20:缓冲区溢出实验环境准备

    在前几篇的博客中:我介绍了OpenVAS和Nessus这两个强大的自动化漏洞扫描器 但是,在计算机领域中有种叫做0day漏洞:没有公开只掌握在某些人手中 那么,这些0day漏洞是如何被发现的呢? 接下 ...

  5. 使用Linux进行缓冲区溢出实验的配置记录

    在基础的软件安全实验中,缓冲区溢出是一个基础而又经典的问题.最基本的缓冲区溢出即通过合理的构造输入数据,使得输入数据量超过原始缓冲区的大小,从而覆盖数据输入缓冲区之外的数据,达到诸如修改函数返回地址等 ...

  6. 旧书重温:0day2【10】第五章 堆溢出利用2

    好久没有发帖子啦!最近一直很忙!但是还是抽空学习啦下! 前段时间匆匆忙忙的把0day2上的堆溢出实验做啦! 可能当时太浮躁啦,很多细节没注意!结果:实验结果很不满意!所以就有啦这一篇!! 上一篇是发布 ...

  7. 旧书重温:0day2【7】堆溢出实验

    相关文章我拍成了照片,放在了我的QQ空间不是做广告(一张一张的传太麻烦了)http://user.qzone.qq.com/252738331/photo/V10U5YUk2v0ol6/    密码9 ...

  8. 旧书重温:0day2【9】第六章 攻击c++的虚函数

    不知不觉,我们学到了0day2的第六章形形色色的内存攻击技术!其中,这张很多东西都是理论的东西,不过!我们还是要想办法还原下发生的现场! 其中部分文章截图 http://user.qzone.qq.c ...

  9. 旧书重温:0day2【5】shellcode变形记

    紧接上一篇,结合第一篇 //这篇文章主要成功溢出一个带有缓冲区溢出的小程序,其中我们的shellcode被strcpy截断了所以我们需要变形shellcode,这个实验中也出现了很多意想不到的拦路虎, ...

随机推荐

  1. main函数和启动例程

    为什么汇编程序的入口是_start,而C程序的入口是main函数呢?本节就来解释这个问题.在讲例 18.1 “最简单的汇编程序”时,我们的汇编和链接步骤是: $ as hello.s -o hello ...

  2. HDU 2672 god is a girl (字符串处理,找规律,简单)

    题目 //1,1,2,3,5,8,13,21,34,55…… //斐波纳契数列 #include<math.h> #include<stdio.h> #include<s ...

  3. nested pop animation can result in corrupted navigation bar

    nested pop animation can result in corrupted navigation barFinishing up a navigation transition in a ...

  4. Freebie: Material Design UI Kit

    点这里 Following the guidelines laid out by Google, this free UI kit has been designed so that you can ...

  5. mvc5 @RenderSection("scripts", required: false) 什么意思

    在模板中 相当于占位符 使用方法如下 @section scripts{ //coding }

  6. **app后端设计(10)--数据增量更新(省流量)

    在新浪微博的app中,从别的页面进入主页,在没有网络的情况下,首页中的已经收到的微博还是能显示的,这显然是把相关的数据存储在app本地. 使用数据的app本地存储,能减少网络的流量,同时极大提高了用户 ...

  7. poj 2449(A*求第K短路)

    题目链接:http://poj.org/problem?id=2449 思路:我们可以定义g[x]为源点到当前点的距离,h[x]为当前点到目标节点的最短距离,显然有h[x]<=h*[x](h*[ ...

  8. appium自动化测试中获取toast消息的解决方法【转】

    http://blog.csdn.net/hqzxsc2006/article/details/50036911 待实践.. 解决方法:appium下切换selendroid模式去获取Android的 ...

  9. linux下文件编码的查看与修改

    在Linux中查看文件编码可以通过vim编辑器来查看,在vim命令模式下输入如下命令即可: :set fileencoding //在vim中查看文件编码 如果你只是想查看其它编码格式的文件或者想解决 ...

  10. ARM菜鸟:JLINK与JTAG的区别

    调试ARM,要遵循ARM的调试接口协议,JTAG就是其中的一种.当仿真时,IAR.KEIL.ADS等都有一个公共的调试接口,RDI就是其中的一种,那么我们如何完成RDI-->ARM调试协议(JT ...