#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <stdio.h>
int main(int argc, char **argv, char **envp)
{
gid_t gid;
uid_t uid;
gid = getegid();
uid = geteuid();
setresgid(gid, gid, gid);
setresuid(uid, uid, uid);
system("/usr/bin/env echo and now what?");
}
我了解它的方式,上面的代码允许任意代码(或程序)执行 - 是什么让这种脆弱,以及如何利用这一点?这个C代码有什么弱点?
你为什么认为这允许任意代码执行? –
好吧,说实话我是盲目的信仰。我是一名安全专业的学生,我正在考虑易受攻击的代码,我看到了这一点,它在书中说,它的确如此,但它并没有解释这个特殊的例子。 – quantumdisaster
也许你指的是系统调用?不是这方面的专家,但这是唯一让我感到奇怪的东西。没有缓冲区溢出或类似的东西。 –