2
我正在使用bash。我已經關掉ASLR在Ubuntu 11.04使用環境變量地址的隨機化
#sysctl -w kernel.randomize_va_space=0
而且我出口使用
$ export MYSHELL=/bin/sh
我寫了一個C程序來獲取MYSHELL
的地址從shell變量:
void main(){
char* shell = getenv("MYSHELL");
if (shell)
printf("0x%x\n", (unsigned int)shell);
}
它吐出了0xbffffe82
。 當我將它用作ret-to-libc攻擊的一部分時,地址會發生變化(儘管偏移很小)。 這是爲什麼發生?
此外,當我更改二進制文件的文件名,並使用以前成功的地址,它將無法正常工作,並且已被重新定位到不同的地址。爲什麼?換句話說,二進制名稱和環境變量地址的關係是什麼?這是bash的保護功能嗎?如何關閉此功能?
注意:這不是作業。
完美。謝謝。 –