在此处完成RPI 的现代二进制开发课程。我在利用 ASLR 的示例时遇到问题,该示例应该使用内存泄漏来获取有关堆栈的信息,然后计算系统调用的偏移量。这是代码:
#include <stdio.h>
#include <string.h>
/* gcc -pie -fPIE -fno-stack-protector -o aslr_leak2 ./aslr_leak2.c */
int main(int argc, char * argv[])
{
char leaky[16];
if(argc < 2)
{
printf("Please provide two arguments.\n");
return 1;
}
memcpy(leaky, argv[1], 16);
printf("Leaky buffer: %s\n", leaky);
printf("another round? : ");
fgets(leaky, 64, stdin);
return 0;
}
看起来不像是利用格式字符串来获取内存泄漏,所以我不确定它应该如何工作。如果我理解正确,我应该从第一次打印中获得一些信息,这有助于我覆盖返回指针以从中创建 ROP 小工具。是的,如果我愿意,我可以在 GDB 中运行它,但我希望不能那样做。