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,特别是如何编辑其中的文本文件。互联网上有很多教程,试着用谷歌搜索一些并学习。