【问题标题】:Memory allocation while passing environment variable as command line argument将环境变量作为命令行参数传递时的内存分配
【发布时间】:2012-09-09 18:35:34
【问题描述】:

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

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

  2. 环境变量(命令行参数)将存储在进程地址空间的什么位置?它会在进程堆栈上还是其他地方?

【问题讨论】:

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


    【解决方案1】:
    1. 是的。
    2. 这取决于实施。

    你大概在做类似的事情:

    victim "$SHELLCODE"
    

    如果$SHELLCODE 也是一个环境变量,程序将在环境中获取一份副本,前面是SHELLCODE=,以便可以通过getenv() 检索它,并在argv 参数列表中获取一份。

    【讨论】:

    猜你喜欢
    • 2021-01-03
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    相关资源
    最近更新 更多