我正在尝试使用ROP漏洞-我正在尝试使用ROP进行mprotect系统调用(而不是libc调用),以使缓冲区可执行。我尝试遍历服务器进程并运行漏洞利用程序,只是看到导致如下错误:我可以看到该调用有效(strace输出和/ proc / pid / maps确认了这一点)。 0x08048000

我想我知道发生这种情况的原因。启用了ASLR,并且从0x08048000开始的页面不会更改地址。但是,与缓冲区相对应的页面会更改地址。
缓冲区地址可能会泄漏-因此,我尝试检查页面的开始位置与缓冲区地址之间的差异是否保持不变,而不是保持不变。 />

#1 楼

我不确定,但是您可能遇到以下问题:
通常页面地址是按页面大小四舍五入的。这取决于您使用的系统中的页面大小。因此,您可以通过对~(PAGE_SIZE-1)进行常量AND操作来计算此地址。

如果不起作用,请尝试两次调用mprotect:在不执行的情况下进行读取和写入,
更改内存,然后在调用具有执行位但没有写位的mprotect时。