【发布时间】:2011-11-29 00:46:07
【问题描述】:
#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?");
}
按照我的理解,上面的代码允许任意代码(或程序)执行——是什么导致了这个漏洞,以及如何利用这一点?
【问题讨论】:
-
你为什么认为这允许任意代码执行?
-
好吧,老实说,我是在盲目相信它。我是一名安全专业的学生,我正在查看易受攻击的代码,我看到了这个,它在书中说它确实如此,但是它没有解释这个特定的例子。
-
也许你指的是系统调用?不是这方面的专家,但这是唯一让我觉得奇怪的事情。没有缓冲区溢出或类似情况。
-
@quantumdisaster:这是哪本书?
标签: c linux security exploit secure-coding