函数返回地址掌握技巧后挺好找的,我们从书上的内存剖析图知道,返回地址就在EBP的内存块。于是,在ollydbg上,我们根据寄存器窗口直接找EBP,在EBP的下面一个就是函数的返回地址。直接淹没地址的话,函数运行出错。溢出返回无效地址。现在的话正式做触发栈溢出的输入文件。将..
                            
                            
                                分类:
其他好文   时间:
2015-12-01 12:59:56   
                                阅读次数:
157
                             
                    
                        
                            
                            
                                3.61题中代码在循环时会产生6个临时的变量,故共需要六个寄存器在存放数据,但是由于处理器的六个寄存器中,%esp和%ebp不能用于存放临时数据,而且另外一个寄存器还必须用来保存乘法指令的结果。因此必须将循环中的值的数量减少到5个。当没有足够多的寄存器来保存临时数据时,编译器必须把一些局部变量放到存...
                            
                            
                                分类:
其他好文   时间:
2015-11-30 22:21:38   
                                阅读次数:
201
                             
                    
                        
                            
                            
                                看过我前面博客的朋友都清楚,函数调用主要依靠ebp和esp的堆栈互动来实现的。那么递归呢,最主要的特色就是函数自己调用自己。如果一个函数调用的是自己本身,那么这个函数就是递归函数。 我们可以看一下普通函数的调用怎么样的。试想如果函数A调用了函数B,函数B又调用了函数C,那么在堆栈中的数据是怎么保存....
                            
                            
                                分类:
编程语言   时间:
2015-11-10 15:48:51   
                                阅读次数:
360
                             
                    
                        
                            
                            
                                这是一周前做的一道题目,总的来说这道题很简单,当然一开始看了半天没发现溢出点也是十分的惭愧,题目出的很良心,思路就是溢出之后我们可以控制main函数的ebp, 进而在main函数返回时进行漏洞利用。先看看IDA反汇编的结果主函数的几个内存操作的函数都没有什么问题,那么问题很可能出现在auth函数了这...
                            
                            
                                分类:
其他好文   时间:
2015-11-09 00:08:46   
                                阅读次数:
354
                             
                    
                        
                            
                            
                                开启GS编译项后,会对栈帧进行一些改变,将字符串变量移到栈帧的高地址,将指针参数和字符串参数复制到内存中低地址,在栈帧的EBP后压入一个随机的Security Cookie,同时在.data字段中也存在相应的值用于对比,实际上两个值是与EBP异或得来的。突破GS可以有虚函数(需要找到pop pop ...
                            
                            
                                分类:
其他好文   时间:
2015-11-04 19:14:40   
                                阅读次数:
207
                             
                    
                        
                            
                            
                                栈是一个很重要的编程概念(编译课和程序设计课都讲过相关内容),与编译器和编程语言有紧密的联系。理解调用栈最重要的两点是:栈的结构,EBP寄 存器的作用。一个函数调用动作可分解为:零到多个PUSH指令(用于参数入栈),一个CALL指令。CALL指令内部其实还暗含了一个将返回地址(即 CALL指令下一条...
                            
                            
                                分类:
其他好文   时间:
2015-10-29 21:30:23   
                                阅读次数:
162
                             
                    
                        
                            
                            
                                3.61题中代码在循环时会产生6个临时的变量,故共需要六个寄存器在存放数据,但是由于处理器的六个寄存器中,%esp和%ebp不能用于存放临时数据,而且另外一个寄存器还必须用来保存乘法指令的结果。因此必须将循环中的值的数量减少到5个。当没有足够多的寄存器来保存临时数据时,编译器必须把一些局部变量放到存...
                            
                            
                                分类:
其他好文   时间:
2015-10-27 20:16:39   
                                阅读次数:
210
                             
                    
                        
                            
                            
                                1Y86指令集体系结构 ISA:指令集体系结构,一个处理器支持的指令和指令的字节级编码 程序员可见的状态 Y86程序中的每条指令都会读取或修改处理器状态的某些部分,称为程序员可见状态。其中包括: 8个程序寄存器:%eax,%ecx,%edx,%ebx,%esi,%edi,%esp和%ebp。...
                            
                            
                                分类:
系统相关   时间:
2015-10-18 22:54:53   
                                阅读次数:
656
                             
                    
                        
                            
                            
                                第四章处理器体系结构(一)知识点总结一、Y86指令集体系结构 1.Y86处理器状态类似于IA32,有8个程序寄存器: %eax、%ecx、%edx、%ebx、%esi、%edi、%esp、%ebp。处理器的每个程序寄存器存储一个字。%esp被入栈、出栈、调用和返回指令作为栈指针。 2.3个一位...
                            
                            
                                分类:
其他好文   时间:
2015-10-18 21:26:06   
                                阅读次数:
399
                             
                    
                        
                            
                            
                                4.1.1程序员的可见的状态————Y86的每条指令都会读取或修改处理器状态的某些部分,称为程序员可见状态.如图1所示.1.程序寄存器(Program registers): %eax, %ecx, %edx, %ebx, %esi,%edi, %esp和%ebp.都是32位的.2.条件码(Cond...
                            
                            
                                分类:
系统相关   时间:
2015-10-18 19:56:31   
                                阅读次数:
379