Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C(Windows)中printf(0)的安全含义_C_Security - Fatal编程技术网

C(Windows)中printf(0)的安全含义

C(Windows)中printf(0)的安全含义,c,security,C,Security,我注意到在Windows平台上的C中printf(0)可以使任何程序崩溃,因为参数中没有提到格式说明符 通常我看到它会触发\uuuu invoke\u watson() 考虑到printf()的参数无法被攻击者控制,我想知道是否存在与此类场景相关的安全隐患。这里没有安全隐患 printf(0)正在取消对空指针的引用。虽然这可能会导致程序崩溃,但攻击者没有空间注入任何东西。这里没有安全隐患 printf(0)正在取消对空指针的引用。虽然这可能会导致程序崩溃,但攻击者没有空间注入任何东西。请解释为什

我注意到在Windows平台上的C中printf(0)可以使任何程序崩溃,因为参数中没有提到格式说明符

通常我看到它会触发\uuuu invoke\u watson()


考虑到printf()的参数无法被攻击者控制,我想知道是否存在与此类场景相关的安全隐患。

这里没有安全隐患


printf(0)
正在取消对空指针的引用。虽然这可能会导致程序崩溃,但攻击者没有空间注入任何东西。

这里没有安全隐患


printf(0)
正在取消对空指针的引用。虽然这可能会导致程序崩溃,但攻击者没有空间注入任何东西。

请解释为什么任何开发人员都会调用“printf(0);”?我发现
*(int*)NULL=0
可以使任何程序崩溃,您甚至不需要
printf
!或者更简单,所以可以
abort()<编码>printf(0);可以使任何程序崩溃,因为在参数
中没有提到格式说明符,您误读了它。如果没有格式,它甚至不会编译。有一种格式,正好是空指针。这确实是UB,但不是因为缺少格式。谢谢!现在我明白了。它崩溃是因为空的取消引用,而不是格式说明符。请解释为什么任何开发人员都会调用“printf(0);”?我发现
*(int*)NULL=0
可以使任何程序崩溃,您甚至不需要
printf
!或者更简单,所以可以
abort()<编码>printf(0);可以使任何程序崩溃,因为在参数
中没有提到格式说明符,您误读了它。如果没有格式,它甚至不会编译。有一种格式,正好是空指针。这确实是UB,但不是因为缺少格式。谢谢!现在我明白了。它崩溃的原因是空解引用,而不是格式说明符。崩溃通常会构成安全问题,因为它们可用于创建拒绝服务攻击。崩溃通常会构成安全问题,因为它们可用于创建拒绝服务攻击。