首页
社区
课程
招聘
[原创]缓冲区溢出攻击浅析,写给初学者
发表于: 2011-3-25 12:04 26219

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

2011-3-25 12:04
26219
收藏
免费 7
支持
分享
最新回复 (129)
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
126
谢谢楼主分享!!!
2011-11-24 10:32
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
127
太简单了,很容易看懂。这是在高级语言在出现的问题,在汇编设计中是很少犯这种错误的
2011-11-24 20:43
0
雪    币: 122
活跃值: (46)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
128
呵呵,韩老师是谁就不方便透露啦,不过你可以上万方搜索相关的资料,如安全方面的也许就能找到他了.
唉,好久没有来看自己写的代码了.现在看起来觉得自己当时写得好幼稚.
关于你问的这一个问题.
上面有一个call next3:指令看到没.一次call相当于是
[COLOR="DarkRed"]push[/COLOR] EIP_next_instruction_address
[COLOR="DarkRed"]jmp[/COLOR]   next3

我们call这一个指令的调用就是为了得到下一条指令的地址.也就是那个start_information结构体的偏移地址啦.得到了EIP后,我们应该把它给弹出来保存起来.
pop eax

再待要用到这一个结构体的地址的时候,我们再把它给push到栈中去.然后调相应的函数.
push eax

你足够细心的话会发现我们若把它保存到eax中暂存起来的话.下面要用到的时候再
push eax

把地址压入栈中作为参数.一次pop后紧接着又是push.相当于什么都没有做.对栈没有改变.那么什么保留这两条
pop eax
push eax

呢.就是以后会再用到那个结构体的地址的情况下会保留两条指令.因为我们不会再用到这一个结构体的地址了,所以我们不用保存eip的值到eax中.而一次pop 加一次push指令对栈又没有影响.
所以就索性省略两条指令了.也就把它两条注释起来了的.
意思就是说不注释也同样可以.程序逻辑更清晰.
不知明白否.
2011-11-25 00:20
0
雪    币: 122
活跃值: (46)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
129
见笑了,本来就是自己做来自己溢出的.没有什么技术含量
2011-11-25 00:22
0
雪    币: 5568
活跃值: (3208)
能力值: ( LV12,RANK:407 )
在线值:
发帖
回帖
粉丝
130
文章写的不错
2017-11-27 15:43
0
游客
登录 | 注册 方可回帖
返回
//