缓冲区溢出使用scanf进行练习?

时间:2016-01-25 13:45:01

标签: assembly buffer overflow scanf

我正在解决我们大学的旧考试,需要帮助解决以下问题:

在32位Linux系统上。我们有这个程序集,其中scanf()被调用,我们想要实现缓冲区溢出。

现在在解决方案中意味着,如果我们提供12byte / char输入就足够了,以便覆盖返回地址。 但是%ebx寄存器存储(我认为..)缓冲区的地址。 我的问题是,%ebx = %ebp-8意味着我们需要16个字节来覆盖返回地址(因为8字节缓冲区+ 4字节旧ebp + 4字节返回地址)。

在编写练习的描述中,缓冲区只有4个字节长。

以下是练习:

    pushl %ebp
    movl  %esp,%ebp
    subl  $0x10,%esp
    pushl %esi
    pushl %ebx
    xorl  %esi,%esi
    leal  0xfffffff8(%ebp),%ebx
    addl  $0xfffffff8,%esp
    pushl %ebx
    pushl $0x8048680
    call  8048434 <_init+0x74> # call scanf

0 个答案:

没有答案