将环境变量作为命令行参数传递时的内存分配

时间:2012-09-09 18:35:35

标签: unix memory-management process environment-variables address-space

我在linux中尝试简单的缓冲区溢出攻击。我有一个易受攻击的程序,它接受命令行参数。我有另一个程序设置一个环境变量,它有一些我想要执行的代码(通常是shellcode)。现在我试图用这个环境变量的地址溢出我的易受攻击程序的缓冲区。我有以下问题:

  1. 当我将环境变量作为命令行参数传递时,变量的内容是否被复制到我易受攻击的程序的argv中?

  2. 在进程的地址空间中,是否存储了环境变量(命令行参数)?它会在进程堆栈上还是在其他地方?

1 个答案:

答案 0 :(得分:2)

  1. 由实施决定。
  2. 你可能会做类似的事情:

    victim "$SHELLCODE"
    

    如果$SHELLCODE也是一个环境变量,程序将在环境中获得一个副本,前面有SHELLCODE=,因此可以通过getenv()检索,并在argv中找到一个副本{1}}参数列表。