Exploitme4——ROP with ASLR
当程序开启了ASLR
后,程序可能通过需要想办法泄露一些模块的基地址,来构建有效的payload。
下面我们要进行的实验,采取的思路是:泄露系统模块的基址 + 利用对应模块中的gadget构建Ropchain + shellcode。
参考资料:
当程序开启了ASLR
后,程序可能通过需要想办法泄露一些模块的基地址,来构建有效的payload。
下面我们要进行的实验,采取的思路是:泄露系统模块的基址 + 利用对应模块中的gadget构建Ropchain + shellcode。
参考资料:
当程序开启GS
保护时,我们无法再通过栈溢出覆盖返回地址的方式,来控制执行流。但还有一些其他的方式,比如劫持SEH
。
参考链接:
众所周知,ASLR
会使得PE
文件的加载基址随机化,但有时候我们还是能够利用固定的地址,指向kernel32.dll ntdll.dll
等dll
文件中的特定指令,这是为什么呢?
参考资料:
当程序开启数据执行保护(DEP)后,我们无法在栈上执行shellcode
,但可以利用程序中自带的代码片段(gadget),使ret
指令和栈数据相配合,将 gadget
串成一串,也能起到shellcode
的效果,这就是返回导向编程ROP
。
参考链接: