.bss 、.data、.text三个段是elf文件在磁盘上本来就有的文件,进入到内存后仍然存在。PIE影响这三个部分。
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