大型网站怎么加载图片的,做网站asp和asp.net,wordpress order,网站程序源码下载像我们描述的执行权限等功能已经使执行任意代码变得越来越困难。这意味着攻击者使用其他方法#xff0c;比如面向返回编程#xff08;ROP#xff09;。ROP利用了许多现代系统中软件堆栈的规模。攻击者分析系统中的软件#xff0c;寻找小工具#xff08;gadgets#xff09…像我们描述的执行权限等功能已经使执行任意代码变得越来越困难。这意味着攻击者使用其他方法比如面向返回编程ROP。ROP利用了许多现代系统中软件堆栈的规模。攻击者分析系统中的软件寻找小工具gadgets。小工具是一段有用的代码片段通常以函数返回结束例如 这段代码提供了一个用于将两个寄存器相加的工具。通过扫描所有可用的库攻击者可以构建一个小工具库。这些小工具实际上是存在于可执行区域内的现有合法代码这意味着它们不受执行权限等保护机制的影响。攻击者将一系列小工具串联起来形成实质上是一个由现有代码片段构成的新程序。 ROP攻击是有效的因为它由现有合法代码组成因此不会受到执行权限或从可写内存执行的检查的限制。
对于攻击者来说找到小工具并创建生成新程序所需的序列是耗时的。然而这个过程可以自动化并且可以被重复使用来攻击多个系统。地址空间布局随机化ASLR可以帮助防止自动化和多次攻击的实施。 ASLR的原理是程序开始时在stack、mmap以及堆区处分配随机大小的空间但程序不使用这段空间。但它会导致程序每次执行时后续的栈位置发生变化。ASLR的目的是将程序的堆栈地址和动态链接库的加载地址进行一定的随机化。这样即使攻击者部署了shellcode并可以控制跳转由于shellcode所在地址未知依然很难执行shellcode。 我们正常的程序中一般都是在进入函数的时候将返回地址(LR寄存器)做了一个压栈的操作函数返回之前再将LR从栈中还原。 ROP的模型就是修改栈中LR的值使其按照攻击者预设的flow返回. 攻击者将一串gadget串在一起形成一个有效的由现有代码片段组成的新程序。