我一直在阅读有关绕过 ASLR 的帖子。在 32 位系统上,这似乎是微不足道的,但我惊讶地发现它是多么微不足道。暴力破解 ASLR 地址只需几秒钟。原因似乎是根据我的测试,地址中只有 12 位实际发生了变化:
export BLAH=$"/bin/sh"
BLAH will be at 0xbff5a78b
BLAH will be at 0xbf87778b
BLAH will be at 0xbfe1e78b
BLAH will be at 0xbf9f778b
BLAH will be at 0xbffc378b
BLAH will be at 0xbffd978b
BLAH will be at 0xbfa7f78b
BLAH will be at 0xbf94878b
BLAH will be at 0xbfe4378b
BLAH will be at 0xbff7978b
BLAH will be at 0xbfe4078b
似乎在我的笔记本电脑上所有随机地址都是
BF XX X7 8B
其中 X 是随机十六进制。我对 CPU 低级工作的了解非常有限,那么为什么只有这些字节会改变呢?
说在 32 位机器上只有16^3 = 4096ASLR 地址是否正确?
在 64 位系统上更改了多少位?