b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

缓冲区溢出攻击_缓冲区溢出攻击定义_缓冲区溢出攻击的危害(2)

电脑杂谈  发布时间:2017-01-19 10:03:08  来源:网络整理

CONTENTS, ALLOC, LOAD, DATA

17 .dtors 0000000c0804950408049504000005042**2

CONTENTS, ALLOC, LOAD, DATA

[warning3@redhat-6 dtor]$ objdump -s -j .dtors yopta

yopta: file format elf32-i386

Contents of section .dtors:

8049504 ffffffff 48840408 00000000 ....H.......

我们可以看到就象前面所说的那样,stop()的地址(0x08048448)被储存在.dtors

中。0xffffffff是.dtors的头标记,0x00000000是.dtors的尾标记。

既然我们的目的是对程序本身进行攻击,因此从现在开始就让我们完全忘掉

.ctors,因为我们不能用它做任何有用的事。(溢出总是发生在main()开始后)

让我们试一个正常的程序,它没有使用这些函数属性标记。

[warning3@redhat-6 dtor]$ cat > bleh.c

#include

#include

static void bleh(void);

int

main(int argc, char *argv[])

{

static u_char buf[] = "bleh";

if (argc

14 .data 00000014080494dc080494dc000004dc2**2

CONTENTS, ALLOC, LOAD, DATA

15 .eh_frame 00000004080494f0080494f0000004f02**2

CONTENTS, ALLOC, LOAD, DATA

16 .ctors 00000008080494f4080494f4000004f42**2

CONTENTS, ALLOC, LOAD, DATA

17 .dtors 00000008080494fc080494fc000004fc2**2

CONTENTS, ALLOC, LOAD, DATA

我们看到即使没有任何函数被标记为析构属性,.dtors仍然会出现。现在我们

来看一下它的内容:

[warning3@redhat-6 dtor]$ objdump -s -j .dtorsbleh

bleh: file format elf32-i386

Contents of section .dtors:

80494fc ffffffff 00000000 ........

我们看到程序的.dtors中没有指定任何析构函数的地址。

可能我们将buf声明为静态的而且将其初始化看起来有些奇怪。我们这么做

只是为了将其储存在.data区,它非常靠近.dtors节。[ 译者注:参看前面

objdump -h bleh的结果,.data在.dtors更低的内存区 ]

这不是我们将数据写入.dtors的唯一方法,你可以使用任何方法来完成,例如

格式串攻击,通过返回libc来直接使用strcpy(),利用malloc块分配错误等等。

这里采用这种做法只是为了简化起见。

现在我们的目的是要执行bleh()函数中的代码,正常情况下这是不可能发生的。

但我们可以通过在.dtors中增加一个指向bleh()的函数入口来达到目的。我们必

须覆盖0x0000000(地址在0x080494fc)。缓冲区溢出攻击


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-27331-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...