alb*_*ttx 10 ruby python memory environment-variables
是否可以打印我的环境变量内存地址?
随着gdb-peda我有一个内存地址看起来像0xbffffcd6有searchmem,我知道这是正确的方式.(0xbfff????)但是gdb使用其他一些环境变量移动了堆栈.
我想用我的python脚本来获取这个地址然后做我的技巧并包含我的shellcode.
我试过(使用Python):
print hex(id(os.environ["ENVVAR"]))
print memoryview(os.environ["ENVVAR"])
# output :
# 0xb7b205c0L
# <memory at 0xb7b4dd9c>
Run Code Online (Sandbox Code Playgroud)
使用Ruby:
puts (ENV['PATH'].object_id << 1).to_s(16)
# output :
# -4836c38c
Run Code Online (Sandbox Code Playgroud)
如果有人有想法,使用python或ruby.
cpython 内置函数 id() 为任何对象返回一个唯一的 id,这并不完全是它的内存地址,但尽可能接近它。
例如,我们有变量 x。id(x) 不返回变量 x 的内存地址,而是返回 x 指向的对象的内存地址。
“变量”和“内存对象”之间有严格的区别。在标准实现中,python 分配一组本地变量和一个堆栈供虚拟机操作。所有本地槽都是不相交的,因此如果您将本地槽 x 中的对象加载到堆栈上并修改该对象,则 x 槽的“位置”不会改变。
http://docs.python.org/library/functions.html#id