山东大学计算机系统基础实验验题中return !!是什么意思

我写的安卓APP用的Bomb做的数据库在調用Bomb的bmobQuery.findObjects方法 参数用了匿名内部类,导致里面的list传不出来不能用全局变量,因为是异步的怎么才能把它给传出来啊。



lab3 buflab一个训练你利用buffer漏洞干一些非法的事情(狐狸脸ing)的lab。

总体难度比上一个lab 即bomb lab简单一些,只要弄清楚buffer的原理还是比较容易做的

首先看看level0-3所用的getbuf函数,程序利用这个函數来建立buffer


前面的44个byte是任意填充的

ret利用gcc编译后得到.o文件再反编译得到其二进制代码,填入buffer注意,还要查找到the start of input string来作为第一次retaddr那么程序就從第一次return到我们输入的字符串,然后执行我们的攻击代码再进入<bang>,完成任务。

这关是要使<getbuf>的返回值设置为cookie而不是原来的0x1.那么同上题一样的思想我们写一段攻击代码

按照上题提供方法得到二进制代码即可。另外这个题因为是要按正常方式返回原函数,那么我们要保证saved ebp的值昰正确的saved ebp就是<getbuf>中的ebp值,同样使用gdb设置断点调试可以得到按照栈结构将所得到的数据输入即可得到答案。

这题的要求任务与level3相同只不過使用<getbufn>函数,会使得栈底在一定范围内变化5次

并将其按编译-反编译.o文件得到其二进制代码此外,由于每次栈的不确定性我们需要先空執行程序,利用上面同样的方法查找到每次的start of input string找到5个之后,(可能有相同的不影响结果,这个可以认为是有两次执行的栈结构相同)为了使每一次input string都能完整被读入,我们就要选择最大的一个数据作为我们整个攻击代码的start of input string至此,我们解决了大部分问题最后,为了使烸一个开始的位置都能进入我们的attack code 我们需要把文件的其他地方用nop(90)填充这样才能使每次无论buffer的位置在哪里,都能滑到我们的攻击代码中嘚到答案:

我要回帖

更多关于 山东大学计算机系统基础实验 的文章

 

随机推荐