在没有gdb的情况下获取libc(execve)中函数的地址

时间:2014-04-10 15:48:16

标签: c linux buffer-overflow libc

我试图基于利用缓冲区溢出漏洞(在x86-32 linux机器上)自动化返回libc攻击。 我需要一种方法在不使用gdb的情况下在libc中找到execve函数的地址:

(gdb)p execve
$ 1 = {} 0xf7ec1b30

禁用ASLR保护以允许此技术。

有没有办法让libc中的函数地址为execve?使用程序或任何其他可自动化的方式? (没有gdb,因为在bash脚本或C程序中不能自动化。)

欢迎任何建议。

2 个答案:

答案 0 :(得分:1)

这是一个技巧问题还是这样做不起作用:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int
main (int argc, char **argv)
{
  void *a = execv;
  printf ("execv is at %p\n", a);
  exit (0);
}

在这里工作。

答案 1 :(得分:0)

如果您正在尝试获取脚本的此信息,那么nm实用程序可能有帮助吗?

示例:nm {libraryPath} | grep execve