ASLR主要影响stack、share library、heap几个部分。
当ASLR=0时,栈和堆的地址都不会改变。
当ASLR=1时,栈的地址变了,堆的地址不变。
当ASLR=2时,栈和堆的地址都变了。
生成shellcode
32位:
print(shellcraft.sh()) 生成的是shell的汇编代码
print(asm(shellcraft.sh())) 生成的是shell的机械码
64位:
context.arch=“amd64”
print(shellcraft.sh()) 生成的是shell的汇编代码
print(asm(shellcraft.sh())) 生成的是shell的机械码
gcc -fno-stack-protector -z execstack -no-pie -g -o ret2 ret2.c