首页
论坛
专栏
课程

[原创]缓冲区溢出攻击浅析,写给初学者

2011-3-25 12:04 20714

[原创]缓冲区溢出攻击浅析,写给初学者

2011-3-25 12:04
20714
最新回复 (129)
waterwind 2011-3-31 11:19
51
0
感谢楼主的劳动,向楼主学习
firfor 1 2011-3-31 13:22
52
0
算了啦。大家都是朋友。不会放在心上的。
zhanxcyy 2011-3-31 13:54
53
0
新人围观围观
alargel 2011-3-31 22:00
54
0
谢谢,新手致谢.
kuang110 6 2011-4-1 09:51
55
0
求pdf版             -------------
linzhu 2011-4-1 10:14
56
0
下载还要钱的呀  没钱呀
levizhou 1 2011-4-1 10:43
57
0
非常好的文章, 拜读ing。。。
狂风hy 2011-4-1 11:21
58
0
谢谢LZ。。。能加你Q吗???我的284116775
firfor 1 2011-4-1 13:50
59
0
加你了哈。注意看哈。
daimeiquan 2011-4-1 16:13
60
0
多谢楼主分享
Orzogc 2011-4-1 16:58
61
0
网上类似的教程很多,不过还是多谢楼主。
yoke 2011-4-1 21:14
62
0
有点像学习整理后手札
江南纸鸢 2011-4-1 23:22
63
0
有兴趣的话,可以拿去年的腾讯安全挑战赛第一题来试试!我就是通过那道题开始了解缓冲区溢出的。
livexg 2011-4-2 20:17
64
0
感觉好象很难学呀。。
levizhou 1 2011-4-7 13:40
65
0
问个问题,
如果我针对漏洞函数
int  defect( char* p )
{
    char ch[4];
    memcpy( ch, p, 1000 );
}
进行溢出, 那么我就需要修改defect()的返回地址, 也就是对ch[] 进行溢出, 即一般把 [ebp+4]地址修改成需要的地址,
但问题是:一般情况下函数以 push ebp; mov ebp, esp ; 开始 也就是直接针对ch溢出会破坏ebp链,导致不等执行到shellcode, 程序就down掉了,

请问这个问题需要如何绕过去呢?

thx
secsip 2011-4-7 17:44
66
0
这个不错,新手学习一下,楼主写得很用心
灭绝雪翁 2011-4-7 21:11
67
0
[QUOTE=levizhou;945107]问个问题,
如果我针对漏洞函数
int  defect( char* p )
{
    char ch[4];
    memcpy( ch, p, 1000 );
}
进行溢出, 那么我就需要修改defect()的返回地址, 也就是对ch[] 进行溢出, 即一般把 [ebp+4]地...[/QUOTE]

破坏了ebp值又不会触发异常,除非是ebp被改成指向不可访问的内存页了,在shellcode里触发访问异常。高级些的可以在shellcode里还原ebp、esp,普通的就在shellcode循环不出来就行了。

话说那老师确实讲的不错,lz码字也很积极
urlanyi 2011-4-7 21:16
68
0
谢谢LZ分享,新手学习了,万分感谢
levizhou 1 2011-4-8 08:57
69
0
兄弟, 如果ebp破坏后还如何能执行植入的shellcode呢,请看清楚问题

看lz的sample code 是类似:

int  defect( char* p )
{
    __asm mov dword ptr [ebp+0x04],  0x7ffa4512;   

    char ch[4];
   
    memcpy( ch+0x0c, p, 1000 );  
   
}

大体上来说基本上不可能有哪台服务器出现这种漏洞的,
我的问题是如何通过p溢出来达到攻击的目的, 假设p中含有一段shellcode
漏洞代码为
int  defect( char* p )
{
    char ch[4];
   
    memcpy( ch, p, 1000 );     
}

==============================update=====================
debug模式下能够适当初始化p可以执行到自己的shellcode, 可是会产生一个异常, 也就是不完美
灭绝雪翁 2011-4-8 21:25
70
0
[QUOTE=levizhou;945446]兄弟, 如果ebp破坏后还如何能执行植入的shellcode呢,请看清楚问题

