旧书重温:0day2【1】 简单的缓冲区溢出案例
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】 简单的缓冲区溢出案例的更多相关文章
- windows下简单的缓冲区溢出
缓冲区溢出是什么? 当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被“撑爆”,从而覆盖了相邻内存区域的数据 成功修改内存数据,可造成进程劫持,执行恶意代码,获取服务器控制权等 ...
- Linux下简单的缓冲区溢出
缓冲区溢出是什么? 科班出身,或者学过汇编的应该知道,当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被“撑爆”,从而覆盖了相邻内存区域的数据 成功修改内存数据,可造成进程劫持 ...
- 缓冲区溢出利用——捕获eip的傻瓜式指南
[译文] 摘要:为一个简单的有漏洞程序写一个简单的缓冲区溢出EXP,聚焦于遇到的问题和关键性的教训,提供详细而彻底的描述 内容表:1. I pity the fool, who can't smash ...
- Kali学习笔记20:缓冲区溢出实验环境准备
在前几篇的博客中:我介绍了OpenVAS和Nessus这两个强大的自动化漏洞扫描器 但是,在计算机领域中有种叫做0day漏洞:没有公开只掌握在某些人手中 那么,这些0day漏洞是如何被发现的呢? 接下 ...
- 使用Linux进行缓冲区溢出实验的配置记录
在基础的软件安全实验中,缓冲区溢出是一个基础而又经典的问题.最基本的缓冲区溢出即通过合理的构造输入数据,使得输入数据量超过原始缓冲区的大小,从而覆盖数据输入缓冲区之外的数据,达到诸如修改函数返回地址等 ...
- 旧书重温:0day2【10】第五章 堆溢出利用2
好久没有发帖子啦!最近一直很忙!但是还是抽空学习啦下! 前段时间匆匆忙忙的把0day2上的堆溢出实验做啦! 可能当时太浮躁啦,很多细节没注意!结果:实验结果很不满意!所以就有啦这一篇!! 上一篇是发布 ...
- 旧书重温:0day2【7】堆溢出实验
相关文章我拍成了照片,放在了我的QQ空间不是做广告(一张一张的传太麻烦了)http://user.qzone.qq.com/252738331/photo/V10U5YUk2v0ol6/ 密码9 ...
- 旧书重温:0day2【9】第六章 攻击c++的虚函数
不知不觉,我们学到了0day2的第六章形形色色的内存攻击技术!其中,这张很多东西都是理论的东西,不过!我们还是要想办法还原下发生的现场! 其中部分文章截图 http://user.qzone.qq.c ...
- 旧书重温:0day2【5】shellcode变形记
紧接上一篇,结合第一篇 //这篇文章主要成功溢出一个带有缓冲区溢出的小程序,其中我们的shellcode被strcpy截断了所以我们需要变形shellcode,这个实验中也出现了很多意想不到的拦路虎, ...
随机推荐
- 用 VIPER 构建 iOS 应用架构(2)
[编者按]本篇文章由 Jeff Gilbert 和 Conrad Stoll 共同编写,通过构建一个基础示例应用,深入了解 VIPER,并从视图.交互器等多个部件理清 VIPER 的整体布局及思路.通 ...
- 7 天玩转 ASP.NET MVC - 第 1 天
0. 前言 正如标题「7 天玩儿转 ASP.NET MVC」所言,这是个系列文章,所以将会向大家陆续推出 7 篇.设想一下,一天一篇,你将从一个愉快的周一开始阅读,然后在周末成为一个 ASP.NET ...
- poj 2348
Euclid's Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7418 Accepted: 3022 Des ...
- ZOJ 3204 Connect them(字典序输出)
主要就是将最小生成树的边按字典序输出. 读取数据时,把较小的端点赋给u,较大的端点号赋值给v. 这里要用两次排序,写两个比较器: 第一次是将所有边从小到大排序,边权相同时按u从小到大,u相同时按v从小 ...
- java基础知识回顾之抽象类
/* 抽象类: 抽象:笼统,模糊,看不懂!不具体. 特点: 1,方法只有声明没有实现时,该方法就是抽象方法,需要被abstract修饰. 抽象方法必须定义在抽象类中.该类必须也被abstract修饰. ...
- Linux多线程之同步2 —— 生产者消费者模型
思路 生产者和消费者(互斥与同步).资源用队列模拟(要上锁,一个时间只能有一个线程操作队列). m个生产者.拿到锁,且产品不满,才能生产.当产品满,则等待,等待消费者唤醒.当产品由空到不空,通知消费者 ...
- python unittest基本介绍
python内部自带了一个单元测试的模块,pyUnit也就是我们说的:unittest 1.介绍下unittest的基本使用方法: 1)import unittest 2)定义一个继承自unittes ...
- 微软VSS的超级BUG
发现问题:今天一个新同事,无意中发现他直接就登录进VSS了,并且还是“admin”用户: 解决问题:于是开始在网上找度娘和谷歌帮忙,真是不查不要紧,一查吓一跳,VSS本身就存在这个bug,并且是一个超 ...
- springmvc的mvc:view-controller标签
1.重定向 <mvc:view-controller path="/" view-name="redirect:/admin/index"/> 即如 ...
- LR_问题_平均响应时间解释,summary与analysis不一致
Summary Report中的时间说明 Summary是按整个场景的时间来做平均的,最大最小值,也是从整个场景中取出来的. (1) 平均响应时间:事物全部响应时间做平均计算 (2) ...