【发布时间】:2013-05-31 19:48:27
【问题描述】:
我正在阅读一本名为“黑客:剥削的艺术”的书,我偶然发现了这一段:
使用execl(),使用现有环境,但如果使用execle(), 可以指定整个环境。如果环境数组只是 shellcode 作为第一个字符串(使用 NULL 指针终止列表), 只有环境变量是 shellcode。这使得它的地址很容易 计算。在 Linux 中,地址将为 0xbffffffa,减去 环境中的shellcode,减去执行的名字的长度 程序。由于这个地址是准确的,所以不需要 NOP 雪橇。
指定环境是什么意思?
什么对不同的环境进行分类?
为什么环境变量的地址是这样计算的(或者更具体地说,为什么基地址是 0xbffffffa)?
如果我使用 execl() 函数而不是 execle() 函数,我可以不使用 shellcode 环境变量吗?
【问题讨论】:
标签: c linux exec exploit shellcode