【发布时间】:2016-08-20 23:55:42
【问题描述】:
我想通过一个具体的例子来说明利用缓冲区溢出的威力有多大。
为了实现这个目标,我准备了这个简单的 C 程序,叫做“bo”:
#include <stdio.h>
#include <string.h>
void function(char* input) {
char buffer[128];
strcpy(buffer, input);
printf("Your input is: %s\n", buffer);
}
void main(int argc, char **argv) {
function(argv[1]);
}
我使用以下选项编译:-fno-stack-protector 和 execstack。
一切正常,我可以启动我的 shellcode 来打开一个新的 bash。
在我的系统(Ubuntu MATE 15.10 32bit)中,我有 2 个用户:“user”(组:用户)和“admin”(组:admin),都具有 sudo 权限。
我想要做的是让“用户”以“管理员”的权限执行“bo”,这样当缓冲区溢出并执行 shellcode 时,我有一个以“管理员”权限运行的 shell(在这个 shell 中,如果我运行命令“id”或“whoami”,我想表明现在我们是“admin”)。
我看到我需要将 SUID/SGID 权限更改为“bo”。我尝试了很多方法,但是当 shellcode 运行时,我总是有一个从“用户”启动的 shell。
【问题讨论】:
标签: bash privileges chmod chown suid