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

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

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

该图左边的栈帧结构是怎么分析出来的?是根据OLLydbg中的反汇编得来的吗?
谢谢
雪    币: 7
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
marbles 活跃值 2013-5-2 11:11
80
0
跟随学习ing
雪    币: 20
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
aliarthas 活跃值 2014-10-15 11:54
81
0
重新复习一遍,这次理解透了
雪    币: 9
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Ubuntukun 活跃值 2014-11-21 20:23
82
0
好帖,学习了。。。
雪    币: 1
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wafd 活跃值 2014-11-25 23:33
83
0
受大话西游毒害不清啊
雪    币: 9
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
搁浅地盘 活跃值 2015-7-2 10:43
84
0
感谢楼主的分享。
雪    币: 4
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
谁人能懂c 活跃值 2015-7-27 17:33
85
0
Can I mark it, mark mark
雪    币: 151
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
inheqqq 活跃值 2015-7-30 15:13
86
0
吱吱吱吱
雪    币: 16
活跃值: 活跃值 (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
passpace 活跃值 2016-8-26 22:49
87
0
吱吱吱~真的可以做到啊,好厉害!
雪    币: 39
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wyylucky 活跃值 2016-8-27 11:58
88
0
[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 指令地址)!完活

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