保护机制方法步骤
shellcode
NXret2libcold 32libc地址覆盖返回地址,参数紧随其后
modern 32 控制ecx来指向libc地址存放的内存单元
modern 64 rop寻找execv("/bin/sh", 0 ,0) 片段
需要setuid(0)使用gets函数设置指定内存为0,通过寻找pop ret片段形成libc链,最后调用setuid和system等函数
mprotect或memcpy使栈重新可执行,然后加入shellcode传入0,通过gets覆盖指定内存为0,(教程上查看mprotect内部将参数放在了寄存器中,找pop 寄存器片段,然后inc/dec 寄存器片段,最后完成mprotect的调用)
遭遇可写和可执行不可同时出现,我们用mprotect(xx,xx,7)设置rwx权限就会失败
ASRLbruteforce32位比64位更容易破解,只有几位发生变化
通过write泄露libc起始地址,多次调用程序vuln_function,通过偏移量不随机化计算system等函数地址,然后调用
return2plt,plt中偏移不会发生变化,适用于存在<system@plt>提供plt入口地址的程序
import xxx
QianLong Sang
QianLong Sang
Second Year CS Phd

My research interests include operating system, computer architecture and computer security.