首页
社区
课程
招聘
[技术专题]软件漏洞分析入门_4_初级栈溢出C_修改程序流程
发表于: 2007-12-15 01:01 35633

[技术专题]软件漏洞分析入门_4_初级栈溢出C_修改程序流程

2007-12-15 01:01
35633
收藏
免费 7
支持
分享
最新回复 (90)
雪    币: 16
活跃值: (430)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
76
再吱三声,以资感谢
2008-5-23 03:59
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
77
继续坐后排,慢慢看
很好的教材,很好的老师
2008-5-30 16:16
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
78
受益良多啊
2008-5-31 16:51
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
79

该图左边的栈帧结构是怎么分析出来的?是根据OLLydbg中的反汇编得来的吗?
谢谢
2008-6-6 15:45
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
80
跟随学习ing
2013-5-2 11:11
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
81
重新复习一遍,这次理解透了
2014-10-15 11:54
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
82
好帖,学习了。。。
2014-11-21 20:23
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
83
受大话西游毒害不清啊
2014-11-25 23:33
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
84
感谢楼主的分享。
2015-7-2 10:43
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
85
Can I mark it, mark mark
2015-7-27 17:33
0
雪    币: 151
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
86
吱吱吱吱
2015-7-30 15:13
0
雪    币: 16
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
87
吱吱吱~真的可以做到啊,好厉害!
2016-8-26 22:49
0
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
88
[QUOTE=alayg;463278]
该图左边的栈帧结构是怎么分析出来的?是根据OLLydbg中的反汇编得来的吗?
谢谢[/QUOTE]

通过调试确定buffer数组距离栈帧中函数返回地址的偏移量?
观察目标返回值上面那块栈的变化情况?

本人用的办法:
1、运行程序-随便输入密码“aaaa”-得到提示“incorrect password”(如果知道源程序,可能知道有congratulation!you have ...这个字符串)
2、通过右击-超级字符串查找incorrect password,双击定位
3、通过分析在0x004010E6处下断点,运行程序,输入密码:aaaaaaaa(稍长点)

4、最初是F7一步步跟进去,观察右下角栈变化情况,在哪块会改变栈地址:0x0012FB28上面区域的值(目标肯定是覆盖这个地址,所以观察它上面内容变化情况)
5、其实一步步跟进能找到strcpy调用的地方,能否发现 0x4011F1 MOV DWORD PTR DS:[EDI], EDX ,这里第一次EDI值就是缓冲区开始位置!


在0x004011F1处下断点,运行到此处时EDI值为栈0x0012FB18, 刚才压入的返回值在栈0x0012FB28,所以缓冲区开始位置到返回值位置长度为0x10, 16字节!于是乎,用16字节填充,第17-20字节设置为目标返回地址(congratulation 指令地址)!完活

这是我的方法,不知有没有更快捷直观的方法!
上传的附件:
2016-8-27 11:58
0
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
89
缓冲区溢出分析第03课:缓冲区溢出的利用
里面提到通过一长串字符来定位溢出位置!TestCode[]= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
2016-8-28 14:34
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
90
吱……吱……吱……吱……吱……吱……
2017-2-14 10:44
0
雪    币: 231
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
91
您好,我是使用linux系统来进行实验的,但是我发现,按照同样的方法,在windows平台上就可以溢出成功,但是放到linux下,就会出现无法复现的情况,请问这是因为linux跟windows架构不同吗?我的linux是装在虚拟机下的,还请您能够给我讲解一下,谢谢您了!
2017-8-28 09:41
0
游客
登录 | 注册 方可回帖
返回
//