C 使用修改后的ls执行另一个程序

C 使用修改后的ls执行另一个程序,c,linux,shell,terminal,ls,C,Linux,Shell,Terminal,Ls,我得到了一个修改的ls: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> int main(int argc, char **argv){ gid_t egid = getegid(); setregid(egid, egid); printf("This is a special NSA-modified 'ls

我得到了一个修改的
ls

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main(int argc, char **argv){
    gid_t egid = getegid();
    setregid(egid, egid);
    printf("This is a special NSA-modified 'ls' program. Due to security reasons it can only run 'ls' without user parameters.\n");
    system("ls -l");
    return 0;
}
#包括
#包括
#包括
#包括
int main(int argc,字符**argv){
gid_t egid=getegid();
setregid(egid,egid);
printf(“这是一个特殊的NSA修改的'ls'程序。由于安全原因,它只能在没有用户参数的情况下运行'ls'。\n”);
系统(“ls-l”);
返回0;
}
我需要运行修改后的
ls
来运行一个名为
get code
的程序,但我不知道如何欺骗此代码中的
系统
函数,使其不仅执行
ls-l
,而且执行
get code
。这是一门来自学校的课程,我可以在网上向我的老师提问,课程是如何更好地保护程序,使代码中不存在任何安全漏洞


有人能帮我吗?这不是重复的,我只是想知道如何欺骗
系统
,这样我就可以用这个
ls
code

执行它。你可以创建一个本地
ls
,比如

#!/bin/bash

/bin/ls -l
/courses/InetSec1/challenge6/get-code
然后将此脚本(您应该将其命名为
ls
,并运行
chmod a+x ls
向其添加执行权限)放在某个目录中,例如
~/bin/
,然后通过
导出路径=$HOME/bin:$path
将此目录添加到您的路径中

在此之后,如果您再次运行该程序,它将运行您的本地
ls
,因为
system()
将在子shell下运行您的命令,并且该shell将搜索在
$PATH
中运行所需的命令


你为什么要重复你的问题?我不明白,我知道其他问题和我的不一样。。请帮帮我,我才17岁,好吗?我试了很久这就是重点。。我不能做任何事,因为我没有特权。。。。这就是问题的关键所在course@nick_rangercat你说你什么都做不了是什么意思?哪一部分你不能做?我不能做任何事情我的特权就像一个普通用户。。我不能只在/bin目录中创建一个程序,这样我就可以执行该程序。。这是我感到非常困惑的部分at@nick_rangercat我没有说你需要在
/bin
中添加程序,我说的是
~/bin
,这是一个完全不同的目录
~/bin
是您的主目录下名为
bin
的目录。@nick\u rangercat那么您应该先学习如何使用Linux,特别是如何编辑其中的文本文件。互联网上有很多教程,试着用谷歌搜索一些并学习。