我在linux中尝试简单的缓冲区溢出攻击。我有一个易受攻击的程序,它接受命令行参数。我有另一个程序设置一个环境变量,它有一些我想要执行的代码(通常是shellcode)。现在我试图用这个环境变量的地址溢出我的易受攻击程序的缓冲区。我有以下问题:
当我将环境变量作为命令行参数传递时,变量的内容是否被复制到我易受攻击的程序的argv中?
在进程的地址空间中,是否存储了环境变量(命令行参数)?它会在进程堆栈上还是在其他地方?
答案 0 :(得分:2)
你可能会做类似的事情:
victim "$SHELLCODE"
如果$SHELLCODE
也是一个环境变量,程序将在环境中获得一个副本,前面有SHELLCODE=
,因此可以通过getenv()
检索,并在argv
中找到一个副本{1}}参数列表。