使用 argv[0] 作为 NULL 调用 C 程序

问题描述

以下内容来自一本关于安全 C 编码的书:

当分配的空间不足时,可能会出现漏洞来复制 程序输入,例如命令行参数。虽然 argv[0] 按照约定包含程序名称,攻击者可以控制 argv[0] 的内容导致以下程序中的漏洞 通过提供超过 128 个字节的字符串。此外,一个 攻击者可以在 argv[0] 设置为 NULL 的情况下调用这个程序:

int main(int argc,char *argv[]) {
   /* ... */
   char prog_name[128];
   strcpy(prog_name,argv[0]);
   /* ... */
}

我想问一下,如果argv[0]是程序名称,攻击者将如何调用NULL设置为argv[0]的程序?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)