看lz的sample code 是类似:

int  defect( char* p )
{
    __asm mov dword ptr [ebp+0x04],  0x7ffa4512;   

...[/QUOTE]

#include <stdio.h>
#include <memory.h>

int  defect(char* p);
void printself();
int main(int arg,char *arv[])
{
        char shellcode[100]="1234567812345678";
        int *pint=(int *)shellcode;
        pint[1]=0x3D0000;//新EBP值
        pint[2]=(int)printself;//shellcode地址
       

        return         defect(shellcode);
}

int  defect(char* p)
{
        char ch[4];
        memcpy( ch,p,100);
        return 0;
}

void printself()
{
        printf("I am Shellcode\n");
        while(1);
}


不多说了,拿去编译下吧,release编译,禁用优化。 test.exe.txt
上传的附件:
miniants 2011-4-8 22:24
71
0
学习一下。。。
thankme 2011-4-8 23:38
72
0
排版很好,楼主真是好人!学习了~
levizhou 1 2011-4-9 12:15
73
0
[QUOTE=灭绝雪翁;945691]#include <stdio.h>
#include <memory.h>

int  defect(char* p);
void printself();
int main(int arg,char *arv[])
{
        char shellcode[100]="123456781...[/QUOTE]

thx, 我的也调通了,

之前是因为debug build 导致的问题
周zhou周 2011-4-9 13:22
74
0
不错啊不错!收藏个先
yjqsvip 2011-4-9 15:49
75
0
asdfeasdfasdv
venglide 2011-4-10 01:12
76
0
写得很好,学习了!!
guxinyi 5 2011-4-20 13:57
77
0
标记下,,,哈哈
Crackercs 2011-4-21 22:57
78
0
收藏了!
写的真用心!
tianci 2011-4-22 00:05
79
0
学习标记!非常感谢楼主的奉献。
BeanBaby 2011-4-22 10:09
80
0
我一直想明白缓冲区攻击是怎么回事呢!!感谢楼主!!
icesord 2011-4-22 19:46
81
0
十分感谢楼主的辛勤劳动
firfor 1 2011-4-23 00:16
82
0
简单的说就是利用对方机器的程序缺陷,能够非法得到别人机器的执行权限。从而可以做一些自己想干的事。如看一下别人的电脑有什么文件啊。
马咿呀嘿 2011-4-25 13:45
83
0
楼主 “cmd.exe”指针怎么传进去的? 我看那里全是nop啊。
wayne机枪 2011-4-25 13:57
84
0
nice ,thanks,
zqqbbgs 2011-4-25 15:10
85
0
先收藏了,哈哈~~慢慢消化
strict 2011-4-25 16:04
86
0
写的很详细啊~~学习了
firfor 1 2011-4-26 00:05
87
0
最近事有点多,考完试回来再答复你。
白水月 2011-5-1 00:12
88
0
看了一遍,不是很明白
收藏继续拜读……
ldhxth 2011-5-1 20:48
89
0
学习一下了!
livexg 2011-5-1 21:09
90
0
好东东。。学习下。。
ninino 2011-6-29 17:45
91
0
谢谢了,准备晚上学习下!牛人真厉害!
sediy 2011-6-30 14:27
92
0
感谢分享学习一下
cenyo 2011-6-30 15:56
93
0
适合我这些新人学习!谢谢!!
川幽 2011-6-30 19:26
94
0
话说我还看不懂 惭愧
大头和尚 2011-6-30 23:31
95
0
很详细,明天上班后好好欣赏。
sylapple 2011-7-1 09:28
96
0
写的很详细,学习学习!!
aslprince 2011-7-1 09:32
97
0
很详细啊
tangxiazcc 2011-7-1 10:45
98
0
这样就可以远程修改服务器的数据了,而不是是需要外挂了
majinxin 2011-7-1 19:04
99
0
桌面亮了,确实都是基础
waysun 2011-7-2 14:13
100
0
我喜欢这样的文章。。
游客
登录 | 注册 方可回帖
返回