gpt4 book ai didi

c - linux如何修补这段代码

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:43:53 24 4
gpt4 key购买 nike

#include <WhatHere?>
#include <WhatHere?>
#include <WhatHere?>
int main(int argc, char **argv) {
char command[50] = "echo ";
strcat(command,argv[1]); // concatenate the input so that the final command is "echo <input>"
system(command); // call the system() function to print the input
return 0; // denote that the program has finished executing successfully
}

我们可以通过运行这段代码来获得远程访问吗?我知道这是可能的,但请帮我修补它。

最佳答案

假设您担心潜在的缓冲区溢出,您可以这样修复它:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main (int argc, char **argv) {
char *command;
if (argc != 2) {
fprintf (stderr, "Wrong number of arguments\n");
return 1;
}
if ((command = malloc (strlen (argv[1]) + 6)) == NULL) {
fprintf (stderr, "Could not allocate memory\n");
return 1;
}
strcpy (command, "echo ");
strcat(command,argv[1]);
system(command);
free (command);
return 0;
}

这为 "echo " (5)、argv[1](字符串长度)和空终止符 (1) 留出了足够的空间。

允许运行用户指定的内容仍然存在潜在危险,但至少您不会再遇到缓冲区溢出。

关于c - linux如何修补这段代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5419139/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com