【问题标题】:using a modified ls to execute another program [duplicate]使用修改后的 ls 执行另一个程序 [重复]
【发布时间】:2014-03-11 08:09:07
【问题描述】:

我得到了修改后的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;
}

我需要运行修改后的ls 来运行一个名为get-code 的程序,但我不知道如何在这段代码中欺骗system 函数,不仅可以执行ls -l,还可以执行@987654327 @。这是一门来自学校的课程,我可以在互联网上向我的老师提问,课程是如何更好地保护程序,以免代码中出现任何安全漏洞。

有人可以帮助我吗?这不是重复的

【问题讨论】:

  • 你为什么又重复你的问题?
  • 我不明白,我知道其他问题和我的不一样。请帮帮我,我只有 17 岁好吗?我尝试了很长时间

标签: c linux shell terminal ls


【解决方案1】:

你可以创建一个本地的ls,比如

#!/bin/bash

/bin/ls -l
/courses/InetSec1/challenge6/get-code

然后把这个脚本(你应该把它命名为ls并运行chmod a+x ls给它添加执行权限)放在某个目录下,例如~/bin/,并通过export PATH=$HOME/bin:$PATH将此目录添加到你的路径中。

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

正是Modify a program I'm not the owner of中给出的答案

【讨论】:

  • 这就是重点……我什么都做不了,因为我没有特权……这就是课程的重点
  • @nick_rangercat 你什么意思都做不了?哪一部分你不能做?
  • 我不能做任何事情我的权限就像普通用户一样..我不能只在 /bin 目录中创建一个程序,所以我可以执行该程序..这就是我得到的部分很困惑
  • @nick_rangercat 我没有说你需要在/bin添加程序,我说~/bin,那是一个完全不同的目录。 ~/bin 是您的主目录下名为 bin 的目录。
  • @nick_rangercat 那么你应该先学习如何使用Linux,具体如何在其中编辑一个文本文件。网上教程很多,自己google一些,学习一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-10
  • 1970-01-01
  • 2011-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